1.合法的变量
纯字符: foo
字符加下划线: foo_te
字符开头跟数字: foo12
变量需要遵守yaml语法,变量名不能出现'-'号和数字
值中出现减号‘-’,需要引号把整个字段引起来。
如:sef-test 不合法
12 不合法
2.变量存在的位置
主机清单中的变量
playbook中的变量和变量文件
playbook中变量的引用使用 {{ }}引起来。
例:
---
- hosts: "{{ host_ip }}"
remote_user: root
vars:
dest_path: /tmp
vars_files: - /vars/external_vars.yml
命令行中提供的变量,优先级最高,
例:
---
- hosts:
'
{{
hosts
}}
'
remote_user:
'
{{
user
}}
'
tasks:
ansible-playbook -e "hosts=localhost user=root"
过滤器
适用于列表的过滤器
{{ list | min }} 取列表中最小值
{{ list |max }} 取列表中最大值
{{
list1
|
unique
}} 滤重
- shell: echo
{{
string_value
|
quote
}} 给变量值加引号
{{
path
|
basename
}} /usr/local/test 拿到test
{{
path
|
splitext
}} 以点为分隔拆开字符串
{{
path
|
relpath
(
'/etc'
)
}} 替换