Ansible挂载不同服务器上的不同目录
Ansible mount for different directories on different servers
我们在 /etc/fstab
文件中为不同的服务器配置了不同的挂载点。我怎样才能使用 Ansible 实现同样的目标?
例如:
服务器 A 有一个 source node1:/data/col1/RMAN
安装在 path /mountPointA
以上我们可以使用Ansible的挂载模块实现如
- name: Add Mount Points
mount:
path: /mnt/dvd
src : /dev/sr0
fstype: iso09660
opts: ro
boot: yes
state: present
BUT
如果我有另一个 服务器 "B" 有 source /node1:/data/col1/directoryB
需要安装在 路径/mountPointB
。但是这个服务器不需要配置第一个挂载点。
是否可以在单个yml文件中实现?
换句话说
Host source dest
hostA /source/directoryA /mnt
hostB /source/directoryB /mnt or /mnt/subdirectory #assuming subdir exists
我希望这是有道理的。对困惑感到抱歉。此剧本将 运行 用于大部分主机,我如何确保自动选择正确的主机以使用正确的挂载点
有多种方法可以解决这个问题。如果您愿意,我将建议一种方法,让您可以为每个主机定义多个挂载点。如果你有一个 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。
我们在 /etc/fstab
文件中为不同的服务器配置了不同的挂载点。我怎样才能使用 Ansible 实现同样的目标?
例如:
服务器 A 有一个 source node1:/data/col1/RMAN
安装在 path /mountPointA
以上我们可以使用Ansible的挂载模块实现如
- name: Add Mount Points
mount:
path: /mnt/dvd
src : /dev/sr0
fstype: iso09660
opts: ro
boot: yes
state: present
BUT
如果我有另一个 服务器 "B" 有 source /node1:/data/col1/directoryB
需要安装在 路径/mountPointB
。但是这个服务器不需要配置第一个挂载点。
是否可以在单个yml文件中实现?
换句话说
Host source dest
hostA /source/directoryA /mnt
hostB /source/directoryB /mnt or /mnt/subdirectory #assuming subdir exists
我希望这是有道理的。对困惑感到抱歉。此剧本将 运行 用于大部分主机,我如何确保自动选择正确的主机以使用正确的挂载点
有多种方法可以解决这个问题。如果您愿意,我将建议一种方法,让您可以为每个主机定义多个挂载点。如果你有一个 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。