2016-12-06 79 views
0

在我的主機文件我有:運行在主機上的劇本與特定的參數

[web] 
192.168.1.1:8682 master="yes" 
192.168.1.1:8682 master="no" 

,並在我的劇本,我想只與主服務器上運行的角色=是這樣的:

--- 
- name: Switch MySQL master 
    hosts: web[master=yes] 
    remote_user: andy 
    become: yes 

    roles: 
    - replication_setup_switch_server 
... 

Ansible可以這樣做嗎?

+0

我對這個不太熟悉,但解決方案是爲主人和非主人創建單獨的組。 –

+0

是的,但99%的劇本必須在這2臺服務器上運行,我只有一個劇本,其中角色必須是特定的 – Paul

+2

那麼,主持人可以在多個組中。你可以保留'web'。 –

回答

0

在Ansible中,您可以使用group_by模塊根據事實創建臨時組。

Switch MySQL master之前添加新遊戲並在其中創建新組。我在下面的例子中稱新劇Create groups by role。您可以將變量master重命名爲role,以使該劇本更直觀。所以,庫存和劇本將變爲:

--- 
[web] 
192.168.1.1:8682 role="master" 
192.168.1.1:8682 role="slave" 

--- 
- name: Create groups by role 
    hosts: web 
    tasks: 
    - name: Group by web role 
     group_by: 
     key: "web_{{ role }}" 

- name: Switch MySQL master 
    hosts: web_master 
    remote_user: andy 
    become: yes 

    roles: 
    - replication_setup_switch_server 
相關問題