Ansible:直接使用 group_vars 而不使用 with_items

Roy*_*ght 3 ansible

我已定义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
Run Code Online (Sandbox Code Playgroud)

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

---
- hosts: clients
  tasks:
  - name: mounts
    mount:
      path: "{{ item.path }}"
      src: "{{ item.src }}"
      fstype: "{{ item.fstype }}"
      opts: "{{ item.opts }}"
      state: "{{ item.state }}"
    with_items: "{{ mounts }}"
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否有一个速记来实现同样的事情?例如

---
- hosts: clients
  tasks:
  - name: mounts
    mount: "{{ mounts }}"
Run Code Online (Sandbox Code Playgroud)

Zei*_*tor 5

该模块无法在一次调用中进行多次挂载,因此您仍然需要使用循环来完成每个单独的挂载定义。但是您可以从您的个人字典一次性设置所有参数。

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

- hosts: clients
  tasks:
    - name: mounts
      mount: "{{ item }}"
      with_items: "{{ mounts }}"
Run Code Online (Sandbox Code Playgroud)