我们在/etc/fstab
文件中为不同的服务器配置了不同的挂载点。如何使用Ansible实现相同的目标?
例如:
服务器A在路径 node1:/data/col1/RMAN
/mountPointA
以上我们可以使用Ansible的安装模块,如
- name: Add Mount Points
mount:
path: /mnt/dvd
src : /dev/sr0
fstype: iso09660
opts: ro
boot: yes
state: present
BUT
如果我有另一个服务器" B" 来源 /node1:/data/col1/directoryB
需要安装在路径< strong> / mountPointB
。但是,此服务器不需要配置第一个安装点。
是否可以在单个yml文件中实现它?
换句话说
Host source dest
hostA /source/directoryA /mnt
hostB /source/directoryB /mnt or /mnt/subdirectory #assuming subdir exists
我希望这是有道理的。对困惑感到抱歉。这个剧本将在大量主机上运行,我如何确保自动选择正确的主机使用正确的挂载点
答案 0 :(得分:1)
有很多方法可以解决这个问题。如果您愿意,我将建议一种可以让您为每个主机定义多个挂载点的方法。如果您在与Playbook相同的位置有一个host_vars
目录,Ansible将查找以您的主机命名的文件并从这些文件加载变量。例如,如果您的广告资源中有一个名为serverA
的主机,则Ansible会查找host_vars/serverA.yml
。
我们将利用它来指定每个主机的挂载配置。创建一个包含以下内容的文件host_vars/serverA.yml
mountinfo:
- src: node1:/data/col1/RMAN
dst: /mountpointA
fstype: nfs
使用以下内容创建host_vars/serverB.yml
mountinfo:
- src: node1:/data/col1/directoryB
dst: /mountpointB
fstype: nfs
然后在你的剧本中:
- name: Add Mount Points
mount:
path: "{{ item.dst }}"
src : "{{ item.src }}"
fstype: "{{ item.fstype }}"
opts: ro
boot: yes
state: present
with_items: "{{ mountinfo }}"
when: mountinfo is defined
如果这个答案中的某些内容并不清楚,我已将上述内容作为可运行的示例here进行了整理。