Pillar Walkthrough

2023-11-20 21:08
文章标签 pillar walkthrough

本文主要是介绍Pillar Walkthrough,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自: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


这篇关于Pillar Walkthrough的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397439

相关文章

saltstack中grains和pillar的用法

SaltStack_Grains Grains 1.什么是grains:(静态数据,minion启动时采集) Grains Static bits of information that a minioncollects about the system when the minion first starts. The grains interface is made available t

saltstack Pillar

Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据 定义Pillar数据 master配置文件中定义 Pillar使用与State相似的SLS文件。Pillar文件放在master配置文件中pillar_roots定义的目录下 vim /etc/salt/master......pillar_roots

No.171-HackTheBox-Linux-Rope-Walkthrough渗透学习

** HackTheBox-Linux-Rope-Walkthrough ** ¬ 靶机地址:https://www.hackthebox.eu/home/machines/profile/200 靶机难度:疯狂(5.0/10) 靶机发布日期:2020年3月1日 靶机描述: Rope is an insane difficulty Linux machine covering differen

No.101-HackTheBox-Linux-Sneaky-Walkthrough渗透学习

** HackTheBox-Linux-Sneaky-Walkthrough ** 靶机地址:https://www.hackthebox.eu/home/machines/profile/19 靶机难度:中级(5.0/10) 靶机发布日期:2017年10月29日 靶机描述: Sneaky, while not requiring many steps to complete, can be

slim_walkthrough测试

目录 环境测试 模块导入 使用TF-Slim创建一个多层感知器 打印变量名 产生批量训练数据 定义张量生成函数 创建模型并训练 添加多种损失函数 导入模型并进行预测 进行模型评估 使用TF-Slim进行基于17flowers数据集的分类器训练 下载数据集 随机显示数据集中的图片 定义CNN网络 将模型应用到一些随机选取的图片 使用创建的CNN网络进行训练 模型训练

No.78-HackTheBox-windows-Ethereal-Walkthrough渗透学习

** HackTheBox-windows-Ethereal-Walkthrough ** 靶机地址:https://www.hackthebox.eu/home/machines/profile/157 靶机难度:中上级(6.5/10) 靶机发布日期:2019年2月30日 靶机描述: Ethereal is an “insane” difficulty machine, which sho

SAP UI5 walkthrough step8 Translatable Texts

在这个章节,我们会将一些文本常量独立出一个资源文件 这样的话,可以方便这些文本常量被翻译成任意的语言 这种国际化的操作,我们一般命名为i18n 新建一个文件i18n.properties webapp/i18n/i18n.properties (New) showHelloButtonText=Say HellohelloMsg=Hello {0} 接着我们将这些常量,绑定到Co

SAP UI5 walkthrough step5 Controllers

在这个章节,我们要做的是,将之前的text文本展示为一个按钮,并将声明绑定在点击按钮事件。 因为改的是外观,所以我们修改的是view.XML webapp/view/App.view.xml <mvc:ViewcontrollerName="ui5.walkthrough.controller.App"xmlns="sap.m"xmlns:mvc="sap.ui.core.mvc"><But

SAP UI5 walkthrough step7 JSON Model

这个章节,帮助我们理解MVC架构中的M  我们将会在APP中新增一个输入框,并将输入的值绑定到model,然后将其作为描述,直接显示在输入框的右边 首先修改App.controllers.js webapp/controller/App.controller.js sap.ui.define(["sap/ui/core/mvc/Controller","sap/m/MessageToast

SAP UI5 walkthrough step10 Descriptor for Applications

在这一步,我们将会把所有的应用相关的描述性的文件独立放到manifest.json 新建一个manifest.json文件 webapp/manifest.json (New) {"_version": "1.58.0","sap.app": {"id": "ui5.walkthrough","i18n": "i18n/i18n.properties","title": "{{appTitl