[内容] Ansible 自定义变量

注意:

在使用 Ansible 自定义变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

内容一:Ansible 全局变量的使用

# ansible dev -m shell -a whoami -e ansible_user=root -e ansible_password=redhat

(补充:这里以 root 是管理被管理服务器所使用的用户,redhat 是这个用户的密码为例)

内容二:Ansible 服务器列表变量的设置

2.1 给某台服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1 ansible_password=root


补充:这里以
1) 在 host 文件里
2) 设置 192.168.1.1 的 Ansible 密码是 root(当它被 Ansible 操作时需要输入此密码)
为例

2.2 给某 1 个组设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2 
192.168.1.3 

[web:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置 web 组的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

2.3 给所有服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2
192.168.1.3

[db]
192.168.1.4
192.168.1.5
192.168.1.6

[all:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置所有服务器的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

内容三:Ansible Playbook 变量的设置

3.1 Ansible Playbook 直接设置变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
    user: tom
    home: /home/joe
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 设置 user 变量为 tom
5) home 变量为 /home/joe
6) 创建名为 user 注释内容为 user 的用户
的 playbook 为例

3.2 Ansible Playbook 直接设置数组变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
  - user1:
      a_name: zhang
      b_name: san
  - user2:
      a_name: li
      b_name: si
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例

3.3 Ansible Playbook 设置变量文件的案例

3.3.1 创建变量文件
# vim vars.yaml

创建以下内容:

user: tom
home: /home/joe

(补充:这里以在 vars.ymal 中添加变量 user 值为 tom,变量 home 值为 /home/joe 为例)

3.3.2 导入变量文件
# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars_files:
    - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 user 和 home
的 playbook 为例

3.4 Ansible Playbook 设置数组变量文件的案例

3.4.1 创建变量文件

# vim vars.yaml

创建以下内容:

users:
  user1:
    a_name: san
    b_name: zhang
    c_name: /home/zhangsan
  user2:
    a_name: si
    b_name: li
    c_name: /home/lisi

(补充:这里以在 vars.ymal 中添加 user1 和 user2 两组数组变量为例)

3.4.2 导入变量文件

# vim test.yaml

创建以下内容:

---
- name:
  hosts:
  vars_files:
  - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例