Tek bir makine için güvenli bir şekilde sınırlama Ansible playbooks?
Bir grup bilgisayar ile bazı basit kullanıcı yönetimi görevleri için Ansible kullanıyorum. Şu anda, benim playbooks dosya sadece tüm makinalar listelenen tek bir grup hosts: all
ve benim ana set var:
# file: hosts
[office]
imac-1.local
imac-2.local
imac-3.local
Kendimi, sık sık tek bir makine hedef olan buldum. ansible-playbook
komutu böyle oynar sınırı:
ansible-playbook --limit imac-2.local user.yml
Ama bu biraz kırılgan, özellikle potansiyel olarak yıkıcı bir senaryo görünüyor. limit
bayrağı bırakarak, senaryo her yerde çalıştırılması anlamına geliyor. Bu araçlar, sadece zaman zaman kullanılan bu yana, yanlışlıkla bundan bir ay nuke değiliz yani çalma sağlam adımlar atmaya değer görünüyor.
Tek bir makine için senaryo çalışır sınırlamak için en iyi yöntem var mı? İdeal playbooks eğer bazı önemli ayrıntı kaldı eğer zararsız olmalıdır.
CEVAP
Bir ana bilgisayar adı doğrudan senaryo içine girme olasılığı ortaya çıktı hosts: imac-2.local
ile senaryo çalışan iyi çalışır. Ama biraz hantal.
Daha iyi bir çözüm senaryo dan bir değişken kullanarak, belirli bir ana bilgisayar adresi geçerken --extra-vars
ile tanımlama olabilir:
# file: user.yml (playbook)
---
- hosts: '{{ target }}'
user: ...
Senaryo çalışan:
ansible-playbook user.yml --extra-vars "target=imac-2.local"
{{ target }}
tanımlı değil ise, bu senaryo, hiçbir şey yapmaz. Ana dosyadan bir grup da eğer gerekirse geçirilebilir. Genel olarak, bu çok daha güvenli ve potansiyel olarak yıkıcı bir senaryo oluşturmak için bir yol gibi görünüyor.
Senaryo tek bir ana hedef:
$ ansible-playbook user.yml --extra-vars "target=imac-2.local" --list-hosts
playbook: user.yml
play #1 (imac-2.local): host count=1
imac-2.local
Konak: bir grup ile senaryo
$ ansible-playbook user.yml --extra-vars "target=office" --list-hosts
playbook: user.yml
play #1 (office): host count=3
imac-1.local
imac-2.local
imac-3.local
Ana bilgisayarları tanımlamak için unutmadan güvende!
$ ansible-playbook user.yml --list-hosts
playbook: user.yml
play #1 ({{target}}): host count=0
Nasıl güvenli bir şekilde silmek için ...
Sözlük< için bir öğe ekleyerek daha ...
Güvenli bir şekilde elde etmek için na...
Nasıl şifre HTTP üzerinden güvenli bir...
Nasıl S3 veri deposu ve raylar API / i...