过滤器插件
过滤器插件用于操作数据。使用正确的过滤器,您可以提取特定值、转换数据类型和格式、执行数学计算、拆分和连接字符串、插入日期和时间等等。Ansible 使用 Jinja2 附带的 标准过滤器,并添加了一些专门的过滤器插件。您可以创建自定义 Ansible 过滤器作为插件。
启用过滤器插件
您可以通过将自定义过滤器插件放入与您的 playbook 相邻的 filter_plugins
目录中、角色内部,或者将其放入在 ansible.cfg 中配置的过滤器插件目录源之一中来添加它。
使用过滤器插件
您可以在 Ansible 中可以使用模板的任何地方使用过滤器:在 playbook 中、在变量文件中,或者在 template 模块的 Jinja2 模板中。有关使用过滤器插件的更多信息,请参阅使用过滤器操作数据。过滤器可以返回任何类型的数据,但是如果您想始终返回布尔值(true
或 false
),则应该查看测试。
vars:
yaml_string: "{{ some_variable|to_yaml }}"
过滤器是在 Ansible 中操作数据的首选方式,您可以识别过滤器,因为它通常以 |
开头,其左侧的表达式是过滤器的第一个输入。其他参数可以像传递给大多数编程函数一样传递到过滤器本身。这些参数可以是 位置参数
(按顺序传递)或 命名参数
(以键=值对传递)。当同时传递两种类型时,位置参数应放在前面。
passing_positional: {{ (x == 32) | ternary('x is 32', 'x is not 32') }}
passing_extra_named_parameters: {{ some_variable | to_yaml(indent=8, width=1337) }}
passing_both: {{ some_variable| ternary('true value', 'false value', none_val='NULL') }}
在文档中,过滤器始终会有一个 C(_input) 选项,该选项对应于 c(|) 左侧的表达式。文档中的 C(位置:) 字段将显示哪些选项是位置的以及它们的必需顺序。
插件列表
您可以使用 ansible-doc -t filter -l
查看可用插件的列表。使用 ansible-doc -t filter <插件名称>
查看特定于插件的文档和示例。