设为首页 收藏本站
查看: 1659|回复: 0

[经验分享] SaltStack远程执行常用模块使用

[复制链接]

尚未签到

发表于 2018-8-1 11:56:49 | 显示全部楼层 |阅读模式
  关于SaltStack介绍与安装基本使用请参考前面博文:http://270142877.blog.51cto.com/12869137/1947847
  此博文主要介绍一些常用模块的的使用方法:
  基础模块
  sys模块:
  此模块主要用于获取帮助,和查看可以使用的模块,方法和状态state
#查看pkg模块的install方法在指定主机可使用的所有参数  
salt yuyan* sys.argspec pkg.install
  

  
#查看pkg模块所有以i开头的方法在指定主机可使用的所有参数
  
salt yuyan* sys.argspec pkg.i*
  

  
#查看pkg模块在指定主机所有方法和方法参数
  
salt yuyan* sys.argspec pkg
  

  
#查看pkg模块的install方法的使用文档
  
salt yuyan* sys.doc pkg.install
  

  
#查看pkg模块的使用文档
  
salt yuyan* sys.doc pkg
  

  
#查看pkg模块所有以i开头的方法的使用文档
  
salt yuyan* sys.doc pkg.i*
  

  
#列出指定模块的所有方法,多个模块用空隔分开
  
salt yuyan* sys.list_functions pkg
  
salt yuyan* sys.list_functions pkg service
  

  
#列出指定主机所有可用模块
  
salt yuyan* sys.list_modules
  

  
#列出指定主机所有以p开头的所有可用模块
  
salt yuyan* sys.list_modules "p*"
  

  
#列出指定主机所有可用的状态模块和方法文档
  
salt yuyan* sys.list_state_functions
  

  
#列出指定主机指定的状态模块和方法文档
  
salt yuyan* sys.list_state_functions pkg service
  

  
#列出出指定主机pkg状态模块以i开头的方法文档
  
salt yuyan* sys.list_state_functions pkg.i*
  

  
#列出指定主机pkg状态模块的使用方法文档
  
salt yuyan* sys.state_doc pkg
  

  
#列出指定主机pkg模块的installed方法的使用文档,多个使用空隔分开
  
salt yuyan* sys.state_doc pkg.installed
  
salt yuyan* sys.state_doc pkg.installed user.present
  关于sys模块的使用方法就讲解这么多,更多的使用请参考官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.sysmod.html
  test模块:
  从字面意思我们也知道这是一个测试模块,此模块官方文档有很多的用法,我研究了下感觉没有太大用处,官方文档如下:
  https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.test.html
#查看指定主机的客户端版本  
salt yuyan* test.version
  

  
#查看指定主机的客户端详细版本信息
  
salt yuyan* test.versions_information
  

  
#查看指定主机的客户端详细版本信息并生成报告
  
salt yuyan* test.versions_report
  

  
#测试指定主机是否在线
  
salt yuyan* test.ping
  cmd模块
  从字面意思我们也知道这是一个测试模块命令模块,主要用来在客户端执行命令,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.cmdmod.html
#在指定主机执行命令,默认会根据操作系统识别  
salt yuyan* cmd.run cmd="sed "s/root/aaaa/g" /etc/passwd"
  
salt yuyan* cmd.run "sed "s/root/aaaa/g" /etc/passwd"
  

  
#在指定主机执行指定shell命令
  
salt yuyan* cmd.run shell="/bin/sh" cmd="sed "s/root/aaaa/g" /etc/passwd"
  
salt svn* cmd.run shell="powershell" cmd="ipconfig"
  

  
#在指定主机执行脚本
  
salt yuyan* cmd.script salt://test.sh
  
#说明:此脚本需要放在服务端的base环境目录下面,关于环境的介绍将在后面的博文中介绍
  

  
#查看指定主机命令的所在目录
  
salt yuyan* cmd.which ls
  

  
#查看指定主机可用的所有shell
  
salt yuyan* cmd.shells
  cp模块
  主要用来将服务端或者其它地方的文件或目录发送到指定的客户端,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.cp.html
#将服务端base环境中的test.sh文件复制到指定的主机/tmp/目录并改名为1.sh  
salt yuyan* cp.get_file salt://test.sh /tmp/1.sh
  

  
#将服务端base环境中的test.sh文件复制到指定的主机,复制文件的时候进行压缩,压缩等级1-9
  
salt yuyan* cp.get_file salt://test.sh /tmp/2.sh gzip=9
  

  
#将服务端base环境中的test.sh文件复制到指定的主机,如果目标目录不存在自动创建
  
salt yuyan* cp.get_file salt://test.sh /tmp/tmp/test.sh makedirs=True
  

  
#从网站下载一个对象并保存到指定的主机
  
salt yuyan* cp.get_url http://res.test.com/uploads/20101/5cb9a333ce.png /tmp/1.png
  

  
#在复制文件的时候使用jinja模板来渲染
  
salt yuyan* cp.get_file salt://`grains`.`os`.sh /tmp/`grains`.`os`.sh template=jinja
  

  
#将base环境中的init目录复制到指定主机的/tmp目录,makedirs,template,gzip都可以在这里使用
  
salt yuyan* cp.get_dir salt://init /tmp
  pkg模块
  主要用于包管理完成,yum rpm which等命令的使用,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.yumpkg.html
#在指定主机安装一个软件包,自动安装依赖包  
salt yuyan* pkg.install httpd
  

  
#安装多个软件包
  
salt yuyan* pkg.install pkgs=['httpd','tree']
  

  
#在指定主机删除一个软件包,同样也可以使用pkgs来删除多个软件包
  
salt yuyan* pkg.remove tree
  
salt yuyan* pkg.remove tree,httpd
  

  
#下载软件包,多个用空隔分开,默认下载到客户端的/var/cache/yum/packages/目录
  
salt yuyan* pkg.download httpd
  

  
#查看指定客户端的指定软件包安装产生的所有文件,返回字典,可以使用file_list返回列表
  
salt yuyan* pkg.file_dict nginx
  

  
#查看软件包的安装信息
  
salt yuyan* pkg.info_installed nginx
  

  
#查看未安装软件包可安装的最新版本
  
salt yuyan* pkg.latest_version httpd
  

  
#列出所有已安装的软件包
  
salt yuyan* pkg.list_pkgs
  

  
#列出所有yum源
  
salt yuyan* pkg.list_repos
  

  
#查看指定文件的所属软件包
  
salt yuyan* pkg.owner /etc/hostname
  

  
#升级所有软件包,也可以指定软件包升级,多个使用pkgs选项
  
salt yuyan* pkg.upgrade
  
salt yuyan* pkg.upgrade name=openssl
  
salt yuyan* pkg.upgrade pkgs=['httpd','tree']
  service模块
  这个模块相对比较简单,主要是对服务进行管理,官方文档如下:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.service.html
  windows服务管理的如下:
  https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.win_service.html
#查看指定服务是否存在  
salt yuyan* service.available httpd
  

  
#列出所有服务
  
salt yuyan* service.get_all
  

  
#reload指定服务
  
salt yuyan* service.reload nginx
  

  
#restart指定服务
  
salt yuyan* service.reload nginx
  

  
#停止指定服务
  
salt yuyan* service.stop nginx
  

  
#启动指定服务
  
salt yuyan* service.start nginx
  

  
#查看指定服务的状态
  
salt yuyan* service.status httpd
  cron模块
  这个也相对简单,主要是对计划任务进行管理,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.cron.html
#列出指定主机,指定用户的所有计划任务  
salt yuyan* cron.list_tab root
  

  
#返回结果相当于直接执行crontab -l
  
salt yuyan* cron.raw_cron root
  

  
#在指定主机指定用户设置一个计划任务
  
salt yuyan* cron.set_job root 1 "*" 5 "*" "*" date
  

  
#删除指定计划任务,如果不知道cmd,使用cron.list_tab或者cron.ls查看
  
#关于删除有一些计划任务删除会失败,原因不明
  
salt yuyan* cron.rm_job root cmd=date
  file模块
  这个模块相对方法很多,比较复杂,主要是对文件和目录进行管理,这里只列出一些常用的方法示例,大家可以参考官方文档:
  https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.file.html
#测试指定文件是否有指定权限,如rwx  
salt yuyan* file.access /tmp/test.sh x
  

  
#向指定文件追加行,多行使用args
  
salt yuyan* file.append /tmp/test.sh "date"
  
salt yuyan* file.append /tmp/test.sh args=["line1","lineN"]
  

  
#检查指定文件的hash值
  
salt yuyan* file.check_hash /tmp/test.sh
  

  
更改文件的属组和属主
  
salt yuyan* file.chown /tmp/test.sh nginx nginx
  

  
#注释文件的指定行,可用正则表达式匹配
  
salt yuyan* file.comment_line /tmp/test.sh '^line'
  

  
#复制服务端上面的文件到客户端
  
salt yuyan* file.copy /etc/passwd /tmp/passwd
  

  
#查看客户端指定目录是否存在
  
salt yuyan* file.directory_exists /tmp/init
  

  
#查看指定文件是否存在
  
salt yuyan* file.file_exists /tmp/test.sh
  

  
#查看指定文件占用磁盘的大小
  
salt yuyan* file.diskusage /tmp/test.sh
  

  
#查看客户端/tmp目录下指定文件,根据文件名
  
salt yuyan* file.find /tmp name=test.sh
  
#指定类型和文件名
  
salt yuyan* file.find /tmp name=test.sh type=f
  
#以正则匹配文件名
  
salt yuyan* file.find /tmp regex="^t.*sh$"
  
#找到文件执行删除
  
salt yuyan* file.find /tmp regex="^t.*sh$" delete
  
#注:此命令功能强大,更多用法还需要参考官方文档
  

  
#查看文件的gid和uid
  
salt yuyan* file.get_gid /tmp/test.sh.bak
  
salt yuyan* file.get_uid /tmp/test.sh.bak
  

  
#获取文件的权限
  
salt yuyan* file.get_mode /tmp/test.sh.bak
  

  
#更改文件的名字
  
salt yuyan* file.rename /tmp/test.sh.bak /tmp/test.sh
  

  
#删除目录,但目录必须为空
  
salt yuyan* file.rmdir /tmp/init
  

  
#将指定文件里面的line替换为1234
  
salt yuyan* file.sed /tmp/test.sh "line" "1234"
  

  
#创建软件链接
  
salt yuyan* file.symlink /tmp/test.sh /tmp/test.123
  

  
#创建一个文件
  
salt yuyan* file.touch /tmp/123.txt
  user模块
  主要用于用户管理,如创建用户,删除用户,更改用户信息等,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.useradd.html
#创建一个test用户,其它都和useradd一样默认  
salt yuyan* user.add test
  

  
#创建用户时指定shell
  
salt yuyan* user.add test1 shell=/sbin/nologin
  

  
#创建用户时指定不创建家目录
  
salt yuyan* user.add test3 createhome=False
  

  
#创建用户时指定附加组
  
salt yuyan* user.add test4 groups=nginx
  

  
#将test用户加入到nginx组,此为附加组
  
salt yuyan* user.chgroups test nginx
  

  
#查看test用户所有的组
  
salt yuyan* user.list_groups test
  

  
#删除test用户
  
salt yuyan* user.delete test remove=True
  

  
#查看所有用户
  
salt yuyan* user.list_users
  archive模块
  主要用于打包,压缩和归档使用,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.archive.html
#打包指定文件,多个文件使用空隔分开,打包后的名称为test.zip  
salt yuyan* archive.cmd_zip /opt/test.zip /tmp/test.sh
  

  
#打包目录
  
salt yuyan* archive.cmd_zip /opt/test.zip /tmp/init
  

  
#将init.zip解压至/root目录下面
  
salt yuyan* archive.cmd_unzip /opt/init.zip /root/
  

  
#将test.sh打包为test.sh.gz,打包后就在当前目录
  
salt yuyan* archive.gzip /tmp/test.sh
  

  
#将test.sh.gz解压,解压后就在当前目录
  
salt yuyan* archive.gunzip /tmp/test.sh.gz
  

  
#对/tmp/init目录打包后压缩为tar.gz
  
salt yuyan* archive.tar czvf /opt/init.tar.gz /tmp/init
  

  
#解压init.tar.gz,默认放到/root目录下面,因为minion进程是以root用户启动的
  
salt yuyan* archive.tar xvzf /opt/init.tar.gz
  iptables模块
  主要用于管理iptables规则,比如增加,删除等,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.iptables.html
#向filter表的INPUT链追加一条iptables规则  
salt yuyan* iptables.append filter INPUT rule='-p tcp --dport 8080 -j DROP'
  

  
#向filter表的INPUT链插入一条iptables规则
  
salt yuyan* iptables.insert filter INPUT rule='-p tcp --dport 8080 -j DROP'
  

  
#删除filter表的INPUT链的-p tcp --dport 8080 -j DROP规则
  
salt yuyan* iptables.delete filter INPUT rule='-p tcp --dport 8080 -j DROP'
  

  
#保存iptables规则到文件
  
salt yuyan* iptables.save /etc/sysconfig/iptables
  

  
#获取所有规则
  
salt yuyan* iptables.get_rules
  

  
#获取所有保存的规则
  
salt yuyan* iptables.get_saved_rules
  network模块
  主要用来处理与IP网络有关的事务,官方文档:https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.network.html
#获取主机名  
salt yuyan* network.get_hostname
  

  
#查看所有网络接口信息
  
salt yuyan* network.interfaces
  

  
#测试与www.baidu.com的连通性
  
salt yuyan* network.ping
  

  
#查看所有活动的tcp连接
  
salt yuyan* network.active_tcp
  

  
查看arp解释表,可以把连接的IP地址解释成MAC地址
  
salt zabbix* network.arp
  

  
#测试指定主机,指定端口的连通性
  
salt yuyan* network.connect zabbix.aek.com 10051
  

  
#查看默认路由
  
salt yuyan* network.default_route
  

  
#获取指定的路由信息
  
salt **** network.get_route 10.8.3.0
  

  
#获取指定网卡的MAC地址
  
salt yuyan* network.hw_addr eth0
  

  
#获取指定网卡的IP地址
  
salt yuyan* network.interface_ip eth0
  

  
#获取指定网卡的IP地址详细信息
  
salt yuyan* network.interface eth0
  扩展模块高级模块:
  grains模块
  grains模块为minion服务启动的时候从客户端收集的一些硬件,系统基础信息,比如硬件的配置,生产厂商,快速服务代码,系统主机名,IP,环境变量等信息。这些信息我们都可以通过master向minion发送请求获取,官方文档如下:
  https://docs.saltstack.com/en/latest/topics/grains/
#获取指定主机的所有grains信息  
salt yuyan* grains.items
  

  
#获取单个信息,如os,还有其它很多,我们可以通过grains.items查看到所有的
  
salt yuyan* grains.item os
  除了一些已有的信息,我们还可以自定义grains信息,比如我们想给每台主机定义一个角色,方便我们来对服务器分组,对特定的角色执行相关的操作:
  修改minion端配置文件,在文件最后新增以下三行
grains:  
  roles:
  
    - webserve
  注:此配置为ymal语法结构,关于ymal语法可参考百度百科
  grains  关键字,不可以修改
  roles  此为key的名称
  webserver  此为key的值
  我们还可以定义多个key-value来应用到我们的环境中满足不同的需求如:
grains:  
  roles:
  
    - webserve
  
  address:
  
    - HangZhou
  修改完成后需要重启minion服务,这样就可以通过上面介绍的命令进行获取了,如:
salt yuyan* grains.item roles  
salt yuyan* grains.item address
  pillar模块
  此模块是存放在master端的动态数据,然后通过master下发给指定的每台minion,一般用于存放一些动态敏感信息,默认情况下每台主机也有很多默认的pillar,但默认是禁用的,因为不是特别重要。一般情况下我们都是自定义pillar
  命令使用方法
#查看指定客户端的所有pillar  
salt yuyan* pillar.items
  

  
#查看指定客户端的单个pillar
  
salt yuyan* pillar.item PILLAR_NAME
  开启默认的pillar方法如下:
  修改服务端配置文件/etc/salt/master,不推荐开启
#打开以下行的注释,并改为True  
pillar_opts: True
  自定义pillar方法如下
  修改服务端配置文件/etc/salt/master,在文件最后加入
pillar_roots:  
  base:
  
    - /srv/pillar
  然后重启服务端服务
  创建目录:
mkdir /srv/pillar  编辑配置文件vim /srv/pillar/address.sls
{% if grains['os'] == 'CentOS' %}  
address: HangZhou
  
{% elif grains['os'] == 'Debian' %}
  
address: Guangdong
  
{% endif %}
  编辑配置文件vim /srv/pillar/top.sls
base:  
  "*":
  
   - address
  执行同步命令,需要pillar信息同步到不同的客户端
salt yuyan* saltutil.refresh_pillar  这时候就可以通过最前面介绍的pillar模块来查看相对应的信息了

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544748-1-1.html 上篇帖子: SaltStack安装,添加主机,基本命令 下篇帖子: 3.saltstack-更换master端服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表