Ansible:直接使用 group_vars,无需 with_items

Ansible:直接使用 group_vars,无需 with_items

我已经定义了group_vars根据其环境在众多主机上挂载 nfs 共享:

---
mounts:
- path: /home/user1
  src: 10.0.0.1:/home/user1
  fstype: nfs
  state: present
- path: /home/user2
  src: 10.0.0.1:/home/user2
  fstype: nfs
  state: present

在我的剧本中,我有以下任务来添加这些坐骑:

---
- hosts: clients
  tasks:
  - name: mounts
    mount:
      path: "{{ item.path }}"
      src: "{{ item.src }}"
      fstype: "{{ item.fstype }}"
      opts: "{{ item.opts }}"
      state: "{{ item.state }}"
    with_items: "{{ mounts }}"

现在我想知道是否有一种简写方法可以实现同样的效果?例如

---
- hosts: clients
  tasks:
  - name: mounts
    mount: "{{ mounts }}"

答案1

该模块无法在一次调用中创建多个挂载,因此您仍需要使用循环遍历每个单独的挂载定义。但您可以从单独的字典中一次性设置所有参数。

在我编写(简单)解决方案之前,您仍应注意,设置这样的任务参数是在 ansible 文档中不鼓励因为在某些情况下它可能不安全。这就是为什么您在使用以下代码时会收到警告的原因:

- hosts: clients
  tasks:
    - name: mounts
      mount: "{{ item }}"
      with_items: "{{ mounts }}"

相关内容