SaltStack配置管理--状态间的关系(六)

一.include的引用

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

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

二.extend的使用

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

[[email protected] prod]# pwd
/srv/salt/prod
[[email protected] prod]# vim lamp.sls
include:
  - apache.init
  - php.init
  - mysql.init

extend:
  php-install:
    pkg.installed:
      - name: php-mbstring
[[email protected] prod]# salt  "7mini-node1" state.highstate

三、require和require_in的使用

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

(1)require使用
[[email protected] apache]# pwd
/srv/salt/prod/apache
[[email protected] apache]# systemctl stop httpd
[[email protected] 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
[[email protected] apache]# salt   "7nini-noed1" state.highstate   #执行模块提示会有报错,此时httpd不会正常启动

 

(2)require_in使用               #与require是相同的只是表达方式的不同
[[email protected] 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的使用

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

设置重启

[[email protected] apache]# pwd
/srv/salt/prod/apache
[[email protected] 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
[[email protected] apache]# vim files/httpd.conf     #随意修改配置文件
[[email protected] apache]# salt  "7mini-node1" state.highstate

 设置重载

[[email protected] 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

[[email protected] apache]# salt -S "192.168.56.11" state.highstate

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

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

(1)修改配置文件,添加认证功能
[[email protected] 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
[[email protected] 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

[[email protected] apache]# salt  "7mini-node1" state.highstate

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

  

 

 

  

  

原文地址:https://www.cnblogs.com/jimmy-xuli/p/9128883.html

时间: 2024-10-09 03:18:56

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

SaltStack配置管理--状态间的关系

SaltStack配置管理--状态间的关系 1.include的引用 需求场景:用于含有多个SLS的状态,使用include可以进行多个状态的组合 [[email protected] prod]# pwd /srv/salt/prod [[email protected] prod]# vim lamp.sls include: - apache.init - php.init - mysql.init [[email protected] prod]# vim ../base/top.sls

SaltStack 配置管理-状态间关系

require依赖 lamp-pkg-install: pkg.installed: - names: - php - php-cli - php-common - mysql - php-mysql - php-pdo apache-service: pkg.installed: - name: httpd file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://files/httpd.conf - user: roo

SaltStack实战之配置管理-状态间关系

SaltStack实战之配置管理-状态间关系 学习 SaltStack SaltStack实战之配置管理-状态间关系 1. 状态相关模块 1.1 pkg 1.2 file 1.3 service 1.4 requisites 2. 实际应用 1. 状态相关模块 1.1 pkg 状态模块:pkg 功能:管理软件包状态 常用方法: pkg.installed # 确保软件包已安装,如果没有安装则安装 pkg.latest # 确保软件包是最新版本,如果不是,则进行升级 pkg.remove # 确保

SaltStack配置管理-jinja模板

上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://docs.jinkan.org/docs/jinja2/ 两种分隔符: {% ... %} 和 {{ ... }} .前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上. 如何知道salt配置文件是一个模板 需要在sls配置文件里面定义 apache.init.sls 修改配置h

Linux权限与命令间的关系

极重要!权限与命令间的关系: 我们知道权限对於使用者帐号来说是非常重要的,因为他可以限制使用者能不能读取/创建/删除/修改文件或目录! 在这一章我们介绍了很多文件系统的管理命令,第六章则介绍了很多文件权限的意义.在这个小节当中, 我们就将这两者结合起来,说明一下什么命令在什么样的权限下才能够运行吧!^_^ 一.让使用者能进入某目录成为『可工作目录』的基本权限为何: 可使用的命令:例如 cd 等变换工作目录的命令: 目录所需权限:使用者对这个目录至少需要具有 x 的权限 额外需求:如果使用者想要在

设计模式间的关系

从七月份开始一直到九月底才看完设计模式,在这个过程中我不敢说我已经掌握了那本书里面的内容,或者说1/5,没能力说也没有资格说.但是结果不重要,重要的是这个过程我的收获!主要包括如下几个方面: 1.认识了这么多设计模式.刚刚接触java没多久就在学长那里听过设计模式的大名,但是由于能力有限,一直不敢触碰.而今有幸将其都认识了. 2.开始有设计的理论了.在接触设计模式之前没有怎么想过设计方面东东,看到问题就立马动手解决,没有想到怎么样来设计更好,如何来是这块更加优化.漂亮. 3.开始考虑系统的可扩展

机电传动控制与其他课程间的关系

机电传动控制与其他课程间的关系 1.机电传动课程与液压与气压传动.机械原理课程联系较密切,其中两者在势变量.流变量上是一致的,而许多元器件也是相似的,如液压课程中的液压泵与发电机,液压缸与电动机,液压阀与继电器接触器等元件的主要参数与计算公式也是相似的 广义变量 机械平动 机械转动 液压变量 势变量e 力F 转矩τ 压力P 流变量f 速度v 角速度ω 流量Q 广义动量p 动量P 角动量P 压力流量P 广义位移q 位移X 角度θ 体积V 功率P F(v)V(t) τ(t)ω(t) P(t)Q(T)

指针与二维数组间的关系

1.四种表示a[i][j]的形式是等价的: a[i][j]==*(a[i]+j)==*(*(a+i)+j)==(*(a+i))[j] 2.通过行指针p引用二维数组a的元素a[i][j]的方法可用以下4种等价形式: p[i][j]==*(p[i]+j)==*(*(p+i)+j)==(*(p+i))[j] 3.对指向二维数组的行指针p进行初始化的方法: p=a 或p=&a[0] 4.对指向二维数组的列指针进行初始化的方法(以下三种方法等价): p=a[0] 或 p=*a 或 p=&a[0][0

过滤器与拦截器之间的关系与区别

Java过滤器与SpringMVC拦截器之间的关系与区别http://blog.csdn.net/chenleixing/article/details/44573495 今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他