1、安装说明@H_502_8@
操作系统版本:CentOS Linux release 7.5.1804 (Core)
saltstack版本:2018.3.2
已经关闭selinux、firewalld服务。
2、配置yum源@H_502_8@
编辑/etc/yum.repos.d/salt.repo,内容如下:
[salt-latest] name@H_502_8@=SaltStack Latest Release Channel for@H_502_8@ RHEL/Centos $releasever baseurl@H_502_8@=https://@H_502_8@mirrors.aliyun.com/saltstack/yum/redhat/7/$basearch/latest@H_502_8@ failovermethod=priority enabled@H_502_8@=1@H_502_8@ gpgcheck@H_502_8@=0@H_502_8@ gpgkey@H_502_8@=file:///@H_502_8@etc/pki/rpm-gpg/saltstack-signing-key@H_502_8@
3、安装salt-master、salt-minion、salt-api@H_502_8@
yum install salt-master salt-minion salt-api pyOpenSSL
master节点配置文件为/etc/salt/master,内容如下:
interface@H_502_8@: 0.0@H_502_8@.0.0@H_502_8@
publish_port: @H_502_8@4505@H_502_8@
user: root
max_open_files: @H_502_8@100000@H_502_8@
worker_threads: @H_502_8@5@H_502_8@
ret_port: @H_502_8@4506@H_502_8@
root_dir: @H_502_8@/
default_include: master.d@H_502_8@/*@H_502_8@.conf #设置salt master的配置文件,包含master.d目录下的文件
pki_dir: /etc/salt/pki/master
keep_jobs: 24
timeout: 5
auto_accept: True
state_top: top.sls
file_roots:
base:
- /srv/salt
log_file: /var/log/salt/master
log_level: debug
file_recv: True #启用从客户端传送文件到master节点@H_502_8@
5、部署配置salt-api认证,添加认证用户,生成证书等@H_502_8@
#创建一个saltapi用户,同时为该用户添加密码
useradd @H_502_8@-M -s /sbin/nologin saltapiuser
echo @H_502_8@‘@H_502_8@123456@H_502_8@‘@H_502_8@ | passwd saltapi --stdin
#开启visudo,使该用户能拥有root权限
usermod @H_502_8@-g wheel saltapi
#进行自签名证书配置
cd @H_502_8@/etc/pki/tls/certs/
make saltapicert
salt@H_502_8@-call --local tls.create_self_signed_cert
提示已经存在时,可以删除/etc/pki/tls/certs/localhost.crt /etc/pki/tls/certs/localhost.key重新生成
6、添加salt-api配置文件,设置远程调用端口等内容@H_502_8@
vim /etc/salt/master.d/api.conf
内容如下:
rest_cherrypy:
port: @H_502_8@8010 #设置远程rest api调用端口@H_502_8@
ssl_crt: @H_502_8@/etc/pki/tls/certs/localhost.crt #自定义tls证书,使其支持https
ssl_key: @H_502_8@/etc/pki/tls/certs/localhost.key #自定义key
external_auth: #设置认证方式
pam:
saltapi:
@H_502_8@- .*
- ‘@H_502_8@@wheel@H_502_8@‘@H_502_8@
- ‘@H_502_8@@runner@H_502_8@‘
若不想使用https调用,则将ssl_cert、ssl_key配置去掉即可。@H_502_8@
7、配置完成之后,需要重启相关服务@H_502_8@
systemctl restart salt-master
systemctl restart salt@H_502_8@-api
systemctl restart salt@H_502_8@-minion
curl -sSk https://@H_502_8@18.18.1.6:8010/login -H ‘Accept: application/x-yaml‘ -d username=‘saltapiuser‘ -d password=‘123456‘ -d eauth=‘pam‘
显示内容如下:@H_502_8@
return:
- eauth: pam
expire: 1535514571.611626
perms:
- .*
- ‘@wheel‘
- ‘@runner‘
start: 1535471371.611626
token: f9546b1a123bd1edcefefbcff37a54ff3358cda3 #此处即为远程调用的token值
user: saltapiuser
备注:如果在配置文件中,并未配置ssl_cert、ssl_key配置,请使用http进行调用。同时若重启salt-api服务,token值会变化。若再次生成,也会发生变化。@H_502_8@
9、执行models,使用test.ping查看是否调用成功。@H_502_8@
[[email protected]192@H_502_8@-168@H_502_8@-40@H_502_8@-71@H_502_8@ ~]# curl -k https://@H_502_8@18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client=‘local‘ -d tgt=‘192.168.40.71‘ -d fun=‘test.ping‘@H_502_8@ return@H_502_8@: @H_502_8@- 192.168@H_502_8@.40.71@H_502_8@: true
输出结果如上,即可说明salt-api已经配置完成,同时可使用rest api进行调用。@H_502_8@
-d client=‘@H_502_8@local@H_502_8@‘@H_502_8@:使用local进行远程命令执行
@H_502_8@-d tgt=‘@H_502_8@192.168.40.71@H_502_8@‘@H_502_8@:指定远程minion节点地址
@H_502_8@-d fun=‘@H_502_8@cmd.run@H_502_8@‘@H_502_8@ :调用的模块名称
@H_502_8@-d arg=‘@H_502_8@ip addr list@H_502_8@‘@H_502_8@:调用模块所需要的参数
备注:如果调用的模块需要多个参数,需要指定多个@H_502_8@-d arg=‘@H_502_8@参数内容@H_502_8@‘@H_502_8@进行使用。请参考模块使用示例中的add_host添加解析作为参考。
11、常用模块使用示例@H_502_8@
使用cmd.run模块,远程执行命令
curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client=‘local‘ -d tgt=‘192.168.40.71‘ -d fun=‘cmd.run‘ -d arg=‘ip addr list‘
使用add_host添加hosts解析
@H_502_8@curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client=‘local‘ -d tgt=‘192.168.40.71‘ -d fun=‘hosts.add_host‘ -d arg=‘2.2.2.2‘ -d arg=‘test.lcs‘
其中2.2.2.2为ip地址,test.lcs为域名。
使用cp.push方法从minion上将文件复制到master节点上
@H_502_8@curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client=‘local‘ -d tgt=‘192.168.40.71‘ -d fun=‘cp.push‘ -d arg=‘/tmp/1.txt‘
复制过来的文件位置为:/var/cache/salt/master/minions/192.168.40.71/files/tmp,其中192.168.40.71为minion节点ip地址。
调用cp.get_file方法,将master节点上文件复制到minion节点上。
curl -k https://18.18.1.6:8010/ -H "Accept: application/x-yaml" -H "X-Auth-Token: f9546b1a123bd1edcefefbcff37a54ff3358cda3" -d client=‘local‘ -d tgt=‘192.168.40.71‘ -d fun=‘cp.get_file‘ -d arg=‘salt://tmp/1.txt‘ -d arg=‘/data/1.txt‘@H_502_8@@H_502_8@