saltstack3-状态管理-yum安装软件

状态管理-salt安装apache

编辑主配置文件,定义几个环境。

vim /etc/salt/master file_roots: base: - /srv/salt/base dev: - /srv/salt/dev test: - /srv/salt/test prod: - /srv/salt/prod  

然后创建相应目录,重启salt

mkdir -p /srv/salt/{base,dev,test,prod} systemctl restart salt-master.service

 创建文件

cd /srv/salt/base/ vim apache.sls 说明,第一部分ID:
apache-install
第1行是声明,第2行pkg是状态模块,installed是方法。 第3行,name是个特殊参数,说明这台机器应该有一个httpd,如果没有安装,如果有什么也不做。 第二部分ID:
apache-service,是服务状态管理。
同理,需要有一个httpd的服务要启动,如果启动什么也不做,没启动就启动,默认为True
apache-install:
  pkg.installed:
    - name: httpd

apache-service:
  service.running:
    - name: httpd
    - enable: True
在node2上执行,下边的命令,state是执行模块,sls是方法。alache是传的参数。会在base下找apache.sls文件。必须省略.sls
salt '*node2*' state.sls apache

执行后看返回结果:上边是安装,下边是启动。看change那行,改变了几个地方,可以判断执行了几个ID。

linux-node2.example.com:
----------
          ID: apache-install
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: The following packages were installed/updated: httpd
     Started: 09:46:59.759738
    Duration: 9266.372 ms
     Changes:   
              ----------
              apr:
                  ----------
                  new:
                      1.4.8-7.el7
                  old:
              apr-util:
                  ----------
                  new:
                      1.5.2-6.el7
                  old:
              httpd:
                  ----------
                  new:
                      2.4.6-97.el7.centos
                  old:
              httpd-tools:
                  ----------
                  new:
                      2.4.6-97.el7.centos
                  old:
              mailcap:
                  ----------
                  new:
                      2.1.41-2.el7
                  old:
----------
          ID: apache-service
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service httpd has been enabled, and is running
     Started: 09:47:09.032003
    Duration: 189.507 ms
     Changes:   
              ----------
              httpd:
                  True

Summary for linux-node2.example.com
------------
Succeeded: 2 (changed=2)
Failed:    0
------------
Total states run:     2
Total run time:   9.456 s

 这时可以到node2上去验证了,如果手动在node2上停止httpd,再在master上执行 salt 'linux-node2*' state.sls apache可以看到只改变了一个,会把服务启动起来。

多层配置目录:

可以在base下创建多个目录,然后把相应的状态文件到到相应的目录里。

[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# mkdir web
[root@linux-node1 base]# mv apache.sls web/
[root@linux-node1 base]# salt "linux-node2*" state.sls web.apache

 

编排top.sls:

master文件里默认文件就是base下的top.sls,不需要修改,就直接用这个文件。

 

vim /srv/salt/base/top.sls:

base:
  'linux-node2.example.com':
    - web.apache
  'linux-node3.example.com':
    - web.apache

 

执行:

salt '*' state.highstate

 

 

 

上一篇:APP设计规范


下一篇:salt pillar 常用设置