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

[经验分享] saltstack的pillar和state

[复制链接]

尚未签到

发表于 2018-1-3 19:00:04 | 显示全部楼层 |阅读模式
  一、pillar的定义
  Saltstack默认将主控端配置文件中的所有数据都定义到pillar中,而且对所有被控主机开放,可以通过修改/etc/salt/master配置中的pillar_opts:Ture来开启这项功能
  开启后可以运行 salt '*' pillar.data 来查看效果(显示太多就不截图了)
  pillar支持在sls文件中定义数据,格式需符合YAML规范,和Saltstack的state组件十分相似,两者的入口文件都是top.sls,当不用将两者混淆
  修改主配置文件/etc/salt/master中的pillar_rooots参数,定义pillar的主目录:
  

pillar_roots:  base:
- /srv/pillar  

  创建 pillar 目录
  

install -d /srv/pillar  

  进入pillar 目录创建入口文件 top.sls(*代表任意主机)
  

base:'*':- data  

  创建data.sls
  

flow:  maxconn:
30000  maxmem: 6G
  

  然后执行salt '*' pillar.data查看,pillar数据多出刚才加的数据(如果没有。可以执行salt '*' saltutil.refresh_pillar来刷新被控主机pillar数据)
DSC0000.png

  二、state定义
  state是Saltstack最核心的功能,通过预先定制好的sls文件对被控主机进行状态管理,支持包括程序包(pkg)、文件(file)、网络配置(network)、系统服务(service)、系统用户(user)等
  state是通过sls文件进行描述的,支持YMAL语法,例:
  

apache:  

pkg:  

- installed  

service.running:  

- name: apache  

- require:  

- pkg: apache  

  1行表示定义的state名称
  2、4行表示state声明开始,使用了pkg和service两个状态对象,pkg使用系统本地的软件包管理器(yum或apt)管理将要安装的软件,service管理系统守护进程
  3、5行表示要执行的方法,这些方法定义了apache软件包和服务目标的状态,这里要求软件包处于已安装状态,服务必须运行,如没有则会被安装然后启动
  6行的关键字require,它确保了apache服务只有在成功安装软件包后才会启动
  top.sls中引用二级配置有两种方式:一种是直接引用如上面的data.sls。另一种是先创建目录,在引用目录中的init.sls
  下面结合pillar和state来实现一个根据不同操作系统类型部署apache环境的任务
  1、定义pillar
  /srv/pillar/top.sls
  

base:'*':- apache  

  创建apache目录,进入创建init.sls
  /srv/pillar/apache/init.sls
  

pkgs:  
{
% if grains['os_family'] == 'RedHat' %}  apache: httpd
  {
% elif grains['os_family'] == 'Debian' %}  apache: apache2
  
{
% endif %}  

  测试salt '*' pillar.data pkgs,放回添加的结果说明配置已经生效
  2、定义state
  /srv/salt/top.sls
  

base:'*':-  apache  

  引用刚才添加的数据
  /srv/salt/apache/init.sls
  

apache:  pkg:
- installed- name: {{ pillar['pkgs']['apache'] }}  service.running:
- name: {{ pillar['pkgs']['apache'] }}- require:- pkg: {{ pillar['pkgs']['apache'] }}  

  执行state
  

salt '*' state.highstate  

  它会根据操作系统的不同去安装apache
  ubuntu
DSC0001.png

  centos
DSC0002.png

  参考资料:python自动化运维技术与最佳实践

运维网声明 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-431273-1-1.html 上篇帖子: saltstack 自动化运维安装 下篇帖子: 关于saltstack的job问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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