我在使用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'嗎?
我已經驗證你的代碼,它工作正常。非常感謝! –