注意:
在使用 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 为例
)
