我在使用Ansible角色NFS时遇到问题。在Ansible库存中动态构建字符串
NFS角色: https://github.com/geerlingguy/ansible-role-nfs
我的情况是这样的:我们将创建这是NFS客户端虚拟机列表。我们需要在NFS服务器上进行访问控制。因此,我们根据上述角色在Ansible清单中设置名为'nfs_exports'的列表。
部分虚拟机将在完成工作负载后终止并退出。我们将重新运行包括NFS角色的剧本来更新NFS服务器设置。所以,有一个主机组'client_group',并且主机的数量是可变的。
如果有一个VM,该nfs_exports名单将是:
nfs_clients: "{{ groups['client_group'] }}"
nfs_exports:
- "{{ nfs_dirs[0] }} {{ nfs_clients[0] }}(rw)"
- "{{ nfs_dirs[1] }} {{ nfs_clients[0] }}(ro)"
如果有两个虚拟机,
nfs_clients: "{{ groups['client_group'] }}"
nfs_exports:
- "{{ nfs_dirs[0] }} {{ nfs_clients[0] }}(rw) {{ nfs_clients[1] }}(rw)"
- "{{ nfs_dirs[1] }} {{ nfs_clients[0] }}(ro) {{ nfs_clients[1] }}(ro)"
而且如果有三个虚拟机,
nfs_clients: "{{ groups['client_group'] }}"
nfs_exports:
- "{{ nfs_dirs[0] }} {{ nfs_clients[0] }}(rw) {{ nfs_clients[1] }}(rw) {{ nfs_clients[2] }}(rw)"
- "{{ nfs_dirs[1] }} {{ nfs_clients[0] }}(ro) {{ nfs_clients[1] }}(ro) {{ nfs_clients[2] }}(ro)"
这在我们的案例中并不好。因为每次虚拟机数量发生变化,我都需要手动更改'nfs_exports'。
我需要动态地在列表'nfs_exports'中建立字符串。所以如果有一个VM,'nfs_exports'中只有一个客户端。如果有多个虚拟机,所有的虚拟机都应该自动包含在'nfs_exports'中。
任何人都可以提供关于在'nfs_exports'中构建字符串的解决方案,而不是'client_group'更改时手动更改'nfs_exports'吗?
我已经验证你的代码,它工作正常。非常感谢! –