ansible_facts和ansible_devices 区别
时间: 2023-09-26 18:08:12 浏览: 107
ansible_facts和ansible_devices是Ansible中两个不同的变量。
ansible_facts是一个特殊的变量,它包含了Ansible在目标主机上收集到的所有事实(facts)。这些事实包括操作系统类型、主机名、IP地址、CPU信息、内存信息等等。你可以在Playbook中使用ansible_facts来访问这些事实,并根据需要进行处理或使用。
ansible_devices是一个子变量,它包含了关于目标主机上的存储设备(硬盘、分区等)的信息。ansible_devices变量提供了设备名称、设备类型、设备大小等信息,可以在Playbook中使用它来执行与存储设备相关的操作,比如分区、格式化等。
总结起来,ansible_facts提供了关于目标主机的各种事实信息,而ansible_devices提供了关于目标主机上存储设备的信息。两者都是Ansible提供的变量,可以在Playbook中使用。
相关问题
--- - name: create partition hosts: balancers tasks: - name: create a directory file: path: /newpart1 state: directory - block: - name: create a partiton parted: device: /dev/vdd number: 1 state: present part_end: 1500MiB - name: filesystem filesystem: fstype: ext4 dev: /dev/vdd1 - name: mount directory mount: path: /newpart1 src: /dev/vdd1 - name: mount directory mount: path: /newpart1 src: /dev/vdd1 state: mounted fstype: ext4 rescue: - debug: msg: could not the size - name: create a partiton parted: device: /dev/vdd number: 1 state: present part_end: 800MiB when: ansible_facts.devices.vdb is defined - name: filesystem filesystem: fstype: ext4 dev: /dev/vdd1 when: ansible_facts.devices.vdb is defined - name: mount directory mount: path: /newpart1 src: /dev/vdd1 state: mounted fstype: ext4 when: ansible_facts.devices.vdd is defined - debug: msg: could not find vdd when: ansible_facts.devices.vdd is undefined
这是一个Ansible playbook用于在负载均衡器主机上创建分区并挂载目录。该playbook的主要步骤如下:
1. 创建一个名为/newpart1的目录。
2. 使用parted工具在/dev/vdd设备上创建一个分区,结束位置为1500MiB。
3. 使用filesystem模块在/dev/vdd1上创建ext4文件系统。
4. 使用mount模块将/dev/vdd1挂载到/newpart1目录。
5. 如果无法获取分区大小,将打印错误消息。
6. 如果ansible_facts.devices.vdb已定义,则使用parted工具在/dev/vdd设备上创建一个分区,结束位置为800MiB。
7. 如果ansible_facts.devices.vdb已定义,则使用filesystem模块在/dev/vdd1上创建ext4文件系统。
8. 如果ansible_facts.devices.vdd已定义,则使用mount模块将/dev/vdd1挂载到/newpart1目录。
9. 如果无法找到vdd设备,则打印错误消息。
这个playbook的目的是在负载均衡器上创建一个新的分区,并将其挂载到/newpart1目录,以便用于存储数据。
ansible dev
Ansible通过`ansible-vault`命令来管理和保护敏感信息,如创建、编辑和查看加密的Vault文件。下面是使用`ansible-vault`的一些基本操作:
1. **创建文件**:
使用`ansible-vault create`命令创建一个新的Vault文件,如`users.yml`:
```bash
[student@workstation ansible]$ ansible-vault create users.yml
```
2. **编辑文件**:
一旦文件被创建,可以使用`ansible-vault edit`打开它进行编辑:
```bash
[student@workstation ansible]$ ansible-vault edit users.yml
```
这会启动一个安全编辑器(默认是`vim`),你可以在这里添加或修改 Vault-protected 的内容。
3. **查看文件内容**:
如果你想查看加密后的文件内容,但不想直接解密,可以使用`ansible-vault view`命令,它只显示密文而不实际解密:
```bash
[student@workstation ansible]$ ansible-vault view users.yml
```
4. **重置密码或更改加密**:
如果需要更换Vault文件的密码,使用`ansible-vault rekey`命令重新加密整个文件:
```bash
[student@workstation ansible]$ ansible-vault rekey users.yml
```
至于`ansible_facts`,它们是Ansible收集并提供给playbooks关于目标主机的各种信息。对于开发而言,这些事实变量非常有用,比如:
- `ansible_facts.hostname`: 当前主机的名称
- `ansible_facts.fqdn`: 全局唯一域名(Fully Qualified Domain Name)
- `ansible_facts.default_ipv4.address`: 主机的主要IP地址
- `ansible_facts.devices`: `/dev` 目录下发现的块设备
- `ansible_facts.kernel`: 操作系统的内核版本
要在 playbook 中访问这些信息,只需在任务或条件语句中引用它们即可。例如:
```yaml
- name: 获取主机名
debug:
msg: "Hostname: {{ ansible_facts.hostname }}"
```
阅读全文