salt-api安装以及简单实使用

1、安装说明

  操作系统版本:CentOS Linux release 7.5.1804 (Core)

  saltstack版本:2018.3.2

  已经关闭selinux、firewalld服务。

2、配置yum源

编辑/etc/yum.repos.d/salt.repo,内容如下:

[salt-latest] name=SaltStack Latest Release Channel for RHEL/Centos $releasever baseurl=https://mirrors.aliyun.com/saltstack/yum/redhat/7/$basearch/latest failovermethod=priority enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key

3、安装salt-master、salt-minion、salt-api

yum install salt-master salt-minion salt-api pyOpenSSL

4、配置salt-master配置文件

master节点配置文件为/etc/salt/master,内容如下:

interface
: 0.0.0.0 publish_port: 4505 user: root max_open_files: 100000 worker_threads: 5 ret_port: 4506 root_dir: / default_include: master.d/*.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节点

5、部署配置salt-api认证,添加认证用户,生成证书等

#创建一个saltapi用户,同时为该用户添加密码
useradd -M -s /sbin/nologin saltapiuser
echo 123456 | passwd saltapi --stdin

#开启visudo,使该用户能拥有root权限
usermod -g wheel saltapi

#进行自签名证书配置
cd /etc/pki/tls/certs/
make saltapicert
salt-call --local tls.create_self_signed_cert

提示已经存在时,可以删除/etc/pki/tls/certs/localhost.crt  /etc/pki/tls/certs/localhost.key重新生成

6、添加salt-api配置文件,设置远程调用端口等内容

vim /etc/salt/master.d/api.conf

内容如下:
rest_cherrypy: port:
8010  #设置远程rest api调用端口 ssl_crt: /etc/pki/tls/certs/localhost.crt  #自定义tls证书,使其支持https ssl_key: /etc/pki/tls/certs/localhost.key  #自定义key external_auth:  #设置认证方式 pam: saltapi: - .* - @wheel - @runner

若不想使用https调用,则将ssl_cert、ssl_key配置去掉即可。

7、配置完成之后,需要重启相关服务

systemctl restart salt-master
systemctl restart salt-api
systemctl restart salt-minion

8、获取认证token值

curl  -sSk https://18.18.1.6:8010/login -H ‘Accept: application/x-yaml‘ -d username=‘saltapiuser‘ -d password=‘123456‘ -d eauth=‘pam‘
显示内容如下:

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值会变化。若再次生成,也会发生变化。

9、执行models,使用test.ping查看是否调用成功。

[[email protected]192-168-40-71 ~]# 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=‘test.ping‘
return:
- 192.168.40.71: true

输出结果如上,即可说明salt-api已经配置完成,同时可使用rest api进行调用。

10、远程调用命令解析

-d client=local:使用local进行远程命令执行
-d tgt=192.168.40.71:指定远程minion节点地址
-d fun=cmd.run :调用的模块名称
-d arg=ip addr list:调用模块所需要的参数

备注:如果调用的模块需要多个参数,需要指定多个-d arg=参数内容进行使用。请参考模块使用示例中的add_host添加解析作为参考。

11、常用模块使用示例

使用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解析
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节点上
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‘

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...