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

saltstack学习笔记11-Renderer

时间:2016-04-20 15:16:55      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:saltstack

前面提到过使用Python语言编写state.sls文件

在saltstack系统里面支持很多方式去扩展它,renderer就是其中一种

默认saltstack的renderers是YAML+Jinja,可以通过产科master文件得知当前的renderer

目前saltstack支持很多种renderer,因为YAML Jinja Python这三种renderer应用范围比较广


前面我们编写state的时候都是使用YAML Jinja这两种,这节我们开始讲解如何使用Python语言去定义state文件


cat /src/salt/test.sls

#!py

def run():

example={}

example[‘/tmp/test‘]={

  ‘file.managed‘:[

  {‘source‘:‘salt://test‘},

  {‘mode‘:‘644‘},

  {‘user‘:‘root‘},

  {‘template‘:‘jinja‘},

  {‘group‘:‘root‘},

  {‘context‘:{

    ‘a‘: __grains__[‘os‘],

    ‘b‘: __pillar__[‘a‘],

  },

},

],

}

return example


这里文件的第一行是指定renderer,我们使用Python语言

state.sls文件的用途就是使用Jinja模板去同步/tmp/test文件

通过Python语言定义一个run函数,函数最终返回一个dict就行


通过Python语法读取并打印出了,大家就会很快熟悉了

cat /srv/salt/one.sls

/tmp/foo.conf:

  file.managed:

    - source: salt://foo.conf

    - user: root

    - group: root

    - mode: 644

    - backup: minion


>>> import yaml,json

>>> with open(‘one.sls‘,‘r‘) as f:

...     print yaml.safe_load(f)

... 

{‘/tmp/foo.conf‘: {‘file.managed‘: [{‘source‘: ‘salt://foo.conf‘}, {‘user‘: ‘root‘}, {‘group‘: ‘root‘}, {‘mode‘: 644}, {‘backup‘: ‘minion‘}]}}

>>> with open(‘one.sls‘,‘r‘) as f:

...     print json.dumps(yaml.safe_load(f),indent=4)

... 

{

    "/tmp/foo.conf": {

        "file.managed": [

            {

                "source": "salt://foo.conf"

            }, 

            {

                "user": "root"

            }, 

            {

                "group": "root"

            }, 

            {

                "mode": 644

            }, 

            {

                "backup": "minion"

            }

        ]

    }

}


通过上面两种print,相信大家能认识了这个输出与我们上面那个用Python语言定义的state。使用Python编写的state其实就是我们使用YAML编写的state,使用Python YAML模块Load出来的结果一样。关于在state里面调用Pillar Grains,在我们使用Python语言编写的时候可以直接使用__grains____pillar__这两个Python方法进行引用。而使用YAML编写的state里面引入Jinja来调取grains[‘key‘]pillar[‘key‘]不太一样。下面我们来执行使用Python语言编写的state吧


salt ‘minion1‘ state.sls one

minion1:

----------

          ID: /tmp/foo.conf

    Function: file.managed

      Result: True

     Comment: File /tmp/foo.conf is in the correct state

     Started: 11:54:37.123594

    Duration: 15.802 ms

     Changes:   


Summary

------------

Succeeded: 1

Failed:    0

------------

Total states run:     1


查看minion同步后的文件

再查看master端这里定义的pillar值

cat top.sls 

base:

  ‘*‘:

    - packages

    - services

[root@master pillar]# cat packages.sls 

zabbix:

  package-name: zabbix

  version: 2.2.4


使用Pyhton编写state跟我们使用默认的YAML Jinja的Renderer编写功能一模一样。大家可以根据自己的喜爱去选择Render就行。当然SaltStack还支持其他的Renderer,而且SaltStack还支持自定义Renderer,在后面的章节我们也会有相关的介绍。

本文出自 “八英里” 博客,谢绝转载!

saltstack学习笔记11-Renderer

标签:saltstack

原文地址:http://5921271.blog.51cto.com/5911271/1765706

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