📅  最后修改于: 2023-12-03 15:38:12.893000             🧑  作者: Mango
在 Ansible playbook 中,定义变量是非常常见的。变量可以用于替换 playbook 中的值,使 playbook 更加灵活和可复用。
在 Ansible playbook 中,可以通过多种方式定义变量。下面我们将逐一介绍这些方式。
在 playbook 的 vars 中,直接定义变量即可。
- hosts: servers
vars:
my_var: "Hello World"
tasks:
- name: Print var
debug:
msg: "{{ my_var }}"
这里我们定义了一个名为 my_var 的变量,它的值是 "Hello World"。在任务 Print var 中,我们使用了 debug 模块打印了这个变量的值。
在 inventory 文件中,可以为每个主机定义变量。这些变量可以在 playbook 中使用。
[web]
web1
web2
[db]
db1
db2
[all:vars]
my_var: "Hello World"
这里我们定义了一个名为 my_var 的变量,它的值是 "Hello World"。它被定义在了 all:vars 中,表示它将应用于所有主机。
在 Ansible 中,可以通过外部文件(如 YAML 或 JSON 文件)来定义变量。
# vars.yml
my_var: "Hello World"
- hosts: servers
vars_files:
- vars.yml
tasks:
- name: Print var
debug:
msg: "{{ my_var }}"
这里我们在一个名为 vars.yml 的文件中定义了一个名为 my_var 的变量。在 playbook 中,我们使用 vars_files 指令加载了这个文件,然后在任务 Print var 中,通过 debug 模块打印了变量的值。
在运行 playbook 时,可以通过命令行参数来定义变量。这些变量将覆盖 playbook 中定义的变量。
- hosts: servers
vars:
my_var: "Hello World"
tasks:
- name: Print var
debug:
msg: "{{ my_var }}"
ansible-playbook -i inventory_file playbook.yml --extra-vars "my_var=Hi there!"
这里我们定义了一个名为 my_var 的变量,并在 playbook 中使用。在运行 playbook 时,通过 --extra-vars 参数覆盖了这个变量的值,变量的值变成了 "Hi there!"。
在 Ansible playbook 中,定义变量是非常常见的。我们可以通过多种方式来定义变量,使 playbook 更加灵活和可复用。在这篇文章中,我们介绍了如何直接在 playbook 中定义变量、通过 inventory 文件定义变量、通过外部文件定义变量,以及通过命令行参数定义变量。