Ansible 过滤器

{# 变量定义 #}
{% set filter01 = -24.5 %}
{% set filter02 = 'abcDEGg' %}
{% set filter03 = "  abCDef G hkIL   " %}
{% set filter04 = ['physics', 'chemistry', 1997, 2000] %}

# 过滤器 使用
## 取绝对值
{{ filter01|abs() }} 或者 {{ filter01|abs }}
## 首字符大写,其他小写
{{ filter02|capitalize() }} 或者 {{ filter02|capitalize }}
## 去掉两端空格
|{{ filter03|trim() }}| 或者 |{{ filter03|trim }}|
## 返回序列的第一个
{{ filter04|first() }} 或者 {{ filter04|first }}
## 将序列变为字符串,可以指定每个元素间加入什么字符,默认空
默认情况: {{ filter04|join() }} 或者 {{ filter04|join }}
加入字符: {{ filter04|join('|') }}

# Tests 测验 使用
## 变量是否定义
未定义: {{ filter00 is defined }}
已定义: {{ filter01 is defined }}
## 变量是否是数字
{{ filter01 is number }} === {{ filter02 is number }}
## 变量是否是小写
{{ filter02 is lower }}
## 变量是否是字符串
{{ filter02 is string }}

## 变量在 if 中的判断是否已定义
{# ***** 变量已经被定义,直接判断表达式是 True或False ***** #}
{# {% if filter01 %} #}{# 如果变量没有定义,那么执行会报错 #}
{# 由于 filter00 之前未定义,因此这里定义为 false,不然执行会报错【生产中会在 playbook中定义】
{% set filter00 = false %}
{% if filter00 %}
#}
{# ***** 通过判断变量是否被定义,得到到True或False ***** #}
{# {% if filter01 is defined %} #}
{% if filter00 is defined %}
variable is defined
{% else %}
variable is undefined
{% endif %}

# range 使用
{% for i in range(1,20) %}
  server 172.16.1.{{ i }}:80
{% endfor %}

运行的结果

# 过滤器 使用
## 取绝对值
24.5 或者 24.5
## 首字符大写,其他小写
Abcdegg 或者 Abcdegg
## 去掉两端空格
|abCDef G hkIL| 或者 |abCDef G hkIL|
## 返回序列的第一个
physics 或者 physics
## 将序列变为字符串,可以指定每个元素间加入什么字符,默认空
默认情况: physicschemistry19972000 或者 physicschemistry19972000
加入字符: physics|chemistry|1997|2000

# Tests 测验 使用
## 变量是否定义
未定义: False
已定义: True
## 变量是否是数字
True === False
## 变量是否是小写
False
## 变量是否是字符串
True

## 变量在 if 中的判断是否已定义
variable is undefined

# range 使用
  server 172.16.1.1:80
  server 172.16.1.2:80
  server 172.16.1.3:80
  server 172.16.1.4:80
  server 172.16.1.5:80
  server 172.16.1.6:80
  server 172.16.1.7:80
  server 172.16.1.8:80
  server 172.16.1.9:80
  server 172.16.1.10:80
  server 172.16.1.11:80
  server 172.16.1.12:80
  server 172.16.1.13:80
  server 172.16.1.14:80
  server 172.16.1.15:80
  server 172.16.1.16:80
  server 172.16.1.17:80
  server 172.16.1.18:80
  server 172.16.1.19:80

Last updated