salt-api安裝以及簡單實使用

一、安裝說明linux

  操做系統版本:CentOS Linux release 7.5.1804 (Core)json

  saltstack版本:2018.3.2vim

  已經關閉selinux、firewalld服務。api

二、配置yum源app

編輯/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

三、安裝salt-master、salt-minion、salt-apicurl

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

四、配置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節點

五、部署配置salt-api認證,添加認證用戶,生成證書等url

#建立一個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從新生成

六、添加salt-api配置文件,設置遠程調用端口等內容spa

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配置去掉便可。

七、配置完成以後,須要重啓相關服務操作系統

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

八、獲取認證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值會變化。若再次生成,也會發生變化。

九、執行models,使用test.ping查看是否調用成功。

[root@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進行調用。

十、遠程調用命令解析

-d client='local':使用local進行遠程命令執行
-d tgt='192.168.40.71':指定遠程minion節點地址
-d fun='cmd.run' :調用的模塊名稱
-d arg='ip addr list':調用模塊所須要的參數

備註:若是調用的模塊須要多個參數,須要指定多個-d arg='參數內容'進行使用。請參考模塊使用示例中的add_host添加解析做爲參考。

十一、經常使用模塊使用示例

使用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'因爲須要在複製文件的時候,須要傳入多個參數,所以,使用run模塊,將多個參數放在列表中傳入。curl -k https://18.18.1.6:8010/run -H "Accept: application/json" -H "Content-type: application/json" -d '[{"client":"local","tgt":"192.168.40.71","fun":"cp.get_file","arg":["salt://tmp/1.txt","/data/111.txt"],"username":"xxx","password":"xxx","eauth":"pam"}]'
相關文章
相關標籤/搜索