運維工具SaltStack之二常見模塊及API

運維工具SaltStack之二常見模塊及APIpython

1.Archive模塊:實現系統層面的壓縮包調用,支持gzip、gunzip、rar、tar、unrar、unzip等mysql

例子:nginx

#salt 'minion01' archive.g
zip test.txt   #採用gzip壓縮test.txt文件


2.cmd模塊:實現遠程的命令行調用執行(默認具有root操做權限)正則表達式

例子:sql

#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模塊:遠程文件、目錄的複製apache

例子:vim

#salt 'minion01' cp.get_dir salt://script/ /opt/minion/  #將Master端file_roots指定位置下(默認在/srv/salt)的目錄複製到minion01主機/opt/minion/目錄下


4.cron模塊:minion端主機的crontab操做bash

例子:網絡

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


5.dnsutil模塊:Minion主機通用DNS操做app

例子:

#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
相關文章
相關標籤/搜索