Soru Ortam başına SSH kimlik bilgilerini yapılandırma


Ansible ile bir üretim ve aşamalandırma ortamı için SSH kimlik bilgilerini ayrı ayrı nasıl yapılandıracağımı anlamaya çalışıyorum. Sunucu IP adreslerini ve ana bilgisayar adlarını farklı envanter dosyalarını kullanarak ayrı ayrı yapılandırabilirsiniz. -i veya --inventory-file argüman ansible-playbook Komut. Ancak, böyle bir seçenek görmüyorum ansible.cfg. Şu anda, kimlik bilgileri /etc/ansible/ansible.cfg gibi:

[defaults]
private_key_file=/home/caleb/.ssh/staging_key.pem
remote_user=ubuntu
sudo_user=root
gathering=explicit

Birden çok SSH kimlik bilgisini nasıl yapılandırabilirim, biri üretim için ve diğeri aşamalandırma için?


8
2018-04-22 15:41


Menşei


ortamlarınız arasında ne değişiyor? Sadece anahtar dosya veya ayrıca remote_user / sudo_user? - tedder42
@ tedder42 SSH özel anahtarı ve remote_user. - cpburnz
Neden onu .ssh / config'unda saklamıyorsun? - udondan
@udondan Birden fazla ana bilgisayar için tek bir tuş belirtmek için bir yol var mı .ssh/config? - cpburnz
Evet, bunu yapabilirsin. Açık makine adları veya kalıpları olan birden fazla grup oluşturabilirsiniz. Bir cevaba bir örnek göndermeme izin verin. - udondan


Cevaplar:


İlk cevabım tamamen doğru değil gibi görünüyor. Elbette onu çözmek mümkün .ssh/config Aşağıda tarif edildiği gibi, Ansibles ile mümkün görünmektedir Davranışsal Envanter Parametreleri.

Envanterinizde (dokümanlara göre) ana makine veya grup başına, anahtar kelimeyi ve kullanıcıyı tanımlayabilmelisiniz.

Grup başına tanım:

[some_hosts]
host1.foo
host2.foo

[some_hosts:vars]
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem

Ana bilgisayar başına tanım:

[some_hosts]
host1.foo     ansible_ssh_user=ubuntu          ansible_ssh_private_key_file=/home/caleb/.ssh/staging_key.pem
host2.foo     ansible_ssh_user=another_user    ansible_ssh_private_key_file=/home/caleb/.ssh/production_key.pem

Ancak, zaten içinde birden fazla ana bilgisayar grubu tanımlayabilirsiniz. .ssh/config Her grup anahtar ve kullanıcı ile ilgili ayrı ayarlara sahip olabilir.

İşte hızlı bir örnek

#Example with a wildcard
Host *.foo.com
  user ubuntu
  IdentityFile /home/caleb/.ssh/staging_key.pem

#Example with multiple hostnames
Host hostname.one hostname.two hostname.three
  user other_user
  IdentityFile /home/caleb/.ssh/production_key.pem

Ayrıca bir varsayılan tanımlayabilir ve daha ayrıntılı ayarlarla daha sonra geçersiz kılabilirsiniz.

Host *
  user defaut_username

Host somehost
  user special_username

14
2018-04-22 17:41