天天看點

運維工具SaltStack之二常見子產品及API

運維工具SaltStack之二常見子產品及API

1.Archive子產品:實作系統層面的壓縮包調用,支援gzip、gunzip、rar、tar、unrar、unzip等

例子:

#salt 'minion01' archive.g
zip test.txt   #采用gzip壓縮test.txt檔案      

2.cmd子產品:實作遠端的指令行調用執行(預設具備root操作權限)

例子:

#salt 'minion01' cmd.run 'fdisk -l'  #擷取被控主機硬碟資訊
#salt 'minion01' cmd.script salt://script/test.py   #該指令首先同步test.py到minion用戶端的cache目錄并運作該腳本。其中script/test.py存放在file_roots指定的目錄(預設在/srv/salt(需要建立),在/etc/salt/master檔案中定義)      

3.cp子產品:遠端檔案、目錄的複制

#salt 'minion01' cp.get_dir salt://script/ /opt/minion/  #将Master端file_roots指定位置下(預設在/srv/salt)的目錄複制到minion01主機/opt/minion/目錄下      

4.cron子產品:minion端主機的crontab操作

# salt 'minion01' cron.set_job root '*' '*' '*' '*' 1 /home/timesyc.sh  #minion01端主機root使用者添加任務作業      

5.dnsutil子產品:Minion主機通用DNS操作

#salt 'minion01' dnsutil.hosts_append /etc/hosts 192.168.2.71 www.test.com  #添加192.168.2.71 www.test.com到minion01端/etc/hosts下      

6.file子產品:常見的檔案操作,包括檔案讀寫、權限、查找等

#salt 'minion01' file.chown /mydata/data root root   #修改minion01主機/mydata/data檔案的屬組、使用者權限,等價于chown root:root /mydata/data
#salt 'minion01' file.copy /mydata/data /home/data  #minion01主機複制/mydata/data檔案到本地的/home/data目錄
#salt 'minion01' file.get_mode /mydata/data   #擷取minion01主機/mydata/data的權限mode,如:755,644
#salt '*' file.mkdir /home/test   #所有Minion端主機建立/home/test
#salt '*' file.set_mode /home/test 0755  #所有Minion端主機/home/test的權限mode為0755
#salt 'minion01' file.remove /home/test  #删除minion01主機的/home/test檔案      

7.iptables子產品:主機的iptables支援

salt '*' iptables.append filter INPUT rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'
salt '*' iptables.insert filter INPUT position=3 rule='-m state --state RELATED,ESTABLISHED -j ACCEPT'      

說明:在所有Minion主機端追加(append)、插入(insert)iptables規則,其中INPUT為輸傳入連結

salt '*' iptalbes.delete filter INPUT position=3
salt '*' iptables.delete filter INPUT rule='-m state --state RELATEC,ESTABLISHED -j ACCEPT'      

說明:在所有Minion主機删除指定鍊編号為3(position=3)或指定存在的規則

8.network子產品:傳回Minion主機的網絡資訊

#salt 'minion01' network.ping www.baidu.com   #minion01主機ping域名資訊      

9.pkg包管理子產品:程式包管理,如:yum安裝

#salt '*' pkg.install httpd  #所有Minion主機安裝等價于yum -y install httpd,pkg.remove為移除      

10.service服務子產品:程式包服務管理(如:開機自動啟動,服務重新開機等)

#salt '*' service.enable httpd    #所有Minion主機httpd服務開機自啟動腳本,service.disable為禁用
#salt '*' service.restart httpd   #所有Minion主機httpd服務重新開機,service.reload(加載)、service.start(啟動)、service.stop(停止)、service.status(狀态)      

注:saltstack還提供了user(系統使用者子產品)、group(系統組子產品)、partition(系統分區子產品)、puppet(puppet管理子產品)、system(系統重新開機、關機子產品)、timezone(時區管理子產品)、nginx(nginx管理子產品)、mount(檔案系統挂載子產品)等等。

11.可以通過Python擴充子產品,使用API。通過調用master client子產品,執行個體化一個LocalClient對象,再調用cmd()方法來實作

如:API實作archive.gzip

#vim /root/archive_gzip.py
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','archive.gzip','/root/test.txt')
print ret      

執行結果傳回一個字典

{'minion01': '/root/test.txt.gz'}      

12.遠端執行目标(target)

常見指令參數:

globbing  #預設指定id進行比對

L         #以主機ID清單形式比對,不同主機id名稱使用逗号隔開

E         #基于id的正規表達式進行比對

G         #基于grains資訊進行比對過濾

I         #基于master賦給minion的pillar資訊進行比對

N         #基于master配置檔案中的分組名稱比對

S         #基于minion的IP位址或者IP子網比對

C         #複合比對,以上參數可以組合使用

#salt 'minion01'  test.ping
#salt -L 'minion01,minion02'  test.ping
#salt -E '.*01' test.ping
#salt 'minion01'   grains.items
#salt 'minion01' grains.get os
#salt -S '192.168.2.71' test.ping
#salt -C 'E@m.*01 or G@id:minion02' test.ping
#salt '*'  pillar.get mysql      

13.State内置子產品

state是Saltstack最核心的功能。通過預先定制好的SLS描述了(支援YAML文法)系統的目标狀态(程式包(pkg)、檔案(file)、網絡配置(network)、系統服務(service)、系統使用者(user)等),由格式簡單的資料構成。這經常被稱作配置管理。

state的入口檔案與pillar一樣,檔案名都是top.sls,但state要求sls檔案必須存放在Saltstack base定義的目錄下(預設為/srv/salt)。

state描述配置*.sls支援jinjia模闆、grains及pillar引用等,在state的邏輯層次定義完成後,再通過salt '*' state.highstate執行生效。

可用執行指令

#salt '*' state.highstate    #所有Minion到Master上取SLS定義,然後在本地調用對應的state module(user,pkg,service等)來達到SLS描述的狀态。
#salt-call state.highstate -l debug  #輸出debug資訊,便于調試。      
apache: #ID聲明,state名稱:apache
  pkg: #管理對象類型states:pkg,進行軟體安裝(yum、apt)
    - installed #pkg要執行的方法:install,如未安裝就進行安裝
  service: #管理對象類型states:service,管理系統守護程序
    - running #service要執行的方法:running,如未運作就進行啟動
    - require: #關鍵字require,確定apache服務隻有在成功安裝軟體包後才會啟動
      - pkg: apache