Saltstack学习笔记——states篇(下)

Call multiple states(调用多个states)

你可以在一个声明的ID下面定义多个state语句,例如,我们可以快速的修改webserver.sls,并且如果apache没有运行将其启动。

httpd:
  pkg:                  #state类型声明
    - installed
  service:              #state类型声明
    - running
    - require:
      - pkg: httpd

在运行state.highstate之前,尝试停止apache,并且再次观察其输出内容。

Require other states(依赖其他state)

现在我们已经安装了apache,并且处于工作状态,让我们添加一个HTML文件来定制我们的网站。将下面的内容添加进你的webserver/init.sls文件中:

httpd:
  pkg:
    - installed
  service:
    - running
    - require:
      - pkg: httpd
 
/var/www/html/index.html:                   # 声明一个ID
  file:                                     # 声明state
    - managed                               # state中的函数名
    - source: salt://webserver/index.html   # 函数的参数
    - require:                              # 声明requisite
      - pkg: httpd                          # requisite的引用

第9行声明一个新的ID,在这个例子中它是我们自定义的HTML文件要安装的位置(Note:在不同的操作系统或发行版上apache服务的默认位置可能不同,/srv/www也可能是个好位置。)
第10行声明使用的state。
第11行声明使用第十行中的state的函数名。这个managed函数将从master上下载文件,并且按照指定的位置进行安装。
第12行是函数的参数,在本例中利用managed函数中的source参数,指定需要从master上下载的文件的路径和名称
第13行是require的声明
第14行是require所要引用的state和ID,在这个例子它值的例子开头处的那个ID,这个声明告诉salt在不安装apache之前不要安装HTML文件

接下来,创建index.html文件,并且保存在webserver目录下:


    Salt rocks
    
        

This file brought to you by Salt

最后,在调用一次state.highstate,minion将获取和执行highstate以及从master的文件服务器上获取我们的HTML文件

salt '*' state.highstate

现在验证apache中你自定义的HTML吧!

http://192.168.181.17

require VS watch

现在有两个依赖的声明,"require和watch",不是所有的state都支持"watch"。service state不支持"watch"并且不支持通过观察一个条件进行重新启动一个服务

例如,如果你使用salt配置安装apache的虚拟主机,当配置文件发送改变时要重启apache,你可以修改之前的例子:

/etc/httpd/extra/httpd-vhosts.conf:
  file:
    - managed
    - source: salt://webserver/httpd-vhosts.conf
 
apache:
  pkg:
    - installed
  service:
    - running
    - watch:
      - file: /etc/httpd/extra/httpd-vhosts.conf
    - require:
      - pkg: apache

你可能感兴趣的:(Saltstack学习笔记——states篇(下))