柔性外盐柱模块

salt-tower的Python项目详细描述


盐塔(logo)


盐塔-柔性外部支柱模块

build statusext_pillar:-tower:/path/to/tower.sls

顶部文件

tower文件类似于通常的to p.sls,但有一些重要的区别。

订购火柴

柱顶物品按外观顺序订购和加工。因此,您可以多次定义相同的匹配项。

base:-'*':-first-'*':-second
常见包括

你根本不需要定义匹配器,文件将包括所有的爪牙。您还可以使用globs来匹配多个文件,例如包括common/中的所有文件

base:-common/*
谷物

顶部文件本身使用默认渲染器进行渲染(yaml jinja)。因此,您可以使用例如grains来包含特定文件。

base:-common/*-dist/{{ grains['oscodename'] }}
嵌入式数据

您可以直接将支柱数据包含到顶层文件中,只需定义一个dict项即可。

base:-'*.a.example.org':-site:id:aname:A Site
迭代支柱处理

默认情况下,所有匹配者都是复合匹配者。由于项是按外观顺序排列的过程,因此后面的项可以修补先前定义的支柱值。上面的示例包括application.sls用于任何匹配*.a.example.org的minion,因为它定义了站点支柱值。

base:-'*.a.example.org':-site:{id:a, name:A Site}-'I@site:*':-applications
后期绑定变量替换

文件包含由字符串格式化程序预处理以延迟绑定支柱值。

base:-'*.a.example.org':-site:{id:a, env:production}-'*.a-staging.example.org':-site:{id:a, env:staging}-'I@site:*':-site/default-site/{site.id}-site/{site.id}/{site.env}/*

在上面的示例中,一个minionnode0.a-staging.example.org将包含以下文件:

site/default
site/a
site/a/staging/*
文件查找

文件名将与文件和目录匹配,例如,当包含path/to/file时,将使用第一个现有匹配:

$ pip install salt-tower
0

塔数据文件

数据文件的处理方式与通常的支柱文件类似。渲染使用盐类模板引擎,因此所有常用功能都应可用。

注入的支柱对象可用于访问先前定义的值。附加的.get满足HOD允许穿过支柱树。

$ pip install salt-tower
1

注意:使用盐['pillar.get'](工作。

塔式数据文件可以是任何支持的模板格式,包括python文件:

$ pip install salt-tower
2
包括

支柱数据文件可以包括其他支柱文件,类似于如何包括状态:

$ pip install salt-tower
3

包含的文件不能在支柱数据文件模板中使用,而是在新支柱数据之前合并到支柱中。includes可以是相对于当前文件的,其前缀是一个点:

$ pip install salt-tower
4

yamlet渲染器

yamlet渲染器是一个改进的yaml渲染器,支持加载其他文件和渲染模板:

$ pip install salt-tower
5

这将以纯文本或二进制形式从支柱目录中读取文件,并将其嵌入支柱中。这样便于将私人文件传送给仆从。

使用!include可以通过服务器上的salts渲染管道推送标记文件:

$ pip install salt-tower
6
$ pip install salt-tower
7

支柱将返回以下位置:

$ pip install salt-tower
8

这可以大大简化状态,因为它们只需要将支柱值放入配置文件并重新启动服务:

$ pip install salt-tower
9

yamlet渲染器!include宏也接受上下文变量:

ext_pillar:-tower:/path/to/tower.sls
0
ext_pillar:-tower:/path/to/tower.sls
1

文本渲染器

文本呈现程序(上面使用)将文件呈现为纯文本。它将shebang条带化,并可以选择从开头和结尾删除空白。

ext_pillar:-tower:/path/to/tower.sls
2

这将返回:

ext_pillar:-tower:/path/to/tower.sls
3

文本呈现程序通常用于将呈现的配置文件嵌入到yamlet模板中。

高级使用(非常危险)

传递给python模板引擎的pillar对象是用于处理和合并数据的实际可变dict引用。可以修改此dict,例如在python模板中,而不返回任何内容:

ext_pillar:-tower:/path/to/tower.sls
4

注1:不返回none。否则,salt将渲染模板两次,所有副作用都将应用两次。

注意2:python模板中的\uu pillar\uu对象与其他模板引擎不同。它是一个dict,不允许使用get遍历。

ext_pillar:-tower:/path/to/tower.sls
5

上面的例子演示了不同的用法。第一个示例仅在支柱包含实际的tenant:name顶级键时才起作用。第二个例子是惯用的python,但是如果键不存在,则会引发错误。第三个示例使用附加的"塔"辅助模块来遍历支柱数据。

tower支柱对象在所有渲染引擎中都可用,可用于与ext_支柱引擎的低级交互。一些可用功能是:

Tower.get(键,默认为无)

通过给定的遍历路径获取支柱值:

ext_pillar:-tower:/path/to/tower.sls
6
塔台更新(dict)

将给定的字典合并到支柱数据中。

ext_pillar:-tower:/path/to/tower.sls
7
塔合并(tgt,*对象)

将给定的词典或列表合并到第一个词典或列表中。

注意:第一个给定的字典或列表被变异并返回。

ext_pillar:-tower:/path/to/tower.sls
8
塔台格式(obj,*args,**kwargs)

使用塔柱和给定的参数以及用于解析的关键字执行递归后期绑定字符串格式。在内部使用string.formatter

ext_pillar:-tower:/path/to/tower.sls
9

格式接受字典和列表,因此可用于格式化全部或部分支柱数据,这可用于例如格式化带有额外变量的默认值:

base:-'*':-first-'*':-second
0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?