ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Salt-Formulas的使用

Salt-Formulas的使用

Linux操作系统 作者:张冲andy 时间:2019-08-15 17:13:34 0 删除 编辑

Saltstack自0.17.x版本开始引进Formulas的概念,旨在通过简化State和集成数据来实现State的友好管理。根据 SALT FORMULAS的官方文档 ,在完成手动添加formula目录后,formula应该提供一些默认的配置而立即可用。如果需要进一步的配置,大部分的formulas可以通过Pillar数据进行配置,可以参考每个Formula仓库的pillar.example文件查询可用的配置。

一、未集成的State

先来看下编写State的一般样例:

 

  1. apache :
  2. pkg :
  3. -  installed
  4. {%   if  grains [ 'os_family' ]   ==   'RedHat'   %}
  5. -  name :  httpd
  6. {%   elif  grains [ 'os_family' ]   ==   'Debian'   %}
  7. -  name :  apache2
  8. {%  endif  %}

乍看一下觉得这样写很正常,可是仔细想想吧,这样一来,apache的应用属性的判断逻辑写死在sls文件里,一旦需要更多的判断逻辑时这样的写法便稍显笨拙,那么,有什么好办法呢?

二、引进 Formulas

其实简单来说的话,Formulas即是建议使用Salt的用户编写State sls时统一使用map.jinjia来完成处理逻辑和判断,从而生成类似pillar的变量数据。下面,同样以apache为例讲述Salt Formulas编写逻辑。Formulas结构如下:

 

  1. .
  2. ├──   / srv / salt / apache / conf . sls
  3. ├──   / srv / salt / apache / init . sls
  4. └──   / srv / salt / apache / map . jinja

Formulas的核心便在于map.jinja的编写,如上Apache对应的map.jinja样例内容如下:

 

  1. {%  set apache  =  salt [‘ grains . filter_by ’]({
  2. Debian ’:   {
  3. server ’:   apache2 ’,
  4. service ’:   apache2 ’,
  5. conf ’:   ‘/ etc / apache2 / apache . conf ’,
  6. },
  7. RedHat ’:   {
  8. server ’:   httpd ’,
  9. service ’:   httpd ’,
  10. conf ’:   ‘/ etc / httpd / httpd . conf ’,
  11. },
  12. },  merge = salt [‘ pillar . get ’](‘ apache : lookup ’))   %}

这样一来,apache对应的主sls(init.sls)内容则可以改写为如下:

 

  1. {%   from   apache / map . jinja   import  apache  with  context  %}
  2. apache :
  3. pkg :
  4. -  installed
  5. -  name :   {{  apache . server  }}
  6. service :
  7. -  running
  8. -  name :   {{  apache . service  }}
  9. -  enable :   True

少了复杂的判断逻辑,多了变量数据的简单使用!

三、结合Pillar的Formulas

Salt Formulas 还可以通过结合Pillar实现更多的扩展。同样以上述Apache的配置为例,需要编写conf.sls来完成apache的配置,结合Formulas Map 概念之后,它可能变成如下内容:

salt-formulas-pillar

注意上述配置里,除了导入map.jinja预定义内容外,还有一行source配置使用了奇怪的salt["pillar.get"]["apache:lookup:config:tmpl"],熟悉pillar的应该不陌生,这便是结合了pillar来完成state的定义。

事先在/srv/pillar/top.sls里包含apache.sls,而后在这个pillar定义文件里添加对应内容来重写映射关系:

 

  1. apache :
  2. lookup :
  3. config :
  4. tmpl :  salt :// apache / files / redhat /
  5. server :  my_custom_apache

这样一来,便可以基于Formulas map基础上做更多的特色化配置。

四、Salt Formulas 制作

如你所见,Formulas其实应该算是State的集成和封装,事实上,Github也已经有很多的*-Formulas state出现,一个标准的*-Formulas 拥有以下结构:

 

  1. foo - formula
  2. |--  foo /
  3. |   |--  map . jinja
  4. |   |--  init . sls
  5. |   `--  bar . sls
  6. |--  CHANGELOG . rst
  7. |--  LICENSE
  8. |--  pillar . example
  9. |--  README . rst
  10. `--  VERSION

具体可参照Github上已有的Formulas样例,这里不再赘述。

参考内容:

salt官网


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31383567/viewspace-2653828/,如需转载,请注明出处,否则将追究法律责任。

下一篇: python 详解re模块
请登录后发表评论 登录
全部评论
专注数据库领域,熟悉oracle、mysql、redis、mongodb等相关技术

注册时间:2016-08-11

  • 博文量
    574
  • 访问量
    186044