Ansible: Genel Bakış ve Kullanım
Web ajansı » Dijital haberler » Ansible: Genel Bakış ve Kullanım

Ansible: Genel Bakış ve Kullanım

Nedir'yanıtlayıcı ' ? Bu nasıl kullanılır? Hangi rakipler? Bir süredir güçlü bir izlenim bırakan yeni bir ürünü hedeflemek için küçük bir numara.

yanıtlayıcı ' 2012'de ortaya çıktı. Ekim 2015'te Red Hat, daha sonra yığınında amiral gemisi haline gelen Ansible'ı satın aldığını duyurdu. Bu, çözümlerine mükemmel bir şekilde uyar katolik kardinal şapkası ve bir sunucu çiftliğini yönetmenin kolaylığı hakkındaki argümanları güçlendirir.

yanıtlayıcı ' aynı anda birden çok makinede dağıtım, görev yürütme ve yapılandırma yönetimi gerçekleştirmek için bir çözümdür. o ajan daha az ve kullan SSH gerçekleştirilecek eylemleri uygulamak, kendileri yazılı YAML.

Dans yanıtlayıcı ', başlarken rahatsız edebilecek birçok ürün var. hakkında bir şeyler duyabilirsin Ansible Başucu Kitabı, Ansible Kasası et cevaplanabilir galaksi.

Ansible ve modüller

Bilmeniz gereken iki şey:

  • kullandığınızda yanıtlayıcı ', modülleri kullanıyorsunuz. Halihazırda yazılmış modüllerin bir listesi var, ancak siz de kendinizinkini yazabilirsiniz. Python'da yazmanız gerekecek.
  • Eylemin kullanılması gereken bir etki alanı/IP grubu veya grubu vermelisiniz.

Örnek:

Makinemizin iyi olup olmadığını kontrol edeceğiz up modül ile ping.

1
2
3
4
5
$ duyarlı yerel ana bilgisayar -m ping
yerel ana bilgisayar | BAŞARI => {
“değişti”: yanlış,
“ping”: "pong"
}

dışında bir şey kullanmak için localhost, bir dizi etki alanı gibi, dosyayı tamamlamanız gerekir /etc/ansible/ana bilgisayarlar.

1
2
3
[baptiste-donaux.fr]
www.baptiste-donaux.fr
me.baptiste-donaux.fr
1
2
3
4
5
6
7
8
9
10
$ ansible -m ping baptiste-donaux.fr
me.baptiste-donaux.fr | başarı >> {
“değişti”: yanlış,
“ping”: "pong"
}
www.baptiste-donaux.fr | başarı >> {
“değişti”: yanlış,
“ping”: "pong"
}

Ve bu, bir havuz sunucu sayısı iyi up . İşte mevcut temel modüllerin listesi.

Bir modülün nasıl çalıştığını anladığınızda, diğer tüm modülleri aynı şekilde kullanabilirsiniz. Bir modül kullanırken argümanlar verebilirsiniz (argüman -a).

Örneğin, bir komutun birden çok komut üzerinde nasıl çalıştırılacağı.

1
2
3
4
5
6
$ ansible -m kabuk -a “docker –versiyon” baptiste-donaux.fr
me.baptiste-donaux.fr | başarılı | rc=0 >>
Docker sürüm 1.12.1, derleme 23cf638
www.baptiste-donaux.fr | başarılı | rc=0 >>
Docker sürüm 1.12.1, derleme 23cf638

Ancak bir paketin kurulu olduğundan da emin olun.

1
2
3
4
$ yanıtlayıcı -m apt -a “isim=vim durumu=mevcut” www.baptiste-donaux.fr
www.baptiste-donaux.fr | başarı >> {
“değişti”: yanlış
}

Ya da sadece bir veya daha fazla sunucuyu güncelleyin.

1
2
3
4
5
6
7
8
9
10
11
12
$ yanıtlayıcı -m apt -a "update_cache=evet" www.baptiste-donaux.fr
www.baptiste-donaux.fr | başarı >> {
“değişti”: yanlış
}
$ yanıtlayıcı -m apt -a “yükseltme=dist” www.baptiste-donaux.fr
www.baptiste-donaux.fr | başarı >> {
“değişti”: yanlış,
"mesaj": “Paket listeleri okunuyor…nBağımlılık ağacı oluşturuluyor…nDurum bilgileri okunuyor…n0 yükseltildi, 0 yeni yüklendi, 0 kaldırılacak ve 0 yükseltilmedi.n”,
“stderr”: "",
"stdout": “Paket listeleri okunuyor…nBağımlılık ağacı oluşturuluyor…nDurum bilgileri okunuyor…n0 yükseltildi, 0 yeni yüklendi, 0 kaldırılacak ve 0 yükseltilmedi.n”
}

Ansible ve Playbooks (gerçek dünyaya hoş geldiniz)

Bir makine filosunu siparişlerle yönetmek zaten iyidir ve her şeyden önceyanıtlayıcı '. Buna rağmen, komutları arka arkaya yürüterek bir senaryo oynamayı hayal etmek zor. Neyse ki bizim için cevaplayıcı oyun kitabı bunun için burada!

Görevleri kolayca yönetmek için başucu kitabı

Senaryolar YAML ile yazılır. İşte küçük bir örnek.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
– ana bilgisayarlar: baptiste-donaux.fr
görevler:
- isim: Docker deposu için APT anahtarı ekleyin
uygun_anahtar:
anahtar sunucusu: “hkp://p80.pool.sks-keyservers.net:80”
id: 58118E89F3A912897C070ADBF76221572C52609D
- isim: APT Docker deposu ekleyin
apt_repository: depolar='deb https://apt.dockerproject.org/repo debian-jessie ana' durum=mevcut
- isim: APT önbelleğini yeni depoyla güncelleyin
uygun: update_cache=Evet
- isim: Yüklemezse docker-engine paketini kurunyok
apt: name=docker-motor durumu=mevcut
– ad: Docker hizmetini etkinleştirin ve başlatın
systemd: etkin=yes durum=başlatılan ad=docker
– isim: InstallPython
apt: name=python durumu=mevcut
– isim: PIP'i kurun
apt: name=python-pip durumu=mevcut
– ad: docker-py bağımlılığı
pip: isim=docker-py
– ad: Nginx görüntüsünü çekin
docker_image: name=nginx çekme=evet
– ad: Bir Nginx kabı oluşturun
docker_container:
isim: vekil
resim: nginx
yayınlanan_portlar:
– “80:80”
devlet: mevcut
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$ansible my_playbook.yml
OYNA [baptiste-donaux.fr] *************************************** * ***********
GÖREV [kurulum] ******************************************* *********************
tamam: [baptiste-donaux.fr]
GÖREV [APT anahtarı ekle için Docker deposu] ***************************************
tamam: [baptiste-donaux.fr]
GÖREV [APT Docker deposu ekleyin] ***************************************** ****
tamam: [baptiste-donaux.fr]
GÖREV [APT önbelleğini yeni depoyla güncelle] ***********************************
tamam: [baptiste-donaux.fr]
GÖREV [docker-engine paketini kurun if yapmazyok] ***********************
tamam: [baptiste-donaux.fr]
GÖREV [Python'u Kur] ******************************************* *************
tamam: [baptiste-donaux.fr]
GÖREV [PIP'yi Yükle] ******************************************* ****************
tamam: [baptiste-donaux.fr]
GÖREV [docker-py bağımlılığı] ***************************************** *********
tamam: [baptiste-donaux.fr]
GÖREV [Nginx resim çek] ******************************************* * ***********
tamam: [baptiste-donaux.fr]
GÖREV [Bir Nginx kabı oluştur] ***************************************** *****
tamam: [baptiste-donaux.fr]
ÖZET OYNA******************************************** ** *********************
baptiste-donaux.fr: ok=10 değişti=0 ulaşılamaz=0 başarısız=0

Ve bu daha basit bir şey değil. Bir dizi sunucu üzerinde eksiksiz bir senaryo çalıştırmanın yanı sıra, bunlardan biri hatalı bulunursa, bir dosya .tekrar dene oluşturulacak ve komut yeniden başlatıldığında senaryo kaldığınız yerden devam edecektir.

Senaryonuzu kolayca yeniden başlatın ve kaldığınız yerden devam edin

Ansible Galaxy ve Vault

Galaksi ve modlarınızı nerede saklayacağınız

Ansible-Galaxy, modüllerinizi paylaşmak için bir Merkezdir. biraz şöyle çalışıyor Docker Hub'ı Docker görüntüleri için.

Apps Kasası ve hassas bilgilerin nasıl korunacağı

Bazı durumlarda senaryolarınızda hassas bilgileri (şifre vb.) saklamanız gerekecektir. Bu bilgileri düz metin olarak saklamak yerine, dosyalarını kodlayabilir/kodunu çözebilirsiniz.

Küçük bir örnek zarar vermez.

1
2
3
4
# playbook'um.yml
– ana bilgisayarlar: localhost
görevler:
- kabuk: sshpass -p "aptal" scp -r /bar baz@localhost:/qux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# Dosyanızı Vault ile kodlayın
$ansible-vault şifreleme my_playbook.yml
Yeni Apps Kasası şifresi:
Yeni Kasa şifresini onaylayın:
Şifreleme başarılı
# Kodlanmış çalışma kitabını görüntüle
$ kedi my_playbook.yml
$ANSIBLE_VAULT;1.1;AES256
34396264333338636331323838386331393664623065383463663661373436643764336536326662
6238626432373334356436613935306630376461633136650a316561316531323937633963643032
64643239616561653864346132356537656536313030656532373733316262663536396438383262
3463373265636232640a626364306666373665303633663630353132383764323530646438383737
31336163633631373162356339633739356461656130353533306137613436663333383137376366
62383533393262376362393565386133306432323266393034616331333932663266613739653538
36663666333938323961343231366266323430376234376363353662386366373061636434613763
35653139316465613562613834373434636238643661633434326661303438666233313732653338
3264
# Kodlanmış başucu kitabını önce kodunu çözmeden kullanın
$ ansible-playbook my_playbook.yml –ask-vault-pass
Kasa şifresi:
...

Ansible Vault ile oyun kitaplarınızı korumak çok kolay

Sonuç

Bu makale sunmayı amaçlamaktadır yanıtlayıcı ' ve görevlerinizi nasıl basitleştirebileceğini gösterin. Geri bildirimde bulunmaktan, bu gönderiyi geliştirmekten ve/veya düzeltmekten çekinmeyin.

★ ★ ★ ★ ★