[内容] Ansible 自定义变量的设置和使用

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

内容二:Ansible 服务器列表变量的设置
2.1 给某一台服务器设置变量
2.2 给某一个组设置变量
2.3 给所有服务器设置变量

内容三:Ansible playbook 变量的设置
3.1 Ansible playbook 直接设置变量的案例
3.1.1 创建 playbook
3.1.2 执行 playbook
3.2 Ansible playbook 导入变量文件的案例
3.2.1 创建变量文件
3.2.2 导入变量文件
3.2.3 执行 playbook
3.3 Ansible playbook 设置数组变量的案例
3.3.1 创建变量文件
3.3.2 导入变量文件
3.3.3 执行 playbook

具体的内容:
内容一:Ansible 全局变量的使用
# ansible dev -m shell -a whoami -e ansible_user=root -e ansible_password=redhat

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

内容二:Ansible 服务器列表变量的设置
2.1 给某一台服务器设置变量
[web]
192.168.1.1 ansible_password=redhat
192.168.1.2
192.168.1.3

[db]
192.168.1.4
192.168.1.5
192.168.1.6

2.2 给某一个组设置变量
[web]
192.168.1.1 ansible_password=redhat
192.168.1.2 
192.168.1.3 

[db]
192.168.1.4
192.168.1.5
192.168.1.6

[web:vars]
ansible_user=root
ansible_password=redhat

(补充:被管理服务器用于被管理的用户密码(它会在你执行命令或者 playbook 时被直接使用))

2.3 给所有服务器设置变量
[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=redhat

(补充:被管理服务器用于被管理的用户密码(它会在你执行命令或者 playbook 时被直接使用))

内容三:Ansible playbook 变量的设置
3.1 Ansible playbook 直接设置变量的案例
3.1.1 创建 playbook
# vim playbook.yaml
---
- name:
   hosts:
   vars:
       user: tom
       home: /home/joe
   tasks:
   - name: Add a user
      user:
        name: "{{ user }}"
        comment: name is {{ user }}

(
补充:
(1)在这里设置了 user 变量为 tom 和 home 变量为 /home/joe
(2)当变量处于开头的时候需要加双引号“”,例如  "{{ user }}",这样可以防止 ansible 将其视为 yaml 字典开头
(3)当变量不处于开头的时候不需要加双引号 “”,例如  name is {{ user }}
)

3.1.2 执行 playbook
# ansible-playbook playbook.yaml

3.2 Ansible playbook 导入变量文件的案例
3.2.1 创建变量文件
# vim vars.yaml
user: tom
home: /home/joe

3.2.2 导入变量文件
# vim playbook.yaml
---
- name:
  hosts:
  vars_files:
    - vars.yaml

(补充:这里在 playbook.yaml 中导入了变量文件 vars.yaml,并使用了其中的变量 user 和 home)

3.2.3 执行 playbook
# ansible-playbook playbook.yaml

3.3 Ansible playbook 设置数组变量的案例
3.3.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

3.3.2 导入变量文件
# vim playbook.yaml
---
- name:
   hosts:
   vars_files:
    - vars.yaml
   tasks:
   - name: Add a user
     user:
        name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"

3.3.3 执行 playbook
# ansible-playbook playbook.yaml