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

[经验分享] saltstack从简单到入门详解(二)

[复制链接]

尚未签到

发表于 2018-8-1 08:32:39 | 显示全部楼层 |阅读模式
  六、grains使用以及cmd.run
  grains.items主要用来收集minion端的信息,方便进行信息采集,后续的pillar使用,根据硬件信息自动匹配配置文件等,基本用法:
  #salt “*” grains.ls            #显示所有minion的item
  #salt “*” grains.items         #显示所有minion的item值
  #salt “*” grains.item osshell   #显示os的相关信息,如果多个item,用空格分隔
  除了salt自带的items可以获取到系统信息之外,我们还可以使用shell命令,我们可以借助salt另一个强大的命令:cmd.run,假如我们需要获取minion端的内存信息
  #salt “*” cmd.run “free-m”
  如果想要在minions执行脚本程序,可以使用cmd.script命令
  #salt “*” cmd.scriptsalt://test.sh
  其中salt://test.sh是脚本的存放路径
  七、states文件
  salt states的核心是sls文件,该文件使用YAML语法定义了一些K/V的数据,sls文件存放路径在master配置文件中定义,默认为/srv/salt,如果目录不存在,则手动创建,在salt中可以通过salt://代替根路径,例如,可以通过salt://top.sls访问/srv/salt/top.sls,在states中top文件也由master配置文件定义,默认为top.sls,该文件为states的入口文件。
  一个简单的top.sls文件如下
  base:
  "*":              #匹配所有minion主机
  -  httpd        #定义state.sls的名字
  minion:           #通过分组名匹配,必须要定义match:nodegroup
  -  match:nodegroup
  -  httpd
  "os:CentOS":       #通过grains模块匹配,必须要定义match:grain
  -  match:grain
  -  httpd
  接下来我们就可以编写httpd.sls文件了(注意每行的缩进和空格,缩进为2个空格,冒号后面一个空格)
  httpd:                #ID说明,表示可以被操作的名字
  pkg:                #包管理
  - name: httpd      #包的名称
  - installed         #包的状态(installed:安装;remove:卸载)
  service:             #服务管理
  - name: httpd      #服务名称
  - running          #服务状态

  ->  - require:          #依赖关系
  - pkg: httpd
  - watch:            #监测是否发生改变
  - file:/etc/httpd/conf/httpd.conf
  /etc/httpd/conf/httpd.conf:  #定义文件
  file:
  - managed            #文件管理
  - source: salt://httpd.conf          #源文件路径
  - user: root                     #文件属主
  - group: root                   #文件属组
  - mode: 644                  #文件权限
  - backup: minion              #更改前备份
  强制执行下httpd.sls
  [root@master salt]# salt"*" state.sls httpd
  state的逻辑关系:
  include:   包含某个文件,例如,我新建一个test.sls,就可以继承httpd相关配置而不必重新编写
  match:    匹配某个模块 ,比如 之前定义top.sls时候的 match:grain match: nodegroup
  require:   依赖某个state,在运行此state前,先运行依赖的state,依赖可以有多个 比如文中的httpd模块内,相关的配置必须要先依赖httpd的安装
  watch:   在某个state变化时运行此模块,文中的配置,相关文件变化后,立即执行相应操作
  order:     优先级比require和watch低,有order指定的state比没有order指定的优先级高
  八、pillar的定义及使用
  Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。这里可以看出Pillar的一个特点,Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。另外还可以在Pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在State中引用等。
  默认情况下,master配置文件中的所有数据都添加到pillar中,且对所有minion可用,在master的配置文件中我们需要配置下,如果/srv/pillar目录不存在则手动创建,和state一样,pillar也是需要一个top.sls文件作为一个入口,用来指定对象,配置方式与state一样
  编辑top.sls文件
  base:
  "*":
  - test
  编辑test.sls文件
  test_path: "salt://httpd.conf"
  test_user: root
  test_group: root
  可以在state文件中引用pillar数据
  /etc/httpd/conf/httpd.conf:
  file:
  - managed
  - source: {{ pillar['test_path'] }}
  - user: {{ pillar['test_user'] }}
  - group: {{ pillar['test_group'] }}
  我们还可以在pillar中加入判断条件,这里就不多说了,
  更多高级用法请参考官网文档中文地址:http://docs.saltstack.cn/zh_CN/latest/

运维网声明 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-544468-1-1.html 上篇帖子: saltstack从简单到入门详解(一) 下篇帖子: SaltStack源码分析之使用logrotate模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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