SSH bağlantısı için varsayılan Ansible kullanıcı adı / şifresi nasıl ayarlanır?


60

Ansible kullanıyorum ve bu yapılandırmayı envanterimde / hepsinde yapıyorum:

[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant

[all:children]
master
slave

Her yeni örnek için tüm parametreleri tekrarlamak istemiyorum. Onları tek bir yerde nasıl yapılandırabilirim? Bu parametrelerde dosya var mı?


3
~/.ssh/config
ceejayoz

1
@ceejayoz Biraz açıklayabilir misiniz
Robert

Ben bir yanıtlayıcı 'yönetici değilim ve belgeler konuda bulutlu olan ( bu bir "değişken" veya bir "parametresi" ve bir fark var? ) Ama nedense grubu düzeyinde değişkenleri tanımlayabilirsiniz gibi görünüyor.
DerfK

Yanıtlar:


74

Envanter dosyanıza aşağıdaki bölümü ekleyebilirsiniz:

[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant

Not: yanıtlayıcı '2.0 önce ansible_useroldu ansible_ssh_user.


2
Ansible 2.0'ın üzerinde, olması gerekenler: [all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
zx1986 2

2
@ zx1986 bunu nerede okudunuz?
030


Bağlantı noktası 22'nin varsayılan olduğunu unutmayın ansible_port, bu nedenle farklı olmadıkça açıkça belirtmeniz gerekmez. Birisi aynı anda birden fazla gruba değişkenleri nasıl uygulayacağını bilen biriyse (ama 'hepsi' değil), virgül ayırımının işe yaramadığı görülüyor.
William Turrell

1
@WilliamTurrell biraz geç ama .. bir grup oluşturabilir (:: children değiştirici ile) ve sonra değişkenleri sonradan (:: vars değiştirici ile) ayarlayabilirsiniz.
Lasse Halberg Haarbye

23

Grup Değişkenleri

Ansible'ın En İyi Uygulamaları belgesinde belirtilen oynatma kitabı düzenini kullanarak ve onları tanımladığınız bir dosyayı oluşturarak tüm ana bilgisayarlara uygulanacak değişkenleri ayarlayabilirsiniz .group_vars/all

---
# file: group_vars/all
ansible_connection: ssh 
ansible_ssh_user: vagrant 
ansible_ssh_pass: vagrant

[edit] Yine de yapmaya çalıştığınız şey olsa kafam karıştı. Envanterde Ansible kullanıcısını veya şifreyi belirtmeniz gerekmez. Vagrant kullanıyorsanız kesinlikle kullanmazsınız ve komut satırından Ansible'ı arıyorsanız, kullanıcı ile belirtebilir --user=vagrantve parolayı istemenizi isteyebilirsiniz --ask-pass.


1
Sadece altyapımın daha iyi bir organizasyonunu yapmam gerekiyor. Eğer her zaman vagrant kullanacağım: vagrant Yapılandırmayı varsayılan olarak Ansible yüklendiği bir yere koymak istiyorum, ancak nerede olduğunu bilmiyorum. Yürütülecek her bağlantı onu kullanmak zorundadır.
Robert

Dosya adlandırılmalı mı, group_vars/all/main.ymlyoksa basit group_vars/allmi?
realtebo

bu bir yükledikten sonra benim için çalıştı sshpass-"you must install the sshpass program"
user9869932 5:18

1
@realtebo Dosyayı adlandırılmış olmalıdır group_vars/all.
xloto

1
Her bir bilgisayarın farklı bir şifresi olduğunda -kullanma şifresi -k "hepsi" için eğlenceli değildir. Evet, sshpass'a ihtiyacınız var ve evet, daha önce ~ \ .ssh \ config ile daha önce hiç bağlanmadıysanız, bilinen bilinenleri tohumlamanız gerekiyor.
mckenzm

5

Ssh key yüklemesini tüm sunuculara çekmenin daha iyi olacağını düşünüyorum. Ssh-copy-id komutunu sadece her düğüm için çalıştırmalı ve ssh anahtarınızı kullanarak giriş yapabilmeniz için ssh anahtarınızı her yere kurmalısınız. Şifreleri oyun kitabına / envantere kaydetmemek daha güvenli olacaktır.

Bunu yapmak için ssh anahtar çiftinizi oluşturmalı ve daha sonra tüm sunucular için ssh-copy-id komutunu çalıştırmalısınız.


1
Birisi yapılandırma dosyanızdaki şifreyi çalabilirse, muhtemelen ssh anahtarlarınızı da kullanabileceklerdir. Ve bunun OP'lerin sorusunu yanıtlamakla hiçbir ilgisi yok. Bu soru alternatifler hakkında fikir edinmek istemiyordu.
Muh Fugen

@MuhFugen> Onları tek bir yerde nasıl yapılandırabilirim? Bu parametrelerde dosya var mı? Bu, görüşün yanı sıra cevabın doğru yöne dair bir anlayış vermesi için kapıyı açan kesin bir cümledir. Yapılandırma çalmak (bir yerde git repo yaşayabilir) özel anahtar çalmakla aynı değildir.
podarok

4

Envanter ana bilgisayarlarına aşağıya ekleyin.

Ansible <2.0 için:

[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant 
ansible_ssh_pass=vagrant

İçin > = 2.0 yanıtlayıcı ' :

[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant

Bağlantı ansible_ssh_passdeğil, bahseder ansible_pass.
Matthias Weiler

2

Uyarı: Bunu yalnızca OSX'te test ettim. Çeşitli dokümanlara dayanarak, diğer platformlarda da çalışmasını bekliyorum.

"proje dizini", Vagrant projesinin temel dizinini (içeren dizini) belirtir Vagrantfile.

Vagrant tarafından otomatik olarak oluşturulan Ansible Envanter dosyası:

Vagrant , varsayılan Ansible bağlantısı değişkenleriyle bir envanter dosyası oluşturur . İçinde ara <project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory.

Bu dosya gerektiğinde Vagrant tarafından rejenere edilecek, böylece el ile yapılan düzenlemelerin üzerine yazılacak. Ancak, Vagrant belgelerine göre, birden fazla makine, grup varyasyonu, vs. belirtebilirsiniz Vagrantfileve bunlar bu envanter dosyasına eklenecektir.

Ansible'ı varsayılan olarak bu envanter dosyasına yapılandır:

Bu dosyayı ansibleproje dizinindeyken (ana bilgisayarda) komut tarafından kullanılan varsayılan yapmak için ansible.cfg, yolu gerektiği gibi değiştirerek proje dizininize bu içeriklerle bir dosya ekleyin :

[defaults]
inventory = ./path/to/inventory

Bu envanter dosyasının kullanıldığını onaylamak için, bunu ansible tarafından bildirilen varsayılan olarak arayın:

(proje dizini içinden)

$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or

Ana bilgisayarlarınızı onaylamak için:

$ ansible all --list-hosts hosts (2): master slave

Bu ana bilgisayarlarla Ansible'ı kullanma:

Proje dizini içinden ansibletanımladığınız ana bilgisayarlarla normal şekilde kullanabilmelisiniz Vagrantfile.

Örneğin:

ansible slave -a 'hostname'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.