牛下载:绿色软件官方软件免费下载基地!
所在位置:首页 > 新闻资讯 > SaltStack配置管理(5) – JINJA

SaltStack配置管理(5) – JINJA

发布时间:2020-04-16 14:55:56来源:阅读:

salt引入了Jinja2模板引擎,可用于salt state文件,salt pillar文件和其它由salt管理的文件。
salt允许你使用Jinja访问minion配置值,grains和salt pillar数据,和调用salt执行模块。这些是除了Jinja提供的标准控制结构和Python数据类型之外的功能。

条件语句

Jinja最常用的功能是在salt pillar文件中插入控制声明语句。
由于许多发行版本有不同的包名称,你可以使用os grain来设置平台特定的路径,软件包名称和其它值。
例如:

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

如你所见,salt grains跟salt pillar的数据字典都是字典。这个示例检查salt grain值来设置操作系统特定的salt pillar键值。
保存上面的代码到saltstack/pillar/common.sls文件,然后运行如下命令来刷新和列出每一个minions的salt pillar值:

salt '*' saltutil.refresh_pillar
salt '*' pillar.items

设置这些值后,当应用如下salt state:

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

httpd软件包安装在RedHat,apache2安装在Debian系统。

循环语句

在salt state中创建多个用户和目录使用循环语句会很方便。

{% for usr in ['moe','larry','curly'] %}
{{ usr }}:
  user.present
{% endfor %}
{% for DIR in ['/dir1','/dir2','/dir3'] %}
{{ DIR }}:
  file.directory:
    - user: root
    - group: root
    - mode: 774
{% endfor %}

一般来说,你应该努力保持你的salt state足够简单。如果你发现你必须编写复杂的Jinja才能实现功能,你应该考虑把一个任务分割为多个salt state文件,或者编写一个自定义的salt执行模块。

使用salt获取数据

你可以在Jinja中调用salt执行函数来实时获取数据。

{{ salt.cmd.run('whoami') }}
反对
收藏
  • 热门资讯
  • 最新资讯
  • 应用排行榜
  • 游戏排行榜