避免重复的代码,方便维护,减少维护的成本
1.通过命令行进行变量定义 2.在play文件中进行变量定义 - vars - vars_files 3.通过inventory主机信息文件中进行变量 - host文件 - host_vars目录 - group_vars目录
命令行>play>inventory 命令行>vars_files(play)>vars(play)>host_vars(inventory)>group_vars(inventory)>hosts文件(inventory)
vars变量
# 在play中用vars定义变量 - hosts: webs vars: user_group: zh id: '888' pkg: - nginx - php - mariadb-server tasks: - name: 创建{{ user_group }}组 group: name: "{{ user_group }}" gid: "{{ id }}" - name: 创建{{ user_group }}用户 user: name: "{{ user_group }}" uid: "{{ id }}" group: "{{ id }}" shell: /sbin/nologin create_home: False - name: 安装nginx php mysql yum: name: "{{ pkg }}" state: present
vars_files变量
- hosts: webs vars_files: ./zh_var.yml tasks: - name: 创建{{ user_group }}组 group: name: "{{ user_group }}" gid: "{{ id }}" - name: 创建{{ user_group }}用户 user: name: "{{ user_group }}" uid: "{{ id }}" group: "{{ id }}" shell: /sbin/nologin create_home: False - name: 安装nginx php mysql yum: name: "{{ pkg }}" state: present # zh_var.yum user_group: zh2 id: '250' pkg: - nginx - php - mariadb-server
在inventory文件中定义变量(几乎不用)
[root@m01 ~]# vim /etc/ansible/hosts [webs:vars] user_group=zh3 id='789' pkg='nginx,php,mariadb-server'
host_vars
# 和yaml文件同级别下创建目录 [root@m01 ~]# mkdir host_vars # 针对主机定义变量 [root@m01 ~]# vim host_vars/web01 user_group: web01 id: '444' pkg: nginx,php,mysql [root@m01 ~]# vim host_vars/web02 user_group: web01 id: '444' pkg: nginx,php,mysql
group_vars
# 和yaml文件同级下创建目录 [root@m01 ~]# mkdir group_vars # 针对主机定义变量 [root@m01 ~]# vim group_vars/webs user_group: webs id: '555' pkg: nginx,php,mysql