未加星标

在salt state中使用grains

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二04 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

作者:杨冬 欢迎转载,也请保留这段声明。谢谢!

出处: https://andyyoung01.github.io/ 或 http://andyyoung01.16mb.com/

在上篇中,我们了解salt中的grains,知道了grains是存储在minions上的关于系统属性的一些信息。本篇就来在salt的state中使用grains提供的信息,同时了解一下jinja模板的使用。

本篇的环境继续使用“salt的环境、pillar和states”文章中创建的环境。

首先,可以使用grains.items得到所有的grains数据:

[[email protected] ~]# salt \* grains.items ...

此命令使用了通配符*作为minion的目标,表示所有的minion,由于我们目前只配置了一个minion,所以此命令会返回该minion下的所有grains,由于内容很多,省略了输出。

下面我们关心grains中的两个后面要使用到的数据,使用如下命令得到:

[[email protected] ~]# salt \* grains.item ip_interfaces fqdn minion: ---------- fqdn: centos7-B ip_interfaces: ---------- eno16777736: - 192.168.71.168 - fe80::20c:29ff:fe94:7720 lo: - 127.0.0.1 - ::1

接下来就该创建state文件了。这个state的目的是根据minion上grains的信息来管理针对于此minion的配置文件。接下来就来看一下具体的步骤:

要创建的state的名称为appenv,要在staging的环境下创建。所以进入staging环境的基目录,创建appenv文件夹,在该文件夹内创建init.sls,该文件内包含state的具体内容。还是在staging环境的基目录下,创建另外一个名为files的文件夹,在此文件夹内创建文件environment。创建完毕后的文件夹结构如下:

[[email protected] staging]# tree . └── appenv ├── files │ └── environment └── init.sls 2 directories, 2 files

编辑init.sls文件和environment文件,使其具有以下内容:

init.sls

appenv_file: file.managed: - name: /etc/environment - source: salt://appenv/files/environment - template: jinja - mode: 644 - context: ipaddress: {{ grains['ip_interfaces']['eno16777736'][0] }} hostname: {{ grains['fqdn'] }}

environment

1

2

primary_interface: {{ ipaddress }} node_name: {{ hostname }}

创建完成后,测试一下这个state的执行能否成功:

[[email protected] appenv]# salt 'minion' state.sls appenv saltenv=staging test=True minion: ---------- ID: appenv_file Function: file.managed Name: /etc/environment Result: None Comment: The file /etc/environment is set to be changed Started: 18:23:54.284163 Duration: 119.162 ms Changes: ---------- diff: --- +++ @@ -0,0 +1,2 @@ +primary_interface: 192.168.71.168 +node_name: centos7-B Summary ------------ Succeeded: 1 (unchanged=1, changed=1) Failed: 0 ------------ Total states run: 1

注意上述命令的最后一个参数为test=True,它可以测试state而不实际将其应用到minion上。通过测试运行的输出,是想要的结果,可以实际应用此state。这次执行命令时将test=True参数去掉:

[[email protected] appenv]# salt 'minion' state.sls appenv saltenv=staging ...

在minion上查看文件的内容:

[[email protected] ~]$ cat /etc/environment primary_interface: 192.168.71.168 node_name: centos7-B

可见,命令执行后在minion上生成了environment文件,而且文件的内容是由master上的模板environment和名为appenv的state共同生成的。模板实际使用的是python中的jinja模板引擎。

回顾一下此文件生成的整个过程:文件是从master上复制到minion上,在复制的同时,替换了environment文件中由双大括号包含的部分;双大括号内的内容由state文件context部分下的变量提供。

本篇学习了如何在state中使用grains,并且应用了jinja的模板。下篇看一下在state中怎样使用条件、循环及变量。

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: 数据Python变量
分页:12
转载请注明
本文标题:在salt state中使用grains
本站链接:http://www.codesec.net/view/483941.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(25)