我的 ansible 脚本在将所有挂载放在我指定的任何系统上方面做得很好。但我的意图是安装依赖于子网的挂载。
.35 上的人享有特权,需要访问特殊文档,而每个人都可以访问我们的公共文档和应用程序驱动器。
有谁知道我在这里做错了什么?
[更新] 在 Vladimir Botka 的精彩回复之后,我快到了。唯一的问题是我的部分(因为我现在已经放弃了角色):
tasks:
- name: Mount the entries in list
mount:
name: '{{ item }}'
path: '{{ item.mount_point }}'
src: '{{ item.shared_storage }}'
fstype: nfs
opts: rw
state: mounted
with_items: '{{ my_mounts }}'
你知道为什么它像这样将行输出到 fstab 中:
srvr:/docs {'mount_point':\040'/mnt/doc',\040'shared_storage':\040'srvr:/docs'} nfs rw 0 0
- - 代替 - -
srvr:/docs /mnt/doc nfs rw 0 0
?
我尝试设置 path: '{{ item.mount_point.1 }}' 和其他一些总猜测但无济于事。
原来的剧本是:
---
- name: My mounts
hosts: accounting
become: yes
vars:
subnet: "{{ ansible_default_ipv4.address.split('.')[2:3] | join('.') }}"
tasks:
- debug:
msg: subnet is {{ subnet }}
roles:
- role: nfsmount
vars:
mount_point: /mnt/docs
shared_storage: bay05:/docs/spreadsheets
when: ( "subnet == '20'" ) or ( "subnet == '35'" )
- role: nfsmount
vars:
mount_point: /mnt/pub
shared_storage: cheetah:/pub
when: ( "subnet == '20'" )
例如,适当地把声明放在下面
然后,任务
给
根据您的需要调整结构和代码。