RENDERERS salt渲染器

简单的介绍:

渲染器一般使用在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‘]}}

上例返回的是一个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. #}

注意:不是所有的渲染器都可以单独使用,或渲染器之间混合使用,输出的结果需要被另一个渲染器解析成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 {}

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

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

时间: 2024-08-05 10:00:24

RENDERERS salt渲染器的相关文章

基础渲染器Basic Rnderers

摘自:http://www.cnblogs.com/muxue/archive/2010/06/03/1751094.html 学习经验:很多人在接触新的概念的时候,总会有抵触的情绪,并且由于不了解源码的内部结构而无法了解使用.现在进行简单的分析: 裁剪可能是一个模糊的概念,除非了解图形学,简单来说就是指定一个区域,在这个区域内的任何操作都是有效的,超出限制区域所有的操作都是无效的,最基本的一点就是在渲染像素的时候,先判断该像素是否在指定区域内,发现实际上renderer_base调用的还是像素

【three.js详解之二】渲染器篇

[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRenderer DOMRenderer SVGRenderer WebGLRenderer WebGLRenderTarget WebGLRenderTargetCube WebGLShaders 可以看到three.js提供了很多的渲染方式,我们选择的当然是WebGLRenderer,但我们这里要将Canv

【行业新闻】Autodesk又添新成员:Solid Angle公司以及他的知名渲染器Arnold

熟悉传媒娱乐行业的朋友一定对Solid Angle公司和他的渲染器 Arnold 不陌生.Arnold是一款基于 Monte Carlo Ray tracing 的渲染器,很多好莱坞大厂和一些工作室都在使用.尤其是Sony Pictures Imageworks 基本上全线采用Arnold渲染.Arnold也帮助创造了很多优秀的影片,比如2006年获得奥斯卡提名的Monster House(怪兽屋), 还有诸如Cloudy with a Chance of Meatballs(美食从天而降),A

Django-RestFrameWork之分页 视图 路由 渲染器

目录 一.分页 二.视图 三.路由 四.渲染器 一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于limit offset 做分页 from rest_framework.pagination import LimitOffsetPagination 1 urlpatterns = [ 2 url(r'^admin/', admin.site.urls)

Django Restful Framework【第五篇】分页、视图、路由、渲染器

一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于limit offset 做分页 from rest_framework.pagination import LimitOffsetPagination urls.py urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^app01/(?P<v

rest_framework之渲染器

渲染器简介 什么是渲染器 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 渲染器的作用 序列化.友好的展示数据 渲染器配置 首先要在settins.py中将rest_framework组件加进去 局部配置渲染器 引入渲染器类,然后将他们作为一个列表的元素赋值给renderer_classes 配置属性,如下: from rest_framework.renderers import JSONRenderer,BrowsableAPIRenderer class Course

django restframework视图、路由系统和渲染器

视图 使用混合(mixins) 有多张表,多个类,这些类的代码除了从数据库的数据和相应的序列化类不一样,其他都一样,可以做第一步封装.原先做的封装成函数,然后调用函数,但是这里是利用类的继承,这是一种可以借鉴的方式.把逻辑部分封装成父类,代码不同的地方做配置即可.为了满足做一下配置就完成功能,这里使用了generics.GenericAPIView class UserView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.Ge

python学习第九十九天:版本控制 渲染器 分页器

版本控制 版本控制: 方法一 1 127.0.0.1/course/?version=v100000 用from rest_framework.versioning import QueryParameterVersioning 在视图类里: versioning_class=QueryParameterVersioning(**不再是列表) 在setting里配置: REST_FRAMEWORK={ 'VERSION_PARAM':'version', 'DEFAULT_VERSION':'v

rest-framework之响应器(渲染器)

一 作用 二 内置渲染器 三 局部使用 四 全局使用 五 自定义显示模版 回到目录 一 作用 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件.用户请求URL:    http://127.0.0.1:8000/test/?format=json    http://127.0.0.1:8000/test.json 回到目录 二 内置渲染器 显示json格式:JSONRenderer 访问URL: http://127.0.0.1:8000/test/?format=json