一.include的引用

需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合,将安装apache,php,mysql集合在一个sls中

[root@7mini-node1 prod]# pwd
/srv/salt/prod
[root@7mini-node1 prod]# vim lamp.sls
include:
- apache.init
- php.init
- mysql.init
[root@7mini-node1 prod]# vim ../base/top.sls
prod:
'7mini-node1':
- lamp
[root@7mini-node1 prod]# salt "7mini-node1" state.highstate #执行无报错为正确

二.extend的使用

需求场景:软件包安装的时候,需求假设:只在node1上按装php-mbstring包,其他的机器不安装。单独在组合的sls中添加,不需要可以删掉

[root@7mini-node1 prod]# pwd
/srv/salt/prod
[root@linux-node1 prod]# vim lamp.sls
include:
- apache.init
- php.init
- mysql.init extend:
php-install:
pkg.installed:
- name: php-mbstring
[root@linux-node1 prod]# salt "7mini-node1" state.highstate

三、require和require_in的使用

require:我依赖谁
require_in:我被谁依赖
需求场景:如果安装不成功或者配置httpd不成功,不启动httpd

(1)require使用
[root@7mini-node1 apache]# pwd
/srv/salt/prod/apache
[root@7mini-node1 apache]# systemctl stop httpd
[root@7mini-node1 apache]# vim init_require.sls
apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd1.conf----->将此处的文件改错,模拟配置错误
- user: root
- group: root
- mode: 644 apache-service:
service.running:
- name: httpd
- enable: True
- require:---------------------------->使用require,表示依赖
- pkg: apache-install--------------->依赖的状态模块为pkg模块,id为apache-install
- file: apache-config--------------->依赖的状态模块为file模块,id为apache-config
[root@7mini-node1 apache]# salt "7nini-noed1" state.highstate #执行模块提示会有报错,此时httpd不会正常启动

 

(2)require_in使用               #与require是相同的只是表达方式的不同
[root@7mini-node1 apache]# vim init_require_in.sls
apache-install:
pkg.installed:
- name: httpd
- require_in:------------------>被依赖
- service: apache-service---->被依赖的模块是service,id为apache-service apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644
- require_in:
- service: apache-service apache-service:
service.running:
- name: httpd
- enable: True 解释说明:require和require_in都能实现依赖的功能,主动和被动的关系不同

  

四、watch和watch_in的使用

需求场景:监控配置文件变动,重启服务或重载服务

设置重启

[root@7mini-node1 apache]# pwd
/srv/salt/prod/apache
[root@7mini-node1 apache]# vim init_watch.sls
apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644 apache-service:
service.running:
- name: httpd
- enable: True
- watch:---------------------->使用watch
- file: apache-config------->监控的模块为file,id为apache-config
[root@7mini-node1 apache]# vim files/httpd.conf #随意修改配置文件
[root@7mini-node1 apache]# salt "7mini-node1" state.highstate

 设置重载

[root@7mini-node1 apache]# vim init_watch.sls
apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644 apache-service:
service.running:
- name: httpd
- enable: True
- reload: True----------------------------------->增加参数重载
- watch:
- file: apache-config [root@7mini-node1 apache]# salt -S "192.168.56.11" state.highstate

五、unless:状态间的条件判断

需求场景:给apache的admin目录进行加密登陆查看    #如果某文件存在将不执行

(1)修改配置文件,添加认证功能
[root@7mini-node1 apache]# vim files/httpd.conf
<Directory "/var/www/html/admin">
AllowOverride All
Order allow,deny
Allow from all
AuthType Basic
AuthName "haha"
AuthUserFile /etc/httpd/conf/htpasswd_file
Require user admin
</Directory> (2)修改状态文件init.sls
[root@7mini-node1 apache]# vim init.sls
apache-install:
pkg.installed:
- name: httpd apache-config:
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- user: root
- group: root
- mode: 644 apache-auth:
pkg.installed:
- name: httpd-tools
cmd.run:------>使用cmd模块的run方法
- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin---->生成密码文件
- unless: test -f /etc/httpd/conf/htpasswd_file---->unless判断条件,test -f判断为假则执行。即htpasswd文件如果不存在就执行生成密码 apache-service:
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
- file: apache-config [root@7mini-node1 apache]# salt "7mini-node1" state.highstate

 浏览器访问10.0.0.11/admin/index.html会出现密码验证 

  

 

 

  

  

SaltStack配置管理--状态间的关系(六)的更多相关文章

  1. SaltStack配置管理-状态间关系

    上一篇:SaltStack配置管理-LAMP状态设计 include包含 上篇安装LAMP环境是一个个环境安装,可以通过include模块全部安装 lamp.sls include: - apache ...

  2. saltStack 状态模块(状态间的关系)

    unless onlyif:状态间的条件判断,主要用于cmd状态模块 常用方法:    onlyif:检查的命令,仅当'onlyif'  选项指向的命令返回true时才执行name 定义的命 unle ...

  3. Saltstack_使用指南11_配置管理-状态之间依赖关系

    1. 说明 下文的案例是根据上一篇文章进行的修改.因此请优先读取上一篇文章内容<Saltstack_10_配置管理-状态模块> 并且目录进行了变化,从 /srv/salt/lamp 变为了 ...

  4. SaltStack中状态间关系unless、onlyif、require、require_in、watch、watch_in

    1.unless 检查的命令,仅当unless选项指向的命令返回值为false时才执行name定义的命令 cmd.run: {% "] %} - name: 'nohup sh /alida ...

  5. SaltStack配置管理-LAMP状态设计

    上一篇:SaltStack之Salt-ssh 配置文件模板 apache: pkg.installed: - name: httpd service.running: - name: httpd /e ...

  6. SaltStack配置管理-jinja模板

    上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://doc ...

  7. 架构师成长之路5.5-Saltstack配置管理(状态间关系)

    点击架构师成长之路 架构师成长之路5.5-Saltstack配置管理(状态间关系) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC ...

  8. SaltStack配置管理之状态模块和jinja2(五)

    官方文档 https://docs.saltstack.com/en/latest/topics/states/index.html 配置管理之SLS Salt  State  SLS描述文件(YAM ...

  9. Linux权限与命令间的关系

    极重要!权限与命令间的关系: 我们知道权限对於使用者帐号来说是非常重要的,因为他可以限制使用者能不能读取/创建/删除/修改文件或目录! 在这一章我们介绍了很多文件系统的管理命令,第六章则介绍了很多文件 ...

随机推荐

  1. LINUX下时间类API

    (1)常用的时间相关的API和C库函数有9个:time/ctime/localtime/gmtime/mktime/asctime/strftime/gettimeofday/settimeofday ...

  2. [吴恩达机器学习笔记]12支持向量机5SVM参数细节

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...

  3. MSBuild问题积累

    我想要当属性ConfigurationType定义为StaticLibrary时,将其重新定义为StaticLibrary,按照以下来做,实现不了. <ConfigurationType> ...

  4. Maven项目Eclipse启动时报错: java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener

    Eclipse中启动Maven项目时报如下错误: 严重: Error configuring application listener of class org.springframework.web ...

  5. Distributed Systems 分布式系统

    先来扯淡,几天是14年12月31日了,茫茫然,2014就剩最后一天了.这两天国大都放假,我给自己安排了四篇博客欠账,这就是其中的第一篇,简单介绍一些分布式系统的一些概念和设计思想吧.后面三篇分别是Ne ...

  6. [linux]linux下安装mysql

    1.安装g++$sudo apt-get install build-essential注:此命令会同时安装gcc和make2.安装cmake$sudo apt-get install cmake3. ...

  7. LintCode 532: Reverse Pairs

    LintCode 35: Reverse Linked List 题目描述 翻转一个链表. 样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1 ...

  8. NYOJ 231 Apple Tree (树状数组)

    题目链接 描述 There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in t ...

  9. 使用npm安装包失败的解决办法(使用npm国内镜像介绍)

    镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://regist ...

  10. 解决Chrome下表单自动填充后背景色为黄色

    Chrome浏览器在表单自动填充后会显示黄色背景,这是Chrome的私有属性导致,对于有洁癖的人来讲,是不喜欢的,我们可以手动去掉. 代码如下: input:-webkit-autofill { -w ...