那如果要批量修改被管机器的某个配置文件怎么做?以下给出一个最简单案例。
先在主管机器master上查看/etc/salt/master配置文件
看到有以下几行配置文件
# file_roots:
# base:
# - /srv/salt/
# dev:
# - /srv/salt/dev/services
# - /srv/salt/dev/states
# prod:
# - /srv/salt/prod/services
# - /srv/salt/prod/states
配置说明:默认以上的文件目录,就是state模块应用目录,你可将其配置项的注释 删掉,额外配置一些其它你喜欢目录树结构,然后重启master的服务,让其配置生效。
这里为了测验,我没有改master配置,在base目录下直接测试
首先创建文件夹
mkdir /srv/salt
接下来在这目录中创建一个state模块可解析的sls文件
vi /srv/salt/one.sls
#这个/tmp/foo.conf其实是一个ID,但它直接默许你要管理的minion机器上的文件位置
/tmp/foo.conf:
#使用state中的file.managed模块来管理,具体配置参考可以通过salt 'minion' sys.state_doc file.managed这条命令来查阅
file.managed:
#定认本端master的源文件key
- source:
#这里的key中的VALUE对应的是salt://foo.conf,指的是salt中base目录(/srv/salt/) 下的foo.conf
- salt://foo.conf
#将目标minion的文件控制其文件权限
- user: root
- user: root
- mode: 644
#备份minion的源文件
- backup: minion
接下来我们创建master要下发的配置文件示例
# echo 'saltstack Test' > /srv/salt/foo.conf
接下来在master通过state命令把配置批量推下去
salt -E '10.40.41.154.ubuntu1404.stg|10.40.41.154.ubuntu1404.stg' state.sls one
10.40.41.154.ubuntu1404.stg:
----------
ID: /tmp/foo.conf
Function: file.managed
Result: True
Comment: File /tmp/foo.conf is in the correct state
Started: 11:38:24.910375
Duration: 31.449 ms
Changes:
Summary for 10.40.41.154.ubuntu1404.stg
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 31.449 ms
10.40.41.155.centos7.stg:
----------
ID: /tmp/foo.conf
Function: file.managed
Result: True
Comment: File /tmp/foo.conf is in the correct state
Started: 11:38:24.917948
Duration: 41.525 ms
Changes:
Summary for 10.40.41.155.centos7.stg
------------
Succeeded: 1
Failed: 0
------------
Total states run: 1
Total run time: 41.525 ms
我们当然可以从minion单台机器上向master获取
为验证成功性,我们修改一下刚才master上的foo.conf
echo 'saltstack Test-2' > /srv/salt/foo.conf
在minion端发生命令
# salt-call state.sls one
local:
----------
ID: /tmp/foo.conf
Function: file.managed
Result: True
Comment: File /tmp/foo.conf updated
Started: 11:40:30.638998
Duration: 49.449 ms
Changes: x
----------
diff:
---
+++
@@ -1 +1 @@
-saltstack Test
+saltstack Test-2
Summary for local
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 49.449 ms
比较2台minion配置文件的差异
[root@localhost salt]# cat /tmp/foo.conf
saltstack Test-2
root@ubuntu:/srv/salt# cat /tmp/foo.conf
saltstack Test
这是最简单的配置管理
我们可通过这条命令实时追踪它state底层执行的过程:salt-run state.event pretty=True 需要一边开这个窗口monitor,另一窗口执行命令