场景:公司有50台服务器,需要安装salt-minion客户端,并完成与salt-master的认证,接受salt-master的管理。本片文章只用了2台服务器做演示,大家可以在roster文件中定义所有50台机器的信息。
规划:
192.168.3.1 node1.xkops.com --角色:salt-master|minion1
192.168.3.2 node2.xkops.com --角色:salt-minion2
1.在node1上安装salt-master和salt-ssh,启动salt-master并设置开机启动。
[root@node1 ~]# yum -y install salt-master salt-ssh
[root@node1 ~]# service salt-master start
[root@node1 ~]# chkconfig salt-master on
2.在node1上编辑salt-ssh的roster文件。
[root@node1 ~]# cat /etc/salt/roster node1.xkops.com: host: 192.168.3.1 user: root passwd: xiaoke node2.xkops.com: host: 192.168.3.2 user: root passwd: xiaoke
3.在node1上测试salt-ssh连接roster文件中定义的客户端。
[root@node1 ~]# salt-ssh --key-deploy -i '*' test.ping
node2.xkops.com:
True
node1.xkops.com:
True
*注释:此时会将node1服务器的key写入所有客户端。故可以将roster文件中的passwd删除,避免密码泄漏。
4.在node1上编写sate.sls文件批量安装salt-minion,目录结构如下:
[root@node1 salt]# pwd /srv/salt [root@node1 salt]# tree . ├── files │ └── minion ├── salt-minion.sls └── top.sls 1 directory, 3 files
5.state文件的详细内容如下:
[root@node1 salt]# cat top.sls base: '*': - salt-minion [root@node1 salt]# cat salt-minion.sls salt-minion-install: pkg.installed: - name: salt-minion file.managed: - name: /etc/salt/minion - source: salt://files/minion - user: root - group: root - mode: 644 - template: jinja - defaults: HOST: {{ grains['id'] }} - require: - pkg: salt-minion-install service.running: - name: salt-minion - enable: true - reload: true - watch: - file: salt-minion-install [root@node1 salt]# egrep ^id files/minion id: {{ HOST }}
6.执行编写的状态模块
[root@node1 salt]# salt-ssh '*' state.sls salt-minion
7.执行成功后,检查客户端salt-minion状态。
node1:
[root@node1 salt]# chkconfig --list salt-master salt-master 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@node1 salt]# service salt-minion status salt-minion (pid 33114) 正在运行... [root@node1 salt]# egrep '^id|^master' /etc/salt/minion master: node1.xkops.com id: node1.xkops.com
node2检查同上。
8.在master端查看。
[root@node1 salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
node1.xkops.com
node2.xkops.com
9.接受所有的客户端认证
[root@node1 salt]# salt-key -y -A
*注释:当然也可以不使用状态文件,使用salt-ssh直接执行shell命令安装salt-minion也可以。