Bagaimana cara menyetel host_key_checking = false di file inventaris yang memungkinkan?

113

Saya ingin menggunakan ansible-playbookperintah alih-alih ' vagrant provision'. Namun pengaturan host_key_checking=falsepada hostsfile tersebut sepertinya tidak berhasil.

# 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

Apakah ada variabel konfigurasi di luar Vagrantfileyang dapat menggantikan nilai ini?

mbdev
sumber

Jawaban:

182

Karena fakta bahwa saya menjawab ini pada tahun 2014, saya telah memperbarui jawaban saya ke akun untuk versi yang lebih baru dari ansible.

Ya, Anda dapat melakukannya di tingkat host / inventaris (Yang menjadi mungkin pada versi terbaru yang memungkinkan ) atau tingkat global:

inventaris :

Tambahkan yang berikut ini.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

tuan rumah :

Tambahkan yang berikut ini.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

host / opsi inventaris akan berfungsi dengan jenis koneksi sshdan tidak paramiko. Beberapa orang mungkin dengan tegas berpendapat bahwa inventaris dan host lebih aman karena cakupannya lebih terbatas.

global:

Panduan Pengguna yang Mungkin - Pemeriksaan Kunci Host

  • Anda dapat melakukannya di file /etc/ansible/ansible.cfgatau ~/.ansible.cfg:

    [defaults]
    host_key_checking = False
    
  • Atau Anda dapat mengatur dan variabel env (ini mungkin tidak berfungsi pada versi baru yang memungkinkan):

    export ANSIBLE_HOST_KEY_CHECKING=False
    
Rico
sumber
32
Saya menggunakan kemungkinan 1.7.2 dan menurut pengalaman saya variabel lingkungan ANSIBLE_HOST_KEY_CHECKINGberfungsi tetapi -e 'host_key_checking=False'tidak berfungsi.
Marc Abramowitz
6
Pernyataan pertama Anda "Ya, tetapi tidak di tingkat host / inventaris" salah. Anda dapat menggunakan ansible_ssh_common_args='-o StrictHostKeyChecking=no'atauansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammel Lee
1
Hanya opsi terakhir yang berfungsi untuk saya (ekspor ANSIBLE_HOST_KEY_CHECKING = False) sebelum menjalankan buku pedoman saya.
ted-k42
1
"Ya, tapi tidak di level host / inventaris." - Terbukti salah, dibuktikan dengan jawaban saya . Saya bahkan akan mengatakan ini sebenarnya bukan jawaban untuk pertanyaan tentang bagaimana mengaturnya pada tingkat persediaan .
gertvdijk
@gertvdij Saya menjawab ini pada tahun 2014. Ansible telah melalui banyak revisi. Bukan itu masalahnya lagi?
Rico
68

Ya, Anda dapat mengatur ini di inventaris / tingkat host.

Dengan jawaban yang sudah diterima sekarang, saya pikir ini adalah jawaban yang lebih baik untuk pertanyaan tentang bagaimana menangani ini di tingkat persediaan. Saya menganggap ini lebih aman dengan mengisolasi pengaturan tidak aman ini ke host yang diperlukan untuk ini (misalnya sistem pengujian, mesin pengembangan lokal).

Apa yang dapat Anda lakukan di tingkat persediaan adalah menambahkan

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

atau

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

ke definisi host Anda (lihat Parameter Inventaris Perilaku yang Mungkin ).

Ini akan berfungsi asalkan Anda menggunakan sshjenis koneksi, bukan paramikoatau yang lain).

Misalnya, definisi host Vagrant akan terlihat seperti…

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

atau

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

Menjalankan Ansible kemudian akan berhasil tanpa mengubah variabel lingkungan apa pun.

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

Jika Anda ingin melakukan ini untuk grup host, berikut adalah saran untuk membuatnya menjadi grup var tambahan untuk grup yang sudah ada seperti ini:

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

[insecuressh:children]
mytestsystems

[insecuressh:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
gertvdijk.dll
sumber
4
Ini adalah jawaban yang jauh lebih baik.
marcv81
Saran ini berhasil untuk saya, dan saya setuju bahwa ini adalah sesuatu yang harus ditetapkan pada tingkat proyek (daripada tingkat global) karena masalah keamanan.
andrewdcato
1
Saya termasuk ansible_ssh_common_args: '-o StrictHostKeyChecking=no'dalam file group_vars file yml.
g.
4

Saya tidak bisa menggunakan:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

dalam file inventaris. Tampaknya ansible tidak mempertimbangkan opsi ini dalam kasus saya (kemungkinan 2.0.1.0 dari pip di ubuntu 14.04)

Saya memutuskan untuk menggunakan:

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

Itu membantu saya.

Anda juga dapat mengatur variabel ini dalam grup sebagai gantinya untuk setiap host:

[servers_group:vars]
ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
vskubriev
sumber
Mengatur opsi UserKnownHostsFile/ GlobalKnownHostsFileuntuk /dev/nulljuga berfungsi dengan baik. Aneh bahwa pengaturan StrictHostKeyCheckingtidak berhasil untuk Anda. Kemungkinan besar beberapa opsi dalam konfigurasi SSH Anda penyebabnya.
gertvdijk
1 untuk -o UserKnownHostsFile=/dev/null. Tanpanya juga tidak berhasil untuk saya, terlepas dari lokasi dan cara yang saya sebutkan ansible_ssh_common_args diuraikan dalam jawaban lain.
Hingga Kuhn
0

Dalam /etc/ansible/ansible.cfgtanda komentar baris:

host_key_check = False

dan di /etc/ansible/hostsbaris tanda komentar

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

Itu saja

pengguna8759294
sumber
0

Menambahkan hal berikut ke konfigurasi yang memungkinkan berfungsi saat menggunakan perintah ad-hoc yang memungkinkan:

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

Versi yang Mungkin

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg
dnafication
sumber
0

Anda mengatur konfigurasi ini di file /etc/ansible/ansible.cfgatau ~/.ansible.cfgatau ansible.cfg(di direktori Anda saat ini)

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

diuji dengan kemungkinan 2.9.6 di ubuntu 20.04

Alupota
sumber