- Salt 安装配置;
在linux默认情况下,Salt会安装在/etc/salt/目录下,根据配置角色会有/etc/salt/master 或/etc/salt/minion配置目录
一般会将salt-mast 安装在linux发行版OpenSUSE,Arch,Redhat等,桌面或终端设备系统安装salt-minion; - 在Windows下安装 salt-minion, 安装过程会自动添加$PATH,在CMD或powershell下执行:
Salt-Minion /S /master=yoursaltmaster /minion-name=yourminionname
如果没有安装,可以在下载目录直接执行:Salt-Minion-2017.7.0-Py2-AMD64-Setup.exe /S /master=yoursaltmaster /minion-name=yourminionname
2. 配置Master
默认情况,Salt-master 监听主机所有接口(或IP:0.0.0.0)的4505和4506端口,当然也可以在/etc/salt/master的配置文件中修改#interface 的参数来绑定端口(或指定IP)
```
- #interface: 0.0.0.0
+ interface: 10.0.0.1
```
详细的Master 配置说明请参照:[master configuration reference](https://docs.saltstack.com/en/latest/ref/configuration/master.html#configuration-salt-master)
- 虽然Minion的配置选项很多,但简单那来讲,只要Minion通过DNS 'salt’能正确解析连接到Master 就可以了;也可以在/etc/salt/master 配置中更改#master 为确定的DNS或HOST IP,示例如下:
- #master: salt
+ master: 10.0.0.12
详细的Minion 配置说明请参照:minion configuration reference
- Minion 代理设置,在此暂不介绍,感兴趣的可以参照proxy minion configuration reference
- 运行Salt
- 在终端或shell下打开salt-master(如果需要后台执行或是守护进程,使用 ‘-d’)
sudo salt-master- 在CMD或powershell下打开salt-minion,一般需要指定连接的master和声明自己的名称之类(如果需要后台执行或是守护进程,使用 ‘-d’)
salt-minion /S /master=192.168.1.254 /minion-name=sta_01- 开启debug模式,最简单的方式是前台运行minion和master,追加–log-level=debug
salt-master --log-level=debug
- 非root用户执行,需要在master 的配置文件中更改user参数,另外还要确保以下文件的用户归属权限和读写权限。
- /etc/salt
- /var/cache/salt
- /var/log/salt
- /var/run/salt
- 密钥确认
Salt提供了Command, 在最初的密钥交换时验证Master和Minion的身份。验证密钥标识有助于避免无意中连接到错误的 Salt 主机, 并有助于在建立初始连接时防止潜在的 MiTM 攻击。
- Master 密钥,使用如下命令查看master key,将master.pub 密钥复制到Minion配置文件的master_finger
salt-key -F master
- Minion使用以下命令查看Minnion key,和Master下执行salt-key --finger <MINION_ID> 的minion key 比较是否一致
salt-call --local key.finger
- Key认证管理
Salt使用AES对Master <–> Minion 之间的所有通信加密,这样可以确保Master 发给Minion的Commands 不被篡改,并且Master与Minion之间的通信是可信的。
在向Minion 发送配置命令之前,Minion的Key必须被Master接受,在Master执行salt-key 可以列出已知的Minion Key
[root@master ~]# salt-key -L
Unaccepted Keys:
alpha
bravo
charlie
delta
Accepted Keys:
上述这个示例显示Master 已经监听到4个Minion的key,这4个key尚未被接受,继续使用salt-key coommand接受这4个key,允许对应的Minion 可以被Master管理。
[root@master ~]# salt-key -A
[root@master ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:
alpha
bravo
charlie
delta
简单说明:salt commnd支持单独或批量签名密钥。上面的示例使用’-A’-批量-接受所有挂起的密钥。要单独接受密钥, 请使用相同选项的字母小写形式,如‘-a keyname’。也可以参考:salt-key manpage
- 简单示例:
- 使用test.ping 命令查看Master 与 Minion 之间的通信是否正常
[root@master ~]# salt alpha test.ping alpha: True
最简单的方式是使用’*‘匹配所有Minion,一次性检查在线或通信的状态,
每一个状态正常的Minion 都会返回’True’[root@master ~]# salt '*' test.ping alpha: True bravo: True charlie: True delta: True
- 发送cmd
sudo salt '*' cmd.run 'netstat' [sudo] root 的密码: XDevelopmServer.XDEVELOPMENT.local: Active Connections Proto Local Address Foreign Address State TCP 10.6.161.64:56709 10.6.161.96:4505 ESTABLISHED TCP 10.6.161.64:56710 10.6.161.96:4505 ESTABLISHED TCP 10.6.161.64:60799 ec2-52-25-255-173:https ESTABLISHED TCP 10.6.161.64:65176 10.6.161.96:4506 TIME_WAIT
后续,linux 发行版可以使用*bootstrap-salt.sh*开机启动安装,和配置。
- 配置防火墙
最简单的方式是直接在Opening the Firewall up for Salt复制配置应用即可即可;
例如:对于openSUS,启用salt已准备好的配置即可
SuSEfirewall2 open
SuSEfirewall2 start
- 旧版Opensuse
SuSEfirewall2 open EXT TCP 4505
SuSEfirewall2 open EXT TCP 4506
对于Windows : 在系统--防火墙高级配置中进出站规则允许tcp 4505-4506端口,应用规则到Domain, Private, and Public即可。
一般不会遇到被防火墙屏蔽的情况。
* 使用ACCEPT KEY预配置 Minion
通常等待Minion 启动后再在Master Accept Key 不太方便,希望Minon 上线后自我引导 ,总共4步可以实现。
1. 在Master 上初始化key,[keyname]一般为Minion ID
```
root@saltmaster# salt-key --gen-keys=[key_name]
```
2. 将生成的public key 复制到已Accept 的Minion 配置路径下
```
root@saltmaster# cp key_name.pub /etc/salt/pki/master/minions/[minion_id]
```
3. 分发minion keys
*不存在一种非常完美的安全分发密钥的方法*
对于Amazon EC2,可以参照[an AWS best practice is to use IAM Roles to pass credentials](http://blogs.aws.amazon.com/security/post/Tx610S2MLVZWEA/Using-IAM-roles-to-distribute-non-AWS-credentials-to-your-EC2-instances)
一定要注意的是:
*由于主密钥已被接受, 因此分发私钥会带来潜在的安全风险。如果恶意方获得对置的Minion密钥的访问权限, 则它将有权访问您的整个状态树和其他敏感数据。*
4. 预置Minon
在Minion 启动前,将minions keys(minion.pem minion.pub)放在如下目录下:
*注意如果生成的密钥为XDevelopmServer.XDEVELOPMENT.local.pem,XDevelopmServer.XDEVELOPMENT.local.pub需要将名称改为minion.pem和minion.pub,要理解在minion下尽可能是这一对key*
```
/etc/salt/pki/minion/minion.pem
/etc/salt/pki/minion/minion.pub
```
* 设置salt-minion 目录用户权限
> 1. 有需要单独设置salt-minion 用户账户的,需要现在控制面板--用户管理--添加一个标准账户
> 2. 添加用户对salt 目录的访问权限
>> 例如选择c:\salt右键点击属性,选择Securtiy(安全)栏--Advanced高级)--点击Continue--弹出允许用户列表
>> 点击左上角蓝色连接:Select a pricipal 添加新建的salt-minion 账户
* 设置salt-minion service 的用户权限
>1. 在cmd 下打开services.msc ,找到salt-minion ,右键选择属性(propertis)
>2. 选择log on, This account,
>3. 输入salt-minion 用户名,确认密码,最好重新输入一遍,最后确认。
* 配置slat-minon启动参数
> 打开C:\salt\conf\minion配置文件,
> 查找到master:配置项,设置为salt-master 的IP或dns
> 查找到id: minion id 配置项,设置为salt-minion 主机名称或其他可以区分minion的ID
*为确保salt-minon 在windows 重启后能够完成启动或正常启动,请把service Startup type:由Automatic改为Automatic (Delayed Start) *
**重启slat-minion services**
===================