SaltStack系列(二)之经常使用模块

1、saltstack的内置模块汇总

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

2、saltstack经常使用模块介绍

这里重点是要将常常用到的模块记录的用法记录下来,咱们直接在master端用#salt命令能够作一些简单的操做,也为作.sls文件打基础。

2.1 cmd模块的经常使用使用方法:

#  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]'  #这是定义了一个列表,返回在命令列表中找到的第一个命令。

2.2 cp模块的经常使用使用方法

#  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://www.51niux.com/?id=116 /tmp/test  #如这种就把一个页面的html信息写入到了客户端的/tmp/test文件,切记只能是这种文本形式的文件,不要是压缩包啥的。

# salt '*' cp.get_url http://www.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主机上面的全部目录。

2.3 file模块的经常使用使用方法

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

2.4 hosts模块的经常使用使用方法

#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 cron模块的经常使用使用方法

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。

2.6 network模块的经常使用使用方法

例子:

#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 sys模块的经常使用使用方法

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开头的模块。

2.8 service模块的经常使用使用方法

例子:

#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 pkg模块的经常使用使用方法

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> ...  #查看多软件版本号

相关文章
相关标签/搜索