1.inventory file中定义的变量 

    192.168.116.129 key=129                                  (--优先级大)

    [nginx]

    192.168.116.129

    [nginx:vars]

    ansible_python_interpreter=/usr/lib64/python2.7

    key=130                                                              (--优先级小)

        编写一个playbook文件来调用

    ---  

     - hosts: nginx    

       gather_facts: False          tasks:         -name: diplay Host Variable from hostfile            

                    debug: msg="The {{ inventory_hostname }} Vaule is {{ key }}"

2./etc/ansible/目录下,我们还可以使用在该目录下新建host_vars和group_vars目录来针对主机和主机组定义变量(优先级高于inventory,会覆盖inventory file里的变量)

    head host_vars/*

    ==> host_vars/192.168.116.129 <==

    key: 192.168.116.129

    ==> host_vars/192.168.116.130 <==

            key: 192.168.116.130


3.通过ansible-playbook命令行传入(优先级高于前两个)

   3.1 命令行传入变量

    ansible-playbook /root/playbook/nginx-116.yaml  -e "key=666"


   3.2命令行指定文件的方式传入变量,变量文件的内容支持YAML和JSON两种格式:

        # cat var.yaml

        key: YAML

        # cat var.json

        {"key": "888json"}

   ansible-playbook /root/playbook/nginx-116.yaml -e "@var.json"


4.在playbook文件内使用vars和vars_file

    ---  

        - hosts: all    

          gather_facts: False    vars:        key: Ansible

    

    ---  - hosts: all    

        gather_facts: False      vars_files:        - var.yaml

 

5.使用register内的变量

    Ansible playbook内task之间还可以互相传递数据,比如我们总共有两个tasks,其中第2个task是否执行是需要判断第1个task运行后的结果,这个时候我们就得在task之间传递数据,需要把第1个task    执行的结果传递给第2个task.

---  - hosts: all    gather_facts: False    

   tasks:                    - name: register variable            shell: hostname            register: info          - name: display variable            debug: msg="The varibale is {{ info }}"

        {{ info['stdout'] }}"只想显示的信息则只需要指定key就行6.

6.roles

当给一个主机应用角色的时候可以传递变量,然后在角色内使用这些变量,示例如下:

- hosts: webservers
 roles:
   - common
   - { role: foo_app_instance, dir: '/opt/a',  port: 5000 }

7.facts变量,可以通过 ansible hostname -m setup来获取。当然你也可以通过安装拓展包来获取更多的系统变量信息。例如拓展facter和ohai 

8.vars_prompt交互方式传值