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

[经验分享] Pillar Walkthrough

[复制链接]
发表于 2015-11-26 11:37:05 | 显示全部楼层 |阅读模式
  转自:http://wiki.saltstack.cn/topics/tutorials/pillar
  



  • 转载地址: http://blog.csdn.net/qingchn/article/details/8753542

  • 译者:葱油拌面

  • 官方原文:http://docs.saltstack.com/topics/tutorials/pillar.html
  




Note
阅读这份手册之前,假定读者已经完成了Salt Stack基础 手册的阅读。



Pillar接口是Salt众多组件中最重要的部署组件,Pillar被用来为特别的从服务器生成特定数据的接口。在Pillar中生成的数据提供给所有的Salt组件并且被用来一下目的:


高度敏感数据



  • 所有通过pillar传输的信息能够保证被提交给目标主机,这使得Pillar引擎在Salt中被用来管理安全的信息,如,密码的Key和密码口令等。


从服务器配置



  • 从服务模块如远程执行模块,状态,反馈信息都可以使用存储在pillar中的数据来配置。


变量



  • 那些需要分配给特定的从服务器或者群组的变量可以在pillar中定义并且能够在SLS配置模板和稳重中使用。


任意数据



  • Pillar能够包含任意基本的数据结构,如,列表数据,或者k/v存储。可以让数据容易在SLS文档中使用。


因此,Pillar是在使用Slat的过程中最重要系统之一,这篇教程设计用来在几分钟之内编写一个简单的pillar文件,然后运用这个Pillar 使它的数据是可用的在pillar文件中。





设置Pillar




默认情况下,Pillar 已经运行在了Salt系统中,在从服务器上的Pillar的数据能够通过下面的命令查看到:




切换行号显示
   1 # salt '*' pillar.data  
   2



默认情况下,主服务器的配置文件内容装载在pillar中,对所用的从服务器来说,通过配置主服务器的配置文件来使全局的从服务器生效。


Pillar是类似内置的state 文件,它有sls文件组成且有一个视图文件,就像state tree(翻译为,state 文件)。相对于state文件,Pillar 存储在Slat主服务器上的不同目录。默认的目录是/srv/pillar



Note
Pillar的目录能够通过修改主服务配置文件中的pillar_roots选项进行更改。



在配置Pillar之前,需要创建/srv/pillar目录。


切换行号显示
   1 # mkdir /srv/pillar  
   2



一个简单的视图文件,格式类似state,需要创建,其内容如下:


/srv/pillar/top.sls


base:
  '*':
    - data


视图文件包含data.sls文件,这个文件在所有的从服务器上生效,/srv/pillar/data.sls文件如下:


/srv/pillar/data.sls


info: some data  


至此,保存该文件,从服务器上的pillars信息将被更新:


切换行号显示
   1 # salt '*' pillar.data
   2



info关键字的信息会出现在返回的pillar数据中





更多复杂的数据




Pillar文件是SLS文件,像states,但是不像sates文件,他们不需要定义格式,数据可以是任意的,下面的例子中,通过UID设置用户数据


/srv/pillar/usrs/init.sls


users:
  thatch: 1000
  shouse: 1001
  utahdave: 1002
  redbeard: 1003





Note
相同的目录中查找 states文件在Pilla目录中,因此 users/init.sls文件能够在视图文件中被引用。



视图文件需要更新一下以引用这个sls文件:


/srv/pillar/top.sls


base:
  '*':
    - data
    - users


现在的话,这些数据对从服务器来说是可用的了。使用Jinjia 在state文件中引用pillar 中的数据。


/srv/salt/users/init.sls


{% for user, uid in pillar.get('users', {}).items() %}
{{user}}:
  user.present:
    - uid: {{uid}}
{% endfor %}


以上可以把users 安全的定义在一个pillar中,并且user 数据可以应用在sls文件中。





Pillar作为states 的参数




Pillar最重要的一个抽象功能就是能够作为states的参数。而不是定义宏或者函数,在states文件内容中,可以自由地参数化相对于所有的从服务器的pillar.


以上的话可以让Salt变的更加灵活,这意味着一些简单的sls格式的文件能够用作结构的参数而不需要重构state文件树。


一个简单的例子是根据不同的Linux 分发版本引导安装不同的软件包在pillar中定义。


/srv/pillar/pkg/init.sls


pkgs:
  {% if grains['os_family'] == 'Debian' %}
  apache: httpd
  vim: vim-enhanced
  {% elif grains['os_family'] == 'RedHat' %}
  apache: apache2
  vim: vim
  {% elif grains['os'] == 'Arch' %}
  apache: apache
  vim: vim
  {% endif %}


这个新的pkg sls需要增加到视图文件中:


/srv/pillar/top.sls


base:
  '*':
    - data
    - users
    - pkg


至此,从服务器将会根据各自的操作系统自动对应在pillar 只内定义的软件安装包,所以sls文件可以安全的引用:


/srv/salt/apache/init.sls


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


更或者,假如pillar不可以用,也可以这样设置缺省值:



Note
在这个例子中使用的pillar.get 函数是在Salt 0.14.0版本中增加的。



/srv/salt/apache/init.sls


apache:
  pkg.installed:
    - name: {{ salt['pillar.get']('pkgs:apache', 'httpd') }}


在上面的例子中,假如 pillar 的变量pillar['pkgs'] ['apache'] 在从服务器上没有被设置,那么默认的'httpd'将会被使用。





Pillar使简单的states变的灵活




Pillar其中一个设计目标是使简单的sls格式变得易用和灵活,而不是需要复杂和重构state文件。简单的格式:


/srv/salt/edit/vim.sls


vim:
  pkg:
    - installed

/etc/vimrc:
  file.managed:
    - source: salt://edit/vimrc
    - mode: 644
    - user: root
    - group: root
    - require:
      - pkg: vim


可以很容易地转换成一个强大的、参数化公式:


/srv/salt/edit/vim.sls


vim:
  pkg:
    - installed
    - name: {{ pillar['pkgs']['vim'] }}

/etc/vimrc:
  file.managed:
    - source: {{ pillar['vimrc'] }}
    - mode: 644
    - user: root
    - group: root
    - require:
      - pkg: vim


vimrc的源位置可以通过pillar 改变:


/srv/pillar/edit/vim.sls


{% if grain['id'].startswith('dev') %}
vimrc: salt://edit/dev_vimrc
{% elif grain['id'].startswith('qa') %}
vimrc: salt://edit/qa_vimrc
{% else %}
vimrc: salt://edit/vimrc
{% endif %}


确保正确的vimrc发送正确的从服务器上。





更多关于Pillar




Pillar的数据创建在Salt主服务器上并且安全的分发到从服务器上。Salt当定义pillar的时候 并不局限于pillar sls 文件,可以从其他额外的源取得数据。对于那些把基础结构信息存储在其他的地方会很有用。


参考信息和其他外部Pillar接口可以 在Salt 文档中找到: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-143847-1-1.html 上篇帖子: python第三方库系列之二十--批量机器配置管理库SaltStack 下篇帖子: Saltstack介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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