2016-03-21 13 views
0

3 hizmetimiz ve 5 sunucumuz var ve
Service 1'in tüm sunucularda çalışması gerektiğini varsayalım.
Servis 2 sunucuya 4. ve 5. üzerinde çalışmalıdır sunucuya 1, 2 ve 3.
Hizmet 3 çalışmalıdırAnsible: Farklı gruplar üzerinde çeşitli görevleri yürütmenin tercih edilen yolu ne olurdu?

Bunu başarmak için birkaç kirli yollarını düşünün, ama ben ne bilmek istiyorum

Bu senaryo için en iyi uygulama olurdu.

Ben öncelikle envanter dosyasındaki üzerinde konuşlanmış gerektiğini ana belirten her hizmet için bir grup tanımlamak için iyi bir fikir olabileceğini düşünüyordum:

[service-1] 
server-[01:05] 

[service-2] 
server-[01:03] 

[service-3] 
server-[04:05] 

üzerine hizmet almak için hedef makineler copy veya template kullanırdım. Ve aslında hizmetleri başlatmak için this bulundu.

Ancak, hizmetlerin yalnızca üzerinde çalışacakları makineler için nasıl başlatabilirim?

Bunu başarmak için birden fazla kitap oluşturabilirim, ancak her şeyi bir oyun kitabına koymayı tercih ederim.

cevap

1

Bir oyun kitabında birden çok oyun bulunabilir. Bu nedenle gerçekten hedefinizi arşivlemek için bu grupları kullanabilir ve yine sadece bir taktik kitabı vardır:

- name: Setup all service 
    hosts: all 
    roles: 
    - role: service1 
     when: "'service-1' in group_names" 

    - role: service2 
     when: "'service-2' in group_names" 

    - role: service3 
     when: "'service-3' in group_names" 

group_names sihirli değişkendir:

- name: Setup service 1 
    hosts: service-1 
    tasks/roles: ... 

- name: Setup service 2 
    hosts: service-2 
    tasks/roles: ... 

- name: Setup service 3 
    hosts: service-3 
    tasks/roles: ... 

Alternatif şöyle koşullarla size rolleri/görevleri filtreleyebilirsiniz ve geçerli ana bilgisayarın ait olduğu tüm grupları tutar.

+0

Bir çekicilik gibi çalışır. Teşekkür ederim. :) – Forivin

İlgili konular