Ansible变量学习

  • 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"

你可能感兴趣的:(Ansible变量学习)