自动化运维ansible,playbook中 变量的定义和使用,变量的优先级介绍

playbook-----变量

1.为什么要使用变量

简化playbook项目的一个维护,使用一个固定的字符串,表示一个不固定的值

2.ansible怎么定义变量

分为三种:
通过playbook文件中的play进行定义
通过inventory主机清单进行变量定义
通过执行playbook时使用-e参数指定变量

3.ansible怎么使用变量

  1. 通过playbook文件中的play进行定义,使用关键字vars
[root@localhost opt]# vi vars.yml 
- hosts: dbserver
  vars:
    - web_package: httpd
    - ftp_package: vsftpd
  tasks:
    - name: install http server
      yum: name={{ web_package }} state=present

    - name: install vsftpd server
      yum: name={{ ftp_package }} state=present

方法二:

[root@localhost opt]# vi vars.yml 
- hosts: dbserver
  vars:
    - web_package: httpd
    - ftp_package: vsftpd
  tasks:
    - name: install {{ web_package }} {{ ftp_package}} server
      yum:
        name:
          - "{{ web_package }}"
          - "{{ ftp_package }}"
        state: present

第二种方式,编写vars_file 变量文件,使得playbook可以应用变量文件,实现变量的自定义

在这里插入图片描述
第三种 通过inventory主机清单进行变量定义
1.在inventory主机清单中定义变量
在这里插入图片描述
2.在项目目录下通过创建目录来调用主机变量和主机组变量,
host_vars 和group_vars

在这里插入图片描述
在这里插入图片描述

默认情况下,group_vars目录中文件名与hosts清单中的组名保持一致
比如在group_vars目录中创建一个dbserver组的变量,其他组是无法使用dbsever组的变量的
系统提供了一个特殊组,all,只需要在group_vars目录下建立一个all文件 编写好变量,所有组度能够使用

在这里插入图片描述

3.主机的变量
在host_vars目录中创建一个文件,文件名与inventory清单中的主机名保持一致,如果是ip则就ip当做文件名就行了

在这里插入图片描述
4. 通过执行playbook时使用-e参数指定变量,外置传参。

在这里插入图片描述

5.ansible变量优先级

  1. -e参数指定变量,外置传参

  2. 编写vars_file 变量文件,使得playbook可以应用变量文件,实现变量的自定义

  3. 在playbook中使用关键字vars

  4. 在inventory主机清单中定义变量 host_vars

  5. 在inventory主机清单中定义变量 group_vars

  6. 在inventory主机清单中定义变量 all


版权声明:本文为Meimei_X原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。