2017-09-29 104 views
0

我們針對不同的服務器在/etc/fstab文件中配置了不同的安裝點。我如何使用Ansible實現相同?可安裝在不同服務器上的不同目錄中

例如:

服務器A具有源安裝在路徑/mountPointA

以上可以我們實現了使用Ansible的裝入模塊node1:/data/col1/RMAN


- 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被安裝在路徑/mountPointB。但是,此服務器不需要配置第一個安裝點。

是否有可能在單個yml文件中實現它?

換句話說

Host  source     dest 

hostA /source/directoryA  /mnt 

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

我希望這是有意義的。對困惑感到抱歉。這個劇本將在大量主機上運行,​​我如何確保正確的主機自動選擇使用正確的安裝點

回答

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進行了包裝。

相關問題