Salt-ssh批量自动安装被控端minion Salt-ssh是Saltstack的另外一种管理方式,无需安装minion端,可以运用salt的一切功能,管理和使用方法基本和salt一样。但是,salt-ssh并没有继承原来的ZeroMQ通讯架构。所以,她的执行速度比较慢。作为salt的补充在初次批量安装minion或某些不能安装minion的特殊场景下还是非常好用的。 上篇文章《集中化管理平台Saltstack》,我们介绍了saltstack的安装配置。这里我们来介绍下怎么批量安装被控端。saltstack-master已经配置好了,我们在这里还是采用原来的节点。下面,自动安装mysql节点为被控端。 一,环境配置说明 1.IP地址分配Hostname IP地址 节点 服务 saltstack01 10.62.83.211 master salt-ssh mysql01 10.62.83.201 mysql minion 2.软件版本软件 版本号 OS CentOS release 6.7 (Final) Python python2.6.6 salt 2015.8.10(Beryllium) 二,安装配置salt-ssh1.yum源配置 我们在这里还是采用上篇文章的yum文件 2.安装salt-ssh Saltstack01节点继续安装salt-ssh 1
| #yum -y installsalt-ssh
|
3.配置roster 所有需要安装被控端的主机信息,都在这里配置。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| # vim /etc/salt/roster
# Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred # Remoteexecutions will be executed as user fred
# passwd: foobarbaz # The passwordto use for login, if omitted, keys are used
# sudo: True # Whether tosudo to root, not enabled by default
#web2:
# host: 192.168.42.2
10.62.83.201: ##批量部署多客户端,在此配置文件中添加类似客户端的选项即可
host:10.62.83.201
user:root
passwd:Emsee123!
port:22
timeout: 10
|
当客户端数量较多时,手工配置/etc/salt/roster比较繁琐,这里写一个简单脚本供参考: 1
2
3
4
5
6
7
8
9
10
11
| # vim ip.sh
#!/bin/bash
for i in `cat /root/hostip`
do
echo"$i:">> /etc/salt/roster ##$i表示取文件的每行内容
echo" host: $i" >> /etc/salt/roster
echo" user: USERNAME" >>/etc/salt/roster
echo" passwd: PASSWORD" >>/etc/salt/roster
echo" sudo: True" >>/etc/salt/roster
echo" timeout: 10" >>/etc/salt/roster
done
|
其中/root/hostip为客户端IP文件,例如: 1
2
3
| 10.10.10.30
10.10.10.31
10.10.10.32
|
三,配置state.sls文件结构 *.sls文件对被控主机进行状态管理
1.创建目录1
2
3
| # mkdir /srv/salt/minions
# mkdir /srv/salt/minions/conf
# mkdir /srv/salt/minions/yum.repos.d
|
2.编写.sls文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| # vim install.sls
#salt_minion_install
minion_yum:
file.recurse:
- name: /etc/yum.repos.d
- source: salt://minions/yum.repos.d ##提前准备的yum文件路径
- user: root
- group: root
- file_mode: 644
- dir_mode: 755
- include_empty: True
minion_install:
pkg.installed:
- pkgs:
- salt-minion
- require:
- file: minion_yum
- unless: rpm -qa | grep salt-minion
minion_conf:
file.managed:
- name: /etc/salt/minion
- source: salt://minions/conf/minion ##minion端需要配置的minion主配置文件
-user: root
- group: root
- mode: 640
- template: jinja
- defaults:
minion_id: {{ grains['fqdn_ip4'][0]}} ##这里grains是收集minion端/etc/hosts文件IP和主机名的
- require:
- pkg: minion_install
minion_service:
service.running:
- name: salt-minion
- enable: True
- require:
- file: minion_conf
|
3.编写minion主文件
1
2
| master: 10.62.83.211
id: mysql01 #这里需要在/etc/hosts中配置对应的域名解析
|
注意:
最终的目录结构如下图:
四,部署salt-minionSalt-ssh端执行如下命令:
1
| # salt-ssh-i '*' state.sls minions.install ##’*’表示所有,也可有替换为仅仅需要安装minion的主机名或IP地址
|
五,结果验证1
| #salt-ssh -ir '*' 'ps aux | grep salt' | grep salt | grep -v grep| wc -l ##查看安装minion端的salt-minion进程是否运行,一个客户端运行一个salt-minion服务。
|
|