0

我们在/etc/fstab文件中为不同的服务器配置了不同的挂载点。我如何使用 Ansible 实现相同的目标?

例如:

服务器 A 有一个 node1:/data/col1/RMAN安装在路径 /mountPointA

上面我们可以使用 Ansible 的 mount 模块如


- name: Add Mount Points
mount:
  path: /mnt/dvd
  src : /dev/sr0
  fstype: iso09660
  opts: ro
  boot: yes
  state: present

如果我有另一个具有源的服务器“B”需要安装在路径/怎么办?但是,此服务器不需要配置第一个挂载点。 /node1:/data/col1/directoryBmountPointB

是否可以在单个 yml 文件中实现它?

换句话说

Host      source                   dest

hostA    /source/directoryA     /mnt

hostB    /source/directoryB     /mnt or /mnt/subdirectory #assuming subdir exists

我希望这是有道理的。对困惑感到抱歉。该剧本将在大量主机上运行,​​我如何确保自动选择正确的主机以使用正确的挂载点

4

1 回答 1

2

有很多方法可以解决这个问题。如果您愿意,我将建议一种方法,让您为每个主机定义多个挂载点。如果你host_vars在 playbook 所在的位置有一个目录,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

如果此答案中的某些内容不清楚,我已将上述内容作为可运行的示例进行了总结

于 2017-09-29T16:09:23.983 回答