playbook中变量的用法


1.以下变量为setup模块提供的变量,因此不需要赋值,可直接调用<但不管是使用该变量还是使用自定义的变量都要加上{{ }} 双花括号才能识别>。

ansible_nodename
ansible_hostname
ansible_domain
ansible_memtotal_mb
ansible_memory_mb
ansible_memfree_mb
ansible_os_family
ansible_distribution_major_version
ansible_distribution_version
ansible_processor_vcpus
ansible_all_ipv4_addresses
ansible_architecture
ansible_processor*

2.第一种用法:playbook中自定义变量赋值的方法则使用 ansible playbook -e 变量名=值 的方式进行赋值。

 

 

<例如:安装包时可在- name 任务名处引用>

<这样的话,执行安装包的任务时就能够将安装的包显示出来>

ansible-playbook -e pack=gcc install_gcc.yml

 

 
3.第二种方法:可在playbook中通过vars定义变量并且进行赋值。<与hosts同级,作用全局>

<可以看到这种方法无需再ansible-playbook 命令再对变量赋值就可执行任务>

4.第三种方法:可以将事先已经定义好的常用变量放入一个文件中<格式为:yml >,通过 vars_files 去调用已经定义好的变量文件。

5.playbook 使用迭代 with_items(loop) 迭代:当有需要重复性执行的任务时,可以使用迭代机制对迭代项的引用,固定变量名为"item"要在task中使用with_items给定要迭代的元素列表。注意: ansible2.5版本后,可以用loop代替with_items。
<作用:第一个with_items为变量items创建数组、第二个with_items则为数组的值添加字典,根据逐行处理的原则,同一行的字典相关联,因此即便数组多行字典名相同也不受干扰。>

 

tasks:
    - name: add some groups
      group: name={{ item }} state=present
      with_items:
        - nginx
        - mysql
        - apache
    - name: add some users
      user: name={{ item.name }} group={{ item.group }} state=present
      with_items:
        - { name: 'nginx', group: 'nginx' }
        - { name: 'mysql', group: 'mysql' }
        - { name: 'apache', group: 'apache' }

 

总结:第一种方法优先级高于第二种方法,因此使用第一种方法在命令行可以覆盖第二种方法在playbook中的定义变量值。

 

 

 

 

 

 

 




 

 

 

 

 

 

 




posted on 2021-05-31 14:48  1251618589  阅读(3)  评论(0编辑  收藏  举报

导航