配置Salt

Salt 的配置非常简单。 默认的 master 配置就可以在大多数情况下运行。仅仅需要更改的是 minion ,在 minion 配置文件中设置 master 的地址。

The configuration files will be installed to /etc/salt and are named after the respective components, /etc/salt/master, and /etc/salt/minion.

Master配置

默认Salt master监听所有网卡接口(0.0.0.0)的4505和4506端口. 如果需要指定监听IP, 通过 /etc/salt/master 配置文件中的"interface"指令进行如下修改:

- #interface: 0.0.0.0
+ interface: 10.0.0.1

更新完配置文件后,需要重启Salt master以使其生效配置. 如果想了解更多的关于master的其他选项请访问: master配置参考 .

Minion配置

尽管Salt Minion有许多配置选项,但配置Minion还是非常简单的. 默认的配置Minion会尝试连接DNS名为"salt"的master,如果minion解析到的地址正确,就无需再做配置.

如果DNS名为"salt"并不能解析到本地正确的Master地址,需要通过如下方法修改 /etc/salt/minion 配置文件中的"master"指令:

- #master: salt
+ master: 10.0.0.1

更新完配置后,需要重启Salt minion以使配置生效. 如果想了解更多关于minion的配置选项,请访问 minion配置参考 .

运行Salt

  1. 前台启动master(如果要以daemon方式启动,请指定 -d参数 <salt-master -d>):

    salt-master
    
  2. 前台启动minion(如果要以daemon方式启动,请指定 -d参数 <salt-minion -d>):

    salt-minion
    

运行有问题?

排除 Salt 故障最简单的方法是在前台运行 master 和 minion,同时把 log level 设为``debug``

salt-master --log-level=debug

想了解更多关于salt的日志系统,请访问 logging document.

以普通(非root)用户运行

想要使用其他用户身份运行Salt,参见:conf_master:`user`参数在master配置文件中。

Additionally, ownership, and permissions need to be set such that the desired user can read from and write to the following directories (and their subdirectories, where applicable):

  • /etc/salt
  • /var/cache/salt
  • /var/log/salt
  • /var/run/salt

更多关于如何使用非特权用户运行salt的信息可以在 这里 找到。

我们也提供了一份完整的 troubleshooting指南 .

Key Identity

Salt provides commands to validate the identity of your Salt master and Salt minions before the initial key exchange. Validating key identity helps avoid inadvertently connecting to the wrong Salt master, and helps prevent a potential MiTM attack when establishing the initial connection.

Master Key Fingerprint

Print the master key fingerprint by running the following command on the Salt master:

salt-key -F master

Copy the master.pub fingerprint from the Local Keys section, and then set this value as the master_finger in the minion configuration file. Save the configuration file and then restart the Salt minion.

Minion Key Fingerprint

Run the following command on each Salt minion to view the minion key fingerprint:

salt-call --local key.finger

Compare this value to the value that is displayed when you run the salt-key --finger <MINION_ID> command on the Salt master.

Key管理

Salt在Master和Minion之间的通讯采用AES加密. 这就确保了发送给minions的命令不会被篡改, Master和Minion之间的通讯认证通过信任的已接受的key进行管理.

在发送给Minion之前,需要确保minion的key已经被Master所接受. 运行 ``salt-key``命令将列出Salt Master已知的所有keys.

[root@master ~]# salt-key -L
Unaccepted Keys:
alpha
bravo
charlie
delta
Accepted Keys:

下边的例子中,Salt已知有四个Minions,但是没有接受一个minion的key。 接受key以使Mionions可以被Master管控,需要使用 salt-key 命令:

[root@master ~]# salt-key -A
[root@master ~]# salt-key -L
Unaccepted Keys:
Accepted Keys:
alpha
bravo
charlie
delta

salt-key 命令能够进行单个操作,也可以进行批量操作. 例子中使用 -A 进行批量接受所有待定的keys. 接受单个key使用小写字母a, -a keyname.

发送指令

Master和Minion连通性测试可以通过运行 ``test.ping` 命令:

[root@master ~]# salt alpha test.ping
alpha:
    True

Master与所有Minons的连通性测试可以使用下边类似的方法:

[root@master ~]# salt '*' test.ping
alpha:
    True
bravo:
    True
charlie:
    True
delta:
    True

每个Minions应该发送一个 True 回应并显示出来.

接下来做些什么?

Understanding targeting is important. From there, depending on the way you wish to use Salt, you should also proceed to learn about Remote Execution and Configuration Management.