日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

salt stack 工具之一——远程命令

發布時間:2024/1/3 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 salt stack 工具之一——远程命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

salt stack 遠程命令

salt stack是一種自動化的運維工具,可以同時對N臺服務器進行配置管理、遠程命令執行等操作。

salt stack分為兩個部分:

salt-master,部署在控制服務器上,用于發出運維指令;
salt-minion,部署在所有需要批量運維的線上服務器上;


salt安裝

服務端:yum install salt-master -y

客戶端:yum install salt-minion -y

配置文件:

服務端:/etc/salt/master

服務端配置:

interface: 192.168.1.229
auto_accept: True

其中,interface 用于設置master監聽的IP地址;

auto_accept設置是否自動接收minion的KEY。

master啟動后默認監聽4505和4506兩個端口:4505(publish_port)為salt的消息發布系統;4506(ret_port)為salt客戶端與服務端通信的端口。

客戶端:/etc/salt/minion

客戶端配置:

master: 192.168.1.229
id :34

其中,master設置服務端地址;

id用于設置minion自身的ID,master根據這個ID識別minion;

啟動服務:

服務端啟動方式:service salt-master start
客戶端啟動方式:service salt-minion start

程序日志:(有問題可查日志獲取出錯信息)
服務端:/var/log/salt/master
客戶端:/var/log/salt/minion


key管理

1、minion在第一次啟動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion里面設置)下自動生成minion.pem(private key)和minion.pub(public key),然后將minion.pub發送給master;
2、master 在接收到minion的public key后,通過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的public key, 然后master就能對minion發送指令了。

Salt在master和minion數據交換過程中使用AES加密, 為了保證發送給minion的指令不會被篡改,在發送命令到minion之前,minion的key需要先被master所接受(accepted),運行salt-key可以列出當前key的狀態:

[root@localhost src]# salt-key -L
Accepted Keys:
34
35
37
39
56
57
Unaccepted Keys:
Rejected Keys:

salt-key命令可以接受特定的單個key或批量接受key,使用-A選項接受當前所有的key,接受單個key可以使用-a keyname。
認證命令為salt-key,常用的有如下命令:

-a ACCEPT, --accept=ACCEPTAccept the following key
-A, --accept-all Accept all pending keys
-r REJECT, --reject=REJECTReject the specified public key
-R, --reject-all Reject all pending keys
-d DELETE, --delete=DELETEDelete the named key
-D, --delete-all Delete all keys

當然salt也是可以自動認證的,把下面的False改成True就OK了:

grep  -n "auto_accept:" /etc/salt/master


執行命令

salt 命令的格式:

salt <target> <function> <args>

這里target是指minion的id,function是要執行的功能函數,args是函數參數。例如:

salt '*' cmd.run 'ls /home/' 
salt '*' cmd.exec_code bash 'for i in {1,2};do echo $i;done' 
salt '*' service.restart salt-minion

對所有的minion執行命令:

salt '*' cmd.run 'uptime'

輸出結果:

34:
     18:13:18 up 268 days,  6:04,  3 users,  load average: 0.73, 0.87, 0.88
37:
     18:13:18 up 142 days, 16:51,  1 user,  load average: 0.47, 0.50, 0.46
39:
     18:13:17 up 142 days, 16:49,  3 users,  load average: 0.60, 0.59, 0.51
35:
     18:13:17 up 268 days,  6:03,  1 user,  load average: 1.11, 0.97, 0.87
57:
     18:13:18 up 149 days,  2:30,  1 user,  load average: 1.54, 1.62, 1.55
56:
     18:13:17 up 149 days,  2:31,  0 users,  load average: 1.50, 1.59, 1.51

-L選項指定minion列表:

salt -L '35,56' cmd.run 'uptime' 

-E選項使用正則匹配指定minion列表:

salt -E '^3' cmd.run 'uptime'

-N選項指定一個分組:

salt -N group2 test.ping

這里的test.ping命令和ICMP的ping沒有關系。

注意:服務器分組需要事先在配置文件(/etc/salt/master)添加。

這里可以查看到salt支持的所有模塊提供的功能列表:

salt '*' -d cmd

比如:

1、disk模塊,查看磁盤使用率

salt '*' disk.usage
salt '*' disk.percent /var
salt '*' disk.inodeusage

2、dig模塊

salt ns1 dig.A www.google.com
salt ns1 dig.AAAA www.google.com
salt ns1 dig.MX google.com
salt ns1 dig.NS google.com
salt ns1 dig.SPF google.com
salt ns1 dig.check_ip 127.0.0.1

3、pkg模塊,用于批量安裝minion服務器

salt '*' pkg.install <package name>
salt '*' pkg.upgrade

注意:不同的linux發行版本,采用的包管理方式不一樣,例如Ubuntu使用apt,CentOS使用yum等,因此該模塊有不同的實現;

4、cron模塊,管理集群的crontab

salt '*' cron.ls root
salt '*' cron.raw_cron root
salt '*' cron.rm_job root /usr/local/weekly
salt '*' cron.rm_env root MAILTO
salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' cron.write_cron_file root /tmp/new_cron

5、at模塊,一次性任務

salt '*' at.at 12:05am '/sbin/reboot' tag=reboot
salt '*' at.at '3:05am +3 days' 'bin/myscript' tag=nightly runas=jim
salt '*' at.atq
salt '*' at.atrm all

6、service模塊

salt '*' service.available sshd
salt '*' service.get_all
salt '*' service.reload <service name>
salt '*' service.restart <service name>
salt '*' service.start <service name>
salt '*' service.stop <service name>
salt '*' service.status <service name> [service signature]

7、cmd模塊

salt '*' cmd.run "ls -l | awk '/foo/{print $2}'"
salt '*' cmd.exec_code python2 'print("hello world")'
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'

cmd模塊可以執行一段代碼、也可以執行一個指定腳本;

8、nginx模塊,批量操作nginx服務器

salt '*' nginx.configtest
salt '*' nginx.signal reload
salt '*' nginx.status
salt '*' nginx.version

類似的,salt還支持對

apache

mysql

redis

rabbit

nagios

django

hadoop

haproxy

rsync

varnish

svn

等模塊的支持。

參考文檔:

http://docs.saltstack.com/en/latest/topics/tutorials/walkthrough.html

總結

以上是生活随笔為你收集整理的salt stack 工具之一——远程命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。