Come impostare host_key_checking = false nel file di inventario ansible?


113

Vorrei usare il ansible-playbookcomando invece di " vagrant provision". Tuttavia l'impostazione host_key_checking=falsenel hostsfile non sembra funzionare.

# 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

Esiste una variabile di configurazione al di fuori di questa Vagrantfileche può sostituire questo valore?

Risposte:


182

Poiché ho risposto a questa domanda nel 2014, ho aggiornato la mia risposta per tenere conto delle versioni più recenti di ansible.

Sì, puoi farlo a livello di host / inventario (che è diventato possibile nelle versioni ansible più recenti ) oa livello globale:

inventario :

Aggiungi quanto segue.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

host :

Aggiungi quanto segue.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

le opzioni host / inventario funzioneranno con il tipo di connessione sshe non paramiko. Alcune persone potrebbero sostenere con forza che l'inventario e gli host sono più sicuri perché l'ambito è più limitato.

globale:

Ansible User Guide - Controllo chiave host

  • Puoi farlo nel file /etc/ansible/ansible.cfgo ~/.ansible.cfg:

    [defaults]
    host_key_checking = False
    
  • Oppure puoi impostare e variabile env (questo potrebbe non funzionare su versioni ansible più recenti):

    export ANSIBLE_HOST_KEY_CHECKING=False
    

32
Sto usando ansible 1.7.2 e la mia esperienza è stata che la variabile d'ambiente ANSIBLE_HOST_KEY_CHECKINGfunziona ma -e 'host_key_checking=False'non funziona.
Marc Abramowitz

6
La tua prima affermazione "Sì, ma non a livello di host / inventario" è falsa. Puoi usare ansible_ssh_common_args='-o StrictHostKeyChecking=no'oansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammel Lee

1
Solo l'ultima opzione ha funzionato per me (export ANSIBLE_HOST_KEY_CHECKING = False) prima di eseguire il mio playbook.
ted-k42

1
"Sì, ma non a livello di host / inventario." - Si è dimostrato falso, dimostrato dalla mia risposta . Direi anche che questa non è davvero una risposta alla domanda su come impostarlo a livello di inventario .
gertvdijk

@gertvdijk Ho risposto a questo nel 2014. Ansible ha subito una serie di revisioni. Non è più così?
Rico

68

Sì, puoi impostarlo a livello di inventario / host.

Con una risposta già accettata presente, penso che questa sia una risposta migliore alla domanda su come gestirla a livello di inventario. Lo considero più sicuro isolando questa impostazione insicura agli host richiesti per questo (ad esempio, sistemi di test, macchine di sviluppo locale).

Quello che puoi fare a livello di inventario è aggiungere

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

o

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

alla definizione del tuo host (vedi Ansible Behavioral Inventory Parameters ).

Funzionerà a condizione di utilizzare il sshtipo di connessione, non paramikoo qualcos'altro).

Ad esempio, una definizione di host Vagrant sarebbe simile a ...

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

o

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

L'esecuzione di Ansible avrà quindi esito positivo senza modificare alcuna variabile di ambiente.

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

Nel caso in cui desideri farlo per un gruppo di host, ecco un suggerimento per renderlo una var di gruppo supplementare per un gruppo esistente come questo:

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

[insecuressh:children]
mytestsystems

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

4
Questa è una risposta molto migliore.
marcv81

Questo suggerimento ha funzionato per me e sono d'accordo sul fatto che dovrebbe essere impostato a livello di progetto (piuttosto che a livello globale) per motivi di sicurezza.
andrewdcato

1
Ho incluso ansible_ssh_common_args: '-o StrictHostKeyChecking=no'nel file yml del file group_vars.
g.

4

Non ho potuto usare:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

nel file di inventario. Sembra che ansible non consideri questa opzione nel mio caso (ansible 2.0.1.0 da pip in ubuntu 14.04)

Ho deciso di utilizzare:

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

Mi ha aiutato.

Inoltre puoi impostare questa variabile in gruppo invece per ogni host:

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

Anche l'impostazione dell'opzione UserKnownHostsFile/ GlobalKnownHostsFilesu /dev/nullfunziona davvero. È strano che l'impostazione StrictHostKeyCheckingnon funzioni per te. Molto probabilmente la causa è qualche opzione nella configurazione SSH.
gertvdijk

+1 per -o UserKnownHostsFile=/dev/null. Senza di esso anche semplicemente non funzionava per me, indipendentemente dal luogo e dal modo che ho specificato ansible_ssh_common_args nelle altre risposte.
Fino a Kuhn,

0

In /etc/ansible/ansible.cfgdecommenta la riga:

host_key_check = False

e in un /etc/ansible/hostscommento la linea

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

È tutto


0

L'aggiunta di quanto segue alla configurazione ansible ha funzionato durante l'utilizzo di comandi ad hoc ansible:

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

Versione Ansible

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

0

Puoi impostare queste configurazioni nel file /etc/ansible/ansible.cfgo ~/.ansible.cfgo ansible.cfg(nella directory corrente)

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

testato con ansible 2.9.6 in ubuntu 20.04

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.