Anonim envanter dosyasında host_key_checking = false nasıl ayarlanır?


113

ansible-playbook' vagrant provision' Yerine komut kullanmak istiyorum . Ancak ayar host_key_checking=falseiçinde hostsdosyaya çalışması görünmüyor.

# hosts file
vagrant ansible_ssh_private_key_file=~/.vagrant.d/insecure_private_key 
ansible_ssh_user=vagrant ansible_ssh_port=2222 ansible_ssh_host=127.0.0.1 
host_key_checking=false

Bunun dışında Vagrantfilebu değeri geçersiz kılabilecek bir yapılandırma değişkeni var mı ?

Yanıtlar:


182

Bunu 2014 yılında yanıtlamış olmam nedeniyle yanıtımı yanıtlayıcının daha yeni sürümlerini hesaba katacak şekilde güncelledim.

Evet, bunu ana bilgisayar / envanter düzeyinde ( Yeni yanıtlanabilir sürümlerde mümkün hale gelen ) veya genel düzeyde yapabilirsiniz:

envanter :

Aşağıdakileri ekleyin.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

ana bilgisayar :

Aşağıdakileri ekleyin.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

ana / envanter seçenekleri bağlantı türü ile çalışacaktır sshdeğil paramiko. Bazı kişiler, kapsam daha sınırlı olduğu için envanter ve ana bilgisayarların daha güvenli olduğunu şiddetle savunabilir.

küresel:

Ansible Kullanım Kılavuzu - Ana Bilgisayar Anahtar Kontrolü

  • Bunu ya /etc/ansible/ansible.cfgda ~/.ansible.cfgdosyasında yapabilirsiniz:

    [defaults]
    host_key_checking = False
    
  • Veya değişkenleri kurabilir ve env değişkenini kullanabilirsiniz (bu, daha yeni yanıtlanabilir sürümlerde çalışmayabilir):

    export ANSIBLE_HOST_KEY_CHECKING=False
    

32
Ansible 1.7.2 kullanıyorum ve deneyimlerime göre ortam değişkeni ANSIBLE_HOST_KEY_CHECKINGçalışıyor ama -e 'host_key_checking=False'çalışmıyor.
Marc Abramowitz

6
İlk ifadeniz "Evet, ancak ana bilgisayarlar / envanter düzeyinde değil" yanlıştır. Sen kullanabilirsiniz ansible_ssh_common_args='-o StrictHostKeyChecking=no'veyaansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammel Lee

1
Oyun kitabımı çalıştırmadan önce sadece son seçenek benim için çalıştı (ANSIBLE_HOST_KEY_CHECKING = False dışa aktar).
ted-k42

1
"Evet, ancak ana bilgisayar / envanter düzeyinde değil." - kanıtlanmış, yanlış olduğu gösterilmiştir mı benim cevap . Hatta bunun, envanter seviyesinde nasıl ayarlanacağı sorusuna gerçekten bir cevap olmadığını bile söyleyebilirim .
gertvdijk

@gertvdijk Bunu 2014'te yanıtladım. Ansible bir dizi revizyondan geçti. Durum artık böyle değil mi?
Rico

68

Evet, yapabilirsiniz envanter / ana seviyede buna ayarlayın.

Zaten kabul edilmiş bir cevap varken, bunun envanter düzeyinde nasıl ele alınacağı sorusuna daha iyi bir cevap olduğunu düşünüyorum. Bu güvensiz ayarı bunun için gereken ana bilgisayarlara (örneğin test sistemleri, yerel geliştirme makineleri) izole ederek bunu daha güvenli buluyorum.

Envanter seviyesinde yapabilecekleriniz

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

veya

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

ana bilgisayar tanımınıza (bkz. Ansible Davranışsal Envanter Parametreleri ).

Bu, sshbağlantı türünü kullanmamanız paramikoveya başka bir şey kullanmanız durumunda işe yarayacaktır ).

Örneğin, bir Vagrant ana bilgisayar tanımı şöyle görünür ...

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_common_args='-o StrictHostKeyChecking=no'

veya

vagrant ansible_port=2222 ansible_host=127.0.0.1 ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

Ansible'ı çalıştırmak, herhangi bir ortam değişkenini değiştirmeden başarılı olacaktır.

$ ansible vagrant -i <path/to/hosts/file> -m ping
vagrant | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Bunu bir grup ana bilgisayar için yapmak istemeniz durumunda, aşağıdaki gibi var olan bir grup için tamamlayıcı bir grup değişkeni yapmak için bir öneri:

[mytestsystems]
test[01:99].example.tld

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'

4
Bu çok daha iyi bir cevap.
marcv81

Bu öneri benim için işe yaradı ve bunun, güvenlik kaygıları nedeniyle (küresel düzeyden ziyade) proje düzeyinde belirlenmesi gereken bir şey olduğuna katılıyorum.
andrewdcato

1
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'Group_vars dosyası yml dosyasına dahil ettim.
g.

4

Kullanamadım:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

envanter dosyasında. Görünüşe göre ansible benim durumumda bu seçeneği dikkate almıyor (ubuntu 14.04'te pip'ten ansible 2.0.1.0)

Kullanmaya karar verdim:

server ansible_host=192.168.1.1 ansible_ssh_common_args= '-o UserKnownHostsFile=/dev/null'

Bana yardımcı oldu.

Ayrıca bu değişkeni her ana bilgisayar için bunun yerine grup olarak ayarlayabilirsiniz:

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'

UserKnownHostsFile/ GlobalKnownHostsFileSeçeneğinin ayarlanması /dev/nullda gerçekten işe yarar. Ayarın StrictHostKeyCheckingsizin için çalışmaması tuhaf . Nedeni büyük olasılıkla SSH yapılandırmanızdaki bir seçenektir.
gertvdijk

+1 -o UserKnownHostsFile=/dev/null. O olmadan da ansible_ssh_common_args , diğer cevaplarda ana hatlarıyla belirttiğim konum ve yöntemden bağımsız olarak, benim için de işe yaramadı .
Kuhn'a kadar

0

In /etc/ansible/ansible.cfgyorumsuz hattı:

host_key_check = False

ve /etc/ansible/hostsuncomment line

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

Bu kadar


0

Ansible yapılandırmaya aşağıdakileri eklemek, yanıtlanabilir ad-hoc komutları kullanırken çalıştı:

[ssh_connection]
# ssh arguments to use
ssh_args = -o StrictHostKeyChecking=no

Ansible Sürümü

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg

0

Bu yapılandırmaları ya /etc/ansible/ansible.cfgya ~/.ansible.cfgda ya da ansible.cfg(mevcut dizininizde) dosyasında ayarlayın

[ssh_connection]
ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no

ubuntu 20.04'te yanıtlanabilir 2.9.6 ile test edildi

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.