1. 概述
使用 masterless 运行无主的 salt-minion 允许你为 minion 端使用 salt 配置管理,而无需调用另一台机器上的 salt-master 服务器
应用场景:
- master 与 minion 网络不通或通信有延迟,即网络不稳定
- 想在 minion 端直接执行状态
要指示 minion 不要寻找主服务器,需要在 minion 配置文件中设置 file_client
配置选项。默认情况下,file_client
设置为 remote
,以便 minion 在 master 服务器收集状态文件信息和 Pillar 数据。当将 file_client
选项设置为 Local
时,minion 被配置为不从 master 服务器收集这些数据
2. 配置masterless
2.1 修改配置文件minion
需要修改的内容:
- 注释master行
- 取消注释file_client并设其值为local
- 设置file_roots
- 设置pillar_roots
...
# and a warning will be logged.
#random_master: False //将此行注释
...
# minion in masterless mode.
file_client: local //将此行取消注释,并将值设为local
...
# Example:
file_roots: //设置file_roots的路径和环境,可有多套环境
base:
- /srv/salt/base
...
# also be configured on the minion:
pillar_roots: //设置pillar_roots的路径和环境,可有多套环境
base:
- /srv/pillar/base
2.2 关闭salt-minion服务
使用 masterless 模式时是不需要启动任何服务的,包括salt-master和salt-minion。
[root@minion ~]# systemctl disable --now salt-minion
2.3 使用salt-call命令
salt-call 命令用于在 minion 上本地运行远程执行函数,而不是从 master 执行它们。正常情况下,salt-call 命令检查 master 以检索文件服务器和 pillar 数据,但在运行独立的 salt-call 时,需要指示不要检查主服务器的数据
local 标志告诉 salt-minion 在本地文件系统中查找状态树,不要联系 salt-master 获取指示,所以 masterless 模式执行模块或状态时需要使用 salt-call --local
//执行命令
[root@minion ~]# salt-call --local cmd.run 'date'
local:
Tue Aug 25 16:17:40 CST 2020
//执行状态文件
[root@minion ~]# cat /srv/salt/base/install.sls
apache-install:
pkg.installed:
- name: httpd
[root@minion ~]# salt-call --local state.sls install
local:
----------
ID: apache-install
Function: pkg.installed
Name: httpd
Result: True
Comment: The following packages were installed/updated: httpd
Started: 16:19:58.460526
Duration: 8319.485 ms
Changes:
----------
apr:
----------
new:
1.4.8-5.el7
old:
apr-util:
----------
new:
1.5.2-6.el7
old:
httpd:
----------
new:
2.4.6-93.el7.centos
old:
httpd-tools:
----------
new:
2.4.6-93.el7.centos
old:
mailcap:
----------
new:
2.1.41-2.el7
old:
Summary for local
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 8.319 s