ansible里面传一个变量的方式有几种
时间: 2024-02-03 22:25:48 浏览: 126
在Ansible中,有多种方式可以传递变量。以下是常见的几种方式:
1. 命令行参数:您可以使用`-e`参数将变量作为命令行参数传递给ansible-playbook命令。例如:
```
ansible-playbook -e "my_variable=my_value" playbook.yml
```
这将将`my_variable`变量的值设置为`my_value`。
2. 主机组变量:您可以在Ansible的主机组定义中设置变量。在主机组定义文件(通常是`inventory`文件)中,使用`:`分隔主机组名称和变量,并使用`=`分隔变量名和值。例如:
```
[web_servers]
server1 ansible_host=192.168.1.10 my_variable=my_value
server2 ansible_host=192.168.1.11 my_variable=another_value
```
这样,对于`web_servers`组中的每个主机,都会设置名为`my_variable`的变量。
3. 主机变量:您可以在单个主机定义中设置变量。使用相同的语法将变量添加到主机定义中。例如:
```
[web_servers]
server1 ansible_host=192.168.1.10
[web_servers:vars]
my_variable=my_value
```
这样,`my_variable`变量将适用于`web_servers`组中的所有主机。
4. playbook变量:在playbook的顶层或任务级别,您可以使用`vars`关键字定义变量。例如:
```yaml
---
- name: Example playbook
hosts: web_servers
vars:
my_variable: my_value
tasks:
- name: Task 1
debug:
msg: "Variable value is {{ my_variable }}"
```
这将在playbook中定义`my_variable`变量,并在任务中使用。
5. 变量文件:您可以将变量存储在单独的文件中,并在playbook中导入。使用`vars_files`关键字指定变量文件的路径。例如:
```yaml
---
- name: Example playbook
hosts: web_servers
vars_files:
- vars/my_vars.yml
tasks:
- name: Task 1
debug:
msg: "Variable value is {{ my_variable }}"
```
这将导入`vars/my_vars.yml`文件中定义的变量。
这些是传递变量的一些常见方式,您可以根据具体情况选择最适合的方式。
阅读全文