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

[经验分享] 运维工具SaltStack之二常见模块及API

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-3-13 13:42:49 | 显示全部楼层 |阅读模式
        1.Archive模块:实现系统层面的压缩包调用,支持gzip、gunzip、rar、tar、unrar、unzip等
        例子:
1
2
#salt 'minion01' archive.g
zip test.txt   #采用gzip压缩test.txt文件





        2.cmd模块:实现远程的命令行调用执行(默认具备root操作权限)
        例子:
1
2
#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模块:远程文件、目录的复制
        例子:
1
#salt 'minion01' cp.get_dir salt://script/ /opt/minion/  #将Master端file_roots指定位置下(默认在/srv/salt)的目录复制到minion01主机/opt/minion/目录下





        4.cron模块:minion端主机的crontab操作
        例子:
1
# salt 'minion01' cron.set_job root '*' '*' '*' '*' 1 /home/timesyc.sh  #minion01端主机root用户添加任务作业




        5.dnsutil模块:Minion主机通用DNS操作
        例子:
1
#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模块:常见的文件操作,包括文件读写、权限、查找等
        例子:
1
2
3
4
5
6
#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支持
        例子:
1
2
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为输入链
1
2
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主机的网络信息
        例子:
1
#salt 'minion01' network.ping www.baidu.com   #minion01主机ping域名信息





        9.pkg包管理模块:程序包管理,如:yum安装
        例子:
1
#salt '*' pkg.install httpd  #所有Minion主机安装等价于yum -y install httpd,pkg.remove为移除





        10.service服务模块:程序包服务管理(如:开机自动启动,服务重启等)
        例子:
1
2
#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
1
2
3
4
5
#vim /root/archive_gzip.py
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','archive.gzip','/root/test.txt')
print ret



        执行结果返回一个字典
1
{'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         #复合匹配,以上参数可以组合使用

1
2
3
4
5
6
7
8
#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执行生效。
        可用执行命令
1
2
#salt '*' state.highstate    #所有Minion到Master上取SLS定义,然后在本地调用对应的state module(user,pkg,service等)来达到SLS描述的状态。
#salt-call state.highstate -l debug  #输出debug信息,便于调试。




        如:
1
2
3
4
5
6
7
apache: #ID声明,state名称:apache
  pkg: #管理对象类型states:pkg,进行软件安装(yum、apt)
    - installed #pkg要执行的方法:install,如未安装就进行安装
  service: #管理对象类型states:service,管理系统守护进程
    - running #service要执行的方法:running,如未运行就进行启动
    - require: #关键字require,确保apache服务只有在成功安装软件包后才会启动
      - pkg: apache








运维网声明 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-351021-1-1.html 上篇帖子: 运维工具SaltStack之一安装部署 下篇帖子: 运维工具SaltStack之三Grains组件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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