acl, aliases, alternatives, apache, archive, artifactory, blockdev, btrfs, buildout, html
cloud, cmd, composer, config, container_resource, cp, cron, data, defaults, python
devmap, dig, disk, django, dnsmasq, dnsutil, drbd, elasticsearch, environ, linux
etcd, event, extfs, file, gem, genesis, git, grains, group, grub, hashutil, ios
hg, hipchat, hosts, http, img, incron, ini, introspect, ip, iptables, jboss7, git
jboss7_cli, key, kmod, locale, locate, logrotate, lowpkg, match, mine, web
modjk, mount, network, openstack_config, pagerduty, pillar, pip, pkg, 正則表達式
pkg_resource, postfix, publish, puppet, pyenv, raid, random, random_org, sql
rbenv, ret, rsync, runit, rvm, s3, saltutil, schedule, scsi, sdb, seed, shell
selinux, serverdensity_device, service, shadow, slack, smtp, sqlite3, ssh, 數據庫
state, status, supervisord, sys, sysctl, syslog_ng, system, test, timezone,
user, vbox_guest, virtualenv, webutil, xfs
這裏重點是要將常常用到的模塊記錄的用法記錄下來,咱們直接在master端用#salt命令能夠作一些簡單的操做,也爲作.sls文件打基礎。
# salt 'agent1.salt' sys.doc cmd #能夠看cmd模塊都有哪些使用方法,這裏只列舉經常使用的。
2.1.1 cmd.has_exec的用法(若是可執行文件在minion上可用,則返回true,不然返回false)
例子:
# salt '*' cmd.has_exec ifconfig #這裏只能是單個命令,若是你用'ip addr'這種形式的話,確定返回的是False.
2.1.2 cmd.retcode的用法(在minion端執行一個shell命令並返回命令的返回碼。0表示成功,0之外表示失敗有問題。)
例子:
# salt '*' cmd.retcode 'ls -l /etc/hostname' #如咱們能夠查看一個文件是否存在根據返回碼來判斷,或者執行一個腳本等,''裏面就是你要執行的命令。正好跟cmd.has_exec相反
2.1.3 cmd.run的用法(這個執行shell命令跟cmd.retcode相似,可是不一樣的是,cmd.run就像再本地執行同樣。cmd.run_stderr意思只會在出問題的時候返回信息。)
2.1.4 cmd.script和cmd.script_retcode(從遠程salt服務器或者ftp服務器或者http服務器下載腳本到本地執行):
例子(這裏就引用man中的例子):
#salt '*' cmd.script salt://scripts/runme.sh
#salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'
2.1.5 cmd.shell和cmd.shells(cmd.shell跟cmd.run同樣,通常用cmd.run,cmd.shells是經過/ etc / shells文件列出此係統上的有效shell):
例子(這個基本也用不到也是引用man中的例子):
# salt '*' cmd.shells
2.1.6 cmd.which和cmd.which_bin的用法(就是查找執行文件所在的位置,which命令嘛都不陌生)
例子:
# salt '*' cmd.which ifconfig #查看節點全部ifconfig命令的位置,在寫腳本或者定時任務的時候頗有用,由於系統不一樣執行文件的絕對路徑也不通。# salt '*' cmd.run "which ifconfig"一個效果。
# salt '*' cmd.which_bin '[cat, ifconfig, touch]' #這是定義了一個列表,返回在命令列表中找到的第一個命令。
博文來自:www.51niux.com
# salt 'agent1.salt' sys.doc cp #只列舉一些經常使用的,詳細的能夠自行執行此命令查看
2.2.1 cp.get_dir和cp.get_file的用法(就是從master端cp目錄或者文件到minion端的目錄,get_dir支持與get_file相同的模板和gzip參數。對應的是cp.push:,cp.push_dir:,就是把客戶端的文件或者目錄推送到master端的cachedir,默認爲/var/cache/salt/master/minions/minion-id/files,可是這種用法是禁用狀態,通常不讓minion端的文件或目錄發送到master端,這裏只是記錄一下有這種用法。)
例子:
#salt '*' cp.get_dir salt://path/to/dir/ /minion/dest #從salt master遞歸複製目錄到minion客戶端的/minion/dest目錄下面。
#salt '*' cp.get_file salt://path/to/file /minion/dest #從服務端拷貝單個文件到minion端的/minion/dest目錄下面。
#salt '*' cp.get_file "salt://{{grains.os}}/vimrc" /etc/vimrc template=jinja #全部Salt minions從與其os粒度相同名稱的目錄下載vimrc,並將其複製到/etc/vimrc
2.2.2 cp.get_url(用於從URL獲取單個文件)
例子:
# salt '*' cp.get_url salt://cptest1/cptest1file /tmp/test #將salt://cptest1/cptest1file文件裏面的內容寫入到/tmp/test文件裏面,每次都會覆蓋裏面的內容。這種就跟cp.get_file同樣。
# salt '*' cp.get_url http://blog.51niux.com/?id=116 /tmp/test #如這種就把一個頁面的html信息寫入到了客戶端的/tmp/test文件,切記只能是這種文本形式的文件,不要是壓縮包啥的。
# salt '*' cp.get_url http://blog.51niux.com/zb_users/upload/2017/03/201703091489030442220789.txt /tmp/load_one_check.sh #最主要的用法仍是這種,咱們能夠以httpd的形式去下載一個sh腳本啊,config文件啊等。
# salt '*' cmd.run " cat /tmp/load_one_check.sh" #下面是部份內容,這樣咱們不少文本類的文件就不用從salt服務端發佈了,直接作個ftp服務或者http服務來發布文本類的東西什麼的就能夠了。固然cmd.run命令也能夠了......
agent1.salt:
#!/bin/bash
# ========================================================================================
# System loadavg plugin for Nagios
#
# Written by : chaishao
# From : 51niux.com
# Release : 1.1.0
# Creation date : 2017-03-08
# Revision date : 2017-03-08
# Description : Nagios plugin (script) to check system load_one .
# This script has been designed and written on Linux System.
#
# USAGE : ./$PROGNAME [-w -c]
#
# Exemple: : ./$PROGNAME -w n1 -c n2
# ========================================================================================
2.2.3 cp.list_master和cp.list_master_dirs的用法(這個就是查看salt master本地的file服務器又哪些文件或者目錄)
例子:
# salt 'agent1.salt' cp.list_master #這種就不要指定全部機器了,匹配一臺機器就能夠了,列出存儲在主機上的全部文件。
# salt 'agent1.salt' cp.list_master_dirs #列出存儲在master主機上面的全部目錄。
博文來自:www.51niux.com
2.3.1 file.access的用法(f表明存在,rwx分別表明讀、寫、執行權限)還有file.file_exists、file.get_mode和file.stats的用法。
例子:
# salt '*' file.access /opt/check.sh f #查看/opt/check.sh文件是否存在,這個挺有用的,咱們查看某個腳本或者某個文件是否存在。
#上面的例子也能夠寫成這種:#salt '*' file.file_exists /opt/check.sh (文件存在就返回True,不然返回False)
# salt '*' file.access /opt/check.sh x #若是有此腳本以後,咱們還能夠查看此腳本是否具備執行權限,f、r、w、x,只能寫一種,真就返回true,不然false。
# salt '*' file.get_mode /etc/passwd #file.get_mode後面指定目錄或者文件,能夠查看其受權狀況,如文件通常是0644,若是文件或目錄不存在無信息(固然還有:file.is_blkdev檢查文件是否存在而且是塊設備,file.is_chrdev檢查文件是否存在而且是字符設備,file.is_fifo檢查文件是否存在而且是FIFO,file.is_link檢查路徑是不是符號連接)
# salt '*' file.stats /etc/passwd #file.stats返回一個文件或目錄的統計信息,這裏是返回/etc/passwd文件的統計信息(類型,時間,屬組,權限等)。
2.3.2 file.append和file.write的用法(前者將內容追加到文件的末尾,後者是直接覆蓋相似於echo >,可是格式跟前者同樣。)
例子:
第一組:單引號和雙引號的區別,還有!須要注意的地方:
# salt '*' file.append /tmp/1 "`hostname` This is a good day\!" #用雙引號,就是裏面能夠接變量,可是這個!須要注意,不用\轉義的話會報錯。
# salt '*' file.append /tmp/1 '`hostname` This is a good day!' #因此若是出現!最好放到單引號裏面來引用,由於上面就算轉義了也顯示的不對。
第二組:換行符的使用
# salt '*' file.append /tmp/1 "Two""Two Two" #這表示兩組字符串在一行,中間默認加個空格隔開。
# salt '*' file.append /tmp/1 "Two" "Two Two" #這表示兩組字符串是換行的。
#上面的截圖爲,兩組測試結果,能夠明顯的比較出差異。
第三組:!是不知道怎麼解決了,要麼就放單引號。還有個=是須要注意的,有個args用法,以及[]外面加不加雙引號的區別。
# salt '*' file.append /tmp/1 args='Hostname=`hostname`' #若是字符串裏面有等號要用這種args的用法。
# salt '*' file.append /tmp/1 args="Hostname=`hostname`" #atgs用單引號和雙引號的區別就在於裏面的變量是否解析爲變量的值仍是字符串。
# salt '*' file.append /tmp/1 args=['Hostname=`hostname`''rel=`cat /etc/redhat-release`'] #這裏就是定義一個並排的兩個字符串
# salt '*' file.append /tmp/1 args=['Hostname=`hostname`','rel=`cat /etc/redhat-release`'] #可見args默認是單引號的形式,兩組字符串中間加逗號。
# salt '*' file.append /tmp/1 args="['Hostname=`hostname`','rel=`cat /etc/redhat-release`']" #雙引號不是默認的,因此要單獨的加上。
#從結果咱們能夠看出,兩個字符串之間若是沒有逗號的話,不換行,可是中間也沒有分隔,能夠學習awk,在兩個字符串中間加" "來進行添加空格的操做。
其實主要仍是字符串裏面有=就用args的形式,若是是多組字符串能夠用[]的形式,若是要是用變量就用雙引號的形式,默認是單引號的形式。
2.3.3 file.chgrp、file.chown和file.set_mode用法(前者是更改文件的屬組,中者是更改文件數的屬主屬組,後者是更改文件或目錄的權限)
例子:
# salt '*' file.chgrp /tmp/1 test9 #將minion端的/tmp/1文件更改用戶組爲test9,若是客戶端有此用戶組則返回None,沒有此用戶組則返回用戶組不存在
# salt '*' file.chown /tmp/1 test7 test9 #第一個是用戶,第二個是用戶組,固定格式必須存在,將/tmp/1的用戶組設置爲test7,用戶組設置爲test9.
# salt '*' file.set_mode /opt/cs 0550 #設置/opt/cs目錄權限爲0550,若是受權成功會顯示受權後的權限,若是沒有此文件或目錄會提示
2.3.4 file.comment和file.comment_line的用法(註釋指定內容的行,每次操做前都會更新文件名命令的.bak備份文件)
例子:
# salt '*' file.comment /tmp/passwd ftp #這就是將以/tmp/passwd文件以ftp開頭的行註釋掉,若是註釋會顯示註釋行的信息,若是沒註釋則返回False
# salt '*' file.comment /tmp/passwd ftp.*nologin$ #另外還支持正則表達式,這裏就表示以ftp開頭以nologin結尾的行。多行註釋
# salt '*' file.comment /tmp/passwd ftp.*nologin$ '-' #後面能夠指定在行開頭加什麼字符,固然默認是#,前面也能夠這樣後面指定要行頭添加的字符。
2.3.5 file.copy用法(複製文件或目錄到指定的目錄下面,成功返回True,失敗會有提示的。另外還有file.move,移動文件的用法。)
例子:(引用man幫助)
#salt '*' file.copy /path/to/src /path/to/dst #這裏是文件拷貝,將文件/path/to/src拷貝到/path/to/目錄下面,其名稱爲dst,切記這裏必定要是文件名。
目錄複製的區別看下面的例子(#複製目錄的話,要加recurse=True遞歸標記):
# salt '*' file.copy /opt/file2 /tmp/haha/ recurse=True #這種無論時/tmp/haha/仍是/tmp/haha,若是這個haha存在的話,就是將/opt/file2下面的內容cp -r拷貝到/tmp/haha目錄下面,若是haha目錄不存在的話,就是將/opt/file2目錄變爲/tmp/haha目錄。
# salt '*' file.copy /opt/file2 /tmp/haha/file2 recurse=True #這種纔是正確的將/opt/file2目錄複製到/tmp/haha/目錄下方。如haha目錄不存在會建立
#salt '*' file.copy /path/to/src_dir /path/to/dst_dir recurse=True remove_existing=True #remove_existing=True 這種就是徹底覆蓋的形式。
2.3.6 'file.directory_exists和file.dirname的用法(前者檢查一個目錄是否存在,後者取文件的路徑)
例子:
# salt '*' file.directory_exists /tmp/haha/file2 #/tmp/haha/file目錄存在就會返回True,不存在就會返回False
# salt '*' file.dirname '/opt/file2/' #取出來的結果是/opt/file2,這就是末尾加/,認爲這兩個都是目錄,固然不論是否有這個目錄
# salt '*' file.dirname '/opt/file2/test1' #取出來的結果是/opt/file2
2.3.7 file.find方法(相似於linux下面的find命令)
例子(man的例子):
#salt '*' file.find / type=f name=\*.bak size=+10m #查找/目錄下,文件類型爲文件的(a:全部文件類型,b:塊設備 ,c:字符設備,d:目錄, p:FIFO(命名管道), f:普通文件 ,l:符號連接 ,s:套接字),名稱爲.bak結尾的(這裏支持正則表達式),大小大於10MB的文件(b:字節,k:千字節,m:兆字節,g:GB,t:太字節也是TB)。
#salt '*' file.find /var mtime=+30d size=+10m print=path,size,mtime #這裏是查找/var目錄下,最後一次更改時間是30天之前(w:周,d:天,h:小時,
m:分鐘,s:秒),大小大於10MB的文件,並打印文件的路徑,大小,更改時間(可打印的內容有:group:組名,md5:文件內容的MD5摘要,mode:文件權限(以整數形式),mtime:最後修改時間,name:文件基礎名稱,path:文件絕對路徑,size:文件大小(以字節爲單位),type:文件類型,user:用戶名)。
#salt '*' file.find /var/log name=\*.[0-9] mtime=+30d size=+10m delete #find的匹配條件有(name區分大小寫,iname不區分大小寫,type類型,user用戶,group用戶組,size[+-]大小,mtime修改時間,grep搜索文件內容),最後執行的動做除了delete和print,還有exec command。
2.3.8 file.get_gid、file.get_uid 和file.get_group、file.get_user的用法(前一組返回文件或目錄的gid號和uid號,後一組返回文件或目錄group和user)
例子(其餘的就替換函數就能夠了):
# salt '*' file.get_user /etc #查看/etc目錄的屬組,若是文件或目錄不存在返回false。
# salt '*' file.get_uid /etc #查看/etc目錄的屬組的uid號。若是目錄或者文件不存在返回-1.
2.3.9 file.grep的用法(相似於linux上面的grep命令)
例子:
# salt '*' file.grep /etc/passwd nobody #過濾/ect/passwd文件中包含nobody的行。(會輸出:pid:是grep運行的pid號,retcode:爲狀態碼,0是成功過濾1爲非成功過濾,stderr:錯誤輸出,stdout:正常輸出也就是咱們要過濾的內容。)
# salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr " -i" #「-i」的目的是不區分大小寫,注意-i前面有空格,額外的參數之間都有空格。
# salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr " -i -B2 -A2" #-B2就是連上面兩行也過濾出來,-A2就是連下兩行也過濾出來。
2.3.10 file.link和file.symlink的用法(前者是建立文件的硬連接,後者是建立符號連接也就是軟連接)
例子:
# salt '*' file.link /tmp/1 /tmp/2 #爲/tmp/1建立一個硬連接是/tmp/2,只能是文件。
# salt '*' file.symlink /tmp/haha /tmp/buhaha #爲/tmp/haha目錄建立一個軟連接/tmp/buhaha,成功返回Ture,失敗有提示信息。
2.3.11 file.mkdir和file.makedirs方法(兩種都是建立目錄。前者對結尾的/不敏感,後者對/敏感)
# salt '*' file.mkdir /opt/cs/ds #這就是在/opt/目錄下面建立cs目錄,並在cs目錄下面建立ds目錄,若是cs目錄不存在就建立。目錄存不存在也不會有提示
# salt '*' file.makedirs /opt/cs/ds #這裏只會建立/opt/cs目錄,首先若是/opt要建立的目錄是存在的會有提示,/opt/cs/ds/纔會在cs目錄下面建立ds目錄
2.3.12 file.remove、file.rmdir和file.rename用法(前者是刪除文件或者目錄,中間是刪除目錄可是目錄必定要爲空、後者是重命名文件或目錄)
例子:
# salt '*' file.remove /opt/cs/ #刪除/opt目錄下面的cs目錄
# salt '*' file.rmdir /opt/cs #刪除/opt/cs目錄,若是cs目錄下面有內容會提示目錄不會空刪除失敗,若是爲空則會執行並返回True
# salt '*' file.rename /opt/cs/ds /opt/cs/dss #更改/opt/cs目錄下的ds目錄爲dss目錄
2.3.13 file.touch和file.truncate的用法
例子:
# salt '*' file.touch /tmp/test1 #文件不存在則建立此文件,若是文件存在裏面的內容不會發生變化,可是它的time信息會更新,上級目錄必須存在。
# salt '*' file.truncate /tmp/passwd 3 #將/tmp/passwd 第三個字段之後的內容全刪除掉了,就剩下了roo三個字段。
博文來自:www.51niux.com
#salt '*' sys.doc hosts #經過這個命令能夠查看詳細用法,咱們生產中若是沒有用內建DNS服務,使用hosts模塊修改/etc/hosts仍是常常會用到的。
2.4.1 hosts.add_host、hosts.rm_host和hosts.set_host的用法(前者是追加,中着是刪除、後者是覆蓋)
例子:
#salt '*' hosts.add_host 192.168.1.113 foreman.puppet #hosts.add會先判斷/etc/hosts裏面有沒有這個IP192.168.1.113,若是有foreman.puppet會將alias名追加到這個IP後面,跟以前的解析別名一塊兒使用這個IP。
#salt '*' hosts.add_host 192.168.1.114 foreman.puppet #若是沒有這個IP,則會新建立一行hosts記錄,可是192.168.1.113那條仍是存在的。兩條記錄
#salt '*' hosts.set_host 192.168.1.114 test.hahahah #hosts.set_host這個的不一樣之處就是,若是這個IP不存在則建立新的一條hosts記錄,若是hosts存在這個IP的解析記錄。會徹底覆蓋掉。也就是舊的IP解析記錄徹底變成如今的結果。
#salt '*' hosts.rm_host 192.168.1.114 test.haha #刪除192.168.1.114 test.haha這條解析記錄。若是192.168.1.114這行有多條解析記錄,而只會刪除test.haha這條記錄,其餘的192.168.1.114 xxx.xxx,還會存在不會刪除,能夠說是有選擇性的刪除。
2.4.2 其餘查看hosts解析的用法
例子:
#salt '*' hosts.get_alias 192.168.1.114 #192.168.1.114這個IP對應的別名解析,若是有則返回對應的hosts別名解析記錄。沒有則什麼都不返回。
# salt '*' hosts.get_ip wo.haha #這個就是返回wo.haha在/etc/hosts裏面對應的IP,可是有個問題,若是有多條只會返回文件最上方的那一條對應的IP地址
# salt '*' hosts.has_pair 192.168.1.113 foreman.puppet #若是有這條別名解析記錄,則返回True,若是沒有則返回False。
# salt '*' hosts.list_hosts #相似於cat /etc/hosts的操做,可是不一樣的是,這至關於一個彙總,會以第一行是IP:下一行是其對應的別名解析的方式來呈現,好比一個IP有好幾行的解析,這全部的解析記錄都會彙總到這個IP下面,註釋過的別名解析的行不會出如今這個彙總信息裏面。
2.5.1 cron.raw_cron的用法(cron.list_tab和cron.ls和跟其效果同樣,格式也同樣必需要指定某一個用戶,都是顯示指定用戶crontab文件裏面的定時任務)
例子:
# salt '*' cron.raw_cron root #必須指定用戶,這裏是顯示root的crontab文件裏面的內容,註釋的行也會顯示
2.5.2 cron.set_job的用法(爲指定用戶設置一個定時任務)
例子:
# salt '*' cron.set_job root '0' '0' '*' '*' '*' '/bin/bash /opt/scripts/scp.sh >/dev/null 2>&1' #若是'/bin/bash /opt/scripts/scp.sh >/dev/null 2>&1'這一部分存在了,那麼這一步操做就是update,也就是更新前面執行crontab的時間,若是不存在,這就至關於一條添加定時任務的操做返回內容爲new。
2.5.3 cron.rm_job的用法(刪除指定用戶指定的的定時任務)
例子:
# salt '*' cron.rm_job root '/bin/bash /opt/scripts/scp.sh >/dev/null 2>&1' #注意格式是用戶 後面跟要刪除的任務,不要加前面的時間,成功會返回removed,若是沒有這條記錄會返回absent。
例子:
#salt '*' network.get_hostname #返回minion的主機名
# salt '*' network.hw_addr eth0 #返回指定網絡接口的mac地址
# salt '*' network.in_subnet 192.168.1.0/24 #查看主機在某個子網內就返回True,若是不在的話就返回False,多子網用空格隔開。
# salt '*' network.ip_addrs #查看minion端綁定的IP地址,多IP也會顯示出來,127.0.0.1除外。(#salt '*' network.interfaces會顯示全部接口的詳細信息,可是別名的網卡相似於eth0:1這種不會顯示。)
# salt '*' network.interface_ip eth0 #顯示指定網卡接口上面的IP,只會顯示IP不會顯示其餘內容。(network.interface會連網關子網掩碼也顯示)
# salt 'agent1.salt' network.mod_hostname test1.salt #修改某一個minion的主機名,顯然這一步操做只適合在初始化的時候並且不適合執行全部主機。
# salt '*' network.ping www.baidu.com return_boolean=True timeout=3 #若是不加return_boolean=True顯示的是ping的結果信息,加了就是若是ping通了就返回True,ping不通就返回False。timeout=3就是ping的時間,3秒超時這樣能快速返回結果。這個其實挺好用的,好比咱們能夠測試哪些主機的DNS設置有問題不能正常解析啊,或者是咱們內網DNS指向了一個非公網的域名解析,能夠經過這個看哪些主機設置了內網DNS而哪些沒設置內網DNS。
#salt '*' network.subnets #返回主機所屬的子網
2.7.1 sys.argspec的用法(返回Salt執行模塊中函數的參數說明。對於咱們後期寫.sls文件頗有幫助)
例子:
#salt '*' sys.argspec pkg.install #查看pkg.install函數的參數說明
#salt '*' sys.argspec sys #查看sys模塊裏面全部函數的規則說明,或者#salt '*' sys.argspec 'sys.*'
2.7.2 sys.doc的用法(顯示模塊下函數的使用文檔信息相似於man幫助,前面已介紹過,多模塊或者多函數之間用空格隔開)
2.7.3 sys.list_functions和sys.list_modules的用法(前者就是列出全部模塊下面的函數,多模塊也是用空格隔開。後者是將全部模塊列出來.)
例子:
# salt '*' sys.list_functions 'sys.list_*' #能夠用這種方法將全部sys.list開頭的函數列出來。
# salt '*' sys.list_modules #列出全部的模塊
# salt '*' sys.list_modules 's*' #列出全部以s開頭的模塊。
例子:
#salt '*' service.available sshd #查看某個命令的服務是否可用,這裏是查看sshd服務是否可用,可用返回True,不可用返回False.
# salt '*' service.disable postfix #禁止某個服務開機啓動,這裏是禁止postfix服務開機啓動。
# salt '*' service.disabled postfix #查看某個服務是否已經開機不啓動,這裏是以postfix服務爲例,是返回True,不然返回False.
# salt '*' service.enable postfix #設置某個服務開機啓動,這裏以postfix爲例
# salt '*' service.enabled postfix #查看某個服務是否開機啓動,這裏以postfix服務爲例
# salt '*' service.get_all #查看全部的服務項
# salt '*' service.get_enabled #查看全部開機啓動的服務
# salt '*' service.reload <service name> #從新加載指定名稱的服務
# salt '*' service.restart <service name> #從新啓動指定名稱的服務
# salt '*' service.start <service name> #啓動指定名稱的服務
# salt '*' service.status <service name> #查看指定服務的狀態,啓動狀態是True,關閉狀態是False。
# salt '*' service.stop <service name> #關閉指定名稱的服務
2.9.1 pkg.install的用法(安裝傳遞的包,在安裝包以前,添加refresh = True來清理yum數據庫。)
參數介紹:
name:要安裝的軟件包的名稱。若是傳遞了「pkgs」或「sources「」此參數則會被忽略
# salt '*' pkg.install httpd #如這就至關於在minion端執行yum install httpd -y操做
# salt '*' pkg.install httpd refresh=True #若是是第一個yum的話,仍是能夠refresh參數,至關於yum clean all操做。
skip_verify:跳過GPG驗證檢查
version:安裝包的特定版本
fromrepo:指定從哪一個repo庫來安裝軟件。
pkgs : 指定多個軟件包,必定是要以列表傳遞。
#salt '*' pkg.install pkgs='["foo", "bar"]'
#salt '*' pkg.install pkgs='["foo", {"bar": "1.2.3-4.el5"}]'
sources:要安裝的RPM軟件包列表。 其中的鍵是包名稱,值做爲包的源URI或本地路徑。
#salt '*' pkg.install sources='[{"foo": "salt://foo.rpm"}, {"bar": "salt://bar.rpm"}]'
2.9.2 pkg.latest_version的用法(更新軟件包至最新版本)
例子:
#salt '*' pkg.latest_version <package name> #更新指定的軟件包
#salt '*' pkg.latest_version <package name> fromrepo=epel-testing #指定repo源來更新軟件包
#salt '*' pkg.latest_version <package1> <package2> <package3> ... #多個要更新的軟件之間用空格隔開
2.9.3 pkg.remove的用法(刪除軟件的操做)
例子:
# salt '*' pkg.remove <package name> #卸載指定的軟件
# salt '*' pkg.remove <package1>,<package2>,<package3> #多軟件能夠用空格隔開
# salt '*' pkg.remove pkgs='["foo", "bar"]' #也能夠用pkgs使用python列表的形式
2.9.4 salt '*' pkg.version的用法(查看軟件的版本)
# salt '*' pkg.version <package name> #查看指定軟件的版本號# salt '*' pkg.version <package1> <package2> <package3> ... #查看多軟件版本號