本文主要是介绍saltstack中的grains和jinja使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Grains是SaltStack的一个组件,存放在SaltStack的minion端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当
minion重启时才会进行数据的更新。
由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
信息查询,可用作CMDB。
在target中使用,匹配minion。
在state系统中使用,配置管理模块。
方法1
在/etc/salt/minion中定义:
#vim /etc/salt/minion
grains:
roles:
- apache
- httpd
重启salt-minion,否则数据不会更新:
#systemctl restart salt-minion
方法2
在/etc/salt/grains中定义:
#vim /etc/salt/grains:
同步数据:
#salt server3 saltutil.sync_grains
查询自定义项:
#salt ‘*’ grains.item roles
方法3
编写grains模块
在salt-master端创建_grains目录:
#mkdir /srv/salt/_grains
#vim /srv/salt/_grains/my_grain.py
def my_grain():
grains = {}
grains[‘salt’] = ‘stack’
grains[‘hello’] = ‘world’
return grains
#salt ‘*’ saltutil.sync_grains
#同步grains到minion端
grains匹配运用
在target中匹配minion:
#salt -G roles:apache test.ping
server3部署nginx:
发送tar包
在top文件中匹配:
#vim /srv/salt/top.sls
高度匹配执行
结果
源码安装nginx
安装nginx
执行
在master主机的目录下生成nginx的配置文件和开启服务的文件
改init.sls文件,安装服务,创建文件,开启服务
测试
使用nginx用户
加入创建用户
执行测试
把安装nginx和茶开启服务分开,需要安装就apache.install,需要安装并开启就直接推apache
inja模板简介
Jinja是一种基于python的模板引擎,在SLS文件里可以直接使用jinja
通过jinja模板可以为不同服务器定义各自的变量。
模板来做一些操作。
两种分隔符: {% … %} 和 {{ … }},前者用于执行诸如 for 循环 或
赋值的语句,后者把表达式的结果打印到模板上。
调用,生成文件
Jinja最基本的用法是使用控制结构包装条件:
#vim /srv/salt/test.sls
/mnt/testfile:
file.append:
{% if grains[‘fqdn’] == ‘server2’ %}
- text: server2
{% elif grains[‘fqdn’] == ‘server3’ %} - text: server3
{% endif %}
jinja的使用
Jinja在普通文件的使用:
#vim /srv/salt/apache.sls
/etc/httpd/conf/httpd.conf:
file.managed:
-
source: salt://httpd.conf
-
template: jinja
-
context:
NAME: server2
vim /srv/salt/files/index.html
执行
master主机的文件和调用文件
检测
改master主机的http.conf文件,调用
加入jinja
执行
查看结果
这篇关于saltstack中的grains和jinja使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!