其他分享
首页 > 其他分享> > Ansible变量

Ansible变量

作者:互联网

Ansible变量

变量的概述

避免重复的代码,方便维护,减少维护的成本

ansible变量定义

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)

定义ansible变量位置

在play中定义变量

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中定义变量

在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

标签:group,变量,vars,Ansible,user,id,name
来源: https://www.cnblogs.com/ghjhkj/p/16424807.html