- ansible变量的分类
variables defined in inventory
variables defined in playbook
variables defined in commandline
registered variables
variables defined from included files and roles
using variables:jinja2
facts
- 资源清单中定义
[webservers]
app1_server http_port=80
[webservers:vars]
some_server=xxx
/etc/ansible/hosts_vars/app1_server
/etc/ansible/group_vars/webservers
/etc/ansible/group_vars/webservers定义主机组变量文件
/etc/ansible/hosts_vars/app1_server定义app1_server可以使用的变量文件
文件名称需要与资源名称一致
- playbook中的变量
vars
vars_files
vars_prompt
- 命令行中定义变量
command_vars.yml 文件内容
-hosts:mfs_mode
user:"{{ uservar }}"
tasks:
- shell:echo "{{ echovar }}"
ansible-playbook command_vars.yml -e 'uservar="root" echovar="hello"'
ansible-playbook command_vars.yml -e '{"uservar":"root" ,"echovar":"hello"}'
ansible-playbook command_vars.yml -e '@test.json'
cat test.json
uservar:root
echovar:hello
- register vars
-hosts:mfs_mode
tasks:
- shell:echo "5"
register:result
ignore_errors:True
- debug:msg="it failed"
when:result|failed
- debug:msg="{{ result.stdout }}"
- shell:/usr/bin/bar
when:result.rc==5
result保存了执行echo "5"命令的结果
- roles和include不进行介绍
- 本地变量
可以通过在远程主机上创建/etc/ansible/facts.d/目录,在里面添加用户保存本地自定义变量的文件,文件件需要以.fact结尾
通过setup模块和filter=ansible_local可以获取本地定义的变量
ansible hostname -m setup -a "filter=ansible_local"
网友评论