码迷,mamicode.com
首页 > 其他好文 > 详细

RENDERERS salt渲染器

时间:2017-08-29 14:14:12      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:string   ota   ati   环境配置   多个   read   文件解析   文件中   联合   

简单的介绍:

渲染器一般使用在sls文件中,将指定的模板形式数据翻译成python数据类型,供salt使用。
默认情况下sls文件呈现的是jinja模板的样子,然后模板会被解析成YAML格式的数据,salt支持多种模板。
目前模板的支持情况如下:
  Jinja + YAML, Mako + YAML, Wempy + YAML, Jinja + json, Mako + json and Wempy + json
Renderers可以被设计任何模板类型,只需要把这些文件解析成Python结构的数据
yaml的基本说明参见:https://docs.saltstack.com/en/2016.11/topics/yaml/index.html#yaml


MULTIPLE RENDERERS

使用渲染器类型的配置项:
  #renderer: yaml_jinja
使用多个渲染器的示例,一般使用python:

技术分享
1 #!py    #指示使用py renderer
2 def run():
3     ‘‘‘
4     Install the python-mako package
5     ‘‘‘
6     return {‘include‘: [‘python‘],
7             ‘python-mako‘: {‘pkg‘: [‘installed‘]}}
View Code

上例返回的是一个python的数据结构,可作为yaml解析后的结果使用


 

COMPOSING RENDERERS

渲染器的结构和组成,salt可支持以下的渲染结构:

yaml
  i.e, just YAML, no templating. #无模板方式
mako | yaml
  输入使用mako renderer渲染,输出到yaml renderer进行处理
jinja | mako | yaml
  使用jinja | mako 进行联合渲染,再输出到yaml renderer进行处理

示例:

技术分享
 1 #!jinja|mako|yaml        #多渲染器使用|分隔
 2 
 3 An_Example:
 4   cmd.run:
 5     - name: |
 6         echo "Using Salt ${grains[‘saltversion‘]}" \    #mako部分,$为标识符
 7              "from path {{grains[‘saltpath‘]}}."        #jinja部分,{{}}为标识符
 8     - cwd: /
 9 
10 <%doc> ${...} is Mako‘s notation, and so is this comment. </%doc>    #注释文档
11 {#     Similarly, {{...}} is Jinja‘s notation, and so is this comment. #}
View Code

注意:不是所有的渲染器都可以单独使用,或渲染器之间混合使用,输出的结果需要被另一个渲染器解析成highstate数据结构,提供给salt,需要了解渲染器输入和输出的关系,以及最后需要的数据格式是什么。


WRITING RENDERERS

使用自己写的RENDERERS,意味着你需要将这个RENDERERS分发到minion端,minion端再利用自定义的渲染器对配置进行渲染,grains就是一个例子,利用minion端的本地变量对配置内容做渲染处理。

master端的renderers环境配置:
file_roots中添加_renderers目录,目录里面定义渲染器

在执行以下命令时会触发_renderers的渲染配置:
state.apply
saltutil.sync_renderers
saltutil.sync_all


EXAMPLES

一个renderers的示例:

技术分享
 1 import yaml
 2 from salt.utils.yamlloader import SaltYamlSafeLoader
 3 def render(yaml_data, saltenv=‘‘, sls=‘‘, **kws):
 4     if not isinstance(yaml_data, basestring):
 5         yaml_data = yaml_data.read()
 6     data = yaml.load(
 7         yaml_data,
 8         Loader=SaltYamlSafeLoader
 9     )
10     return data if data else {}
View Code

更多示例参见:https://github.com/saltstack/salt/blob/develop/salt/renderers

关于支持的渲染器的相关模块参见FULL LIST OF RENDERERS部分

 

RENDERERS salt渲染器

标签:string   ota   ati   环境配置   多个   read   文件解析   文件中   联合   

原文地址:http://www.cnblogs.com/solitarywares/p/7447503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!