Как установить host key checking=false в файле инвентаризации ansible?

Я хотел бы использовать вместо 'vagrant provision'. Однако установка host_key_checking=false на не работает.

# 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

есть ли переменная конфигурации вне Vagrantfile что может переопределить это значение?

5 ответов


из-за того, что я ответил на это в 2014 году, я обновил свой ответ для учета более поздних версий ansible.

Да, вы можете сделать это на уровне хоста / инвентаря (что стало возможным на новые версии ansible) или глобальном уровне:

инвентаризации:

добавить следующее.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

хоста:

добавить следующий.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

хосты / параметры инвентаризации будут работать с типом подключения ssh, а не paramiko. Некоторые люди могут сильно утверждать, что инвентаризация и хосты более безопасны, потому что область более ограничена.

общие:

  • вы можете сделать это либо в /etc/ansible/ansible.cfg или :

    [defaults]
    host_key_checking = False
    
  • или вы можете передать его из команды строка:

    ansible-playbook -e 'host_key_checking=False' yourplaybook.yml
    
  • или вы можете настроить и переменную env (это может не работать на более новых версиях ansible):

    export ANSIBLE_HOST_KEY_CHECKING=False
    

Да, вы can установите это на уровне инвентаризации / хоста.

С уже принятым ответом, я думаю, что это лучший ответ на вопрос о том, как справиться с этим на уровне запасов. Я считаю это более безопасным, изолируя этот небезопасный параметр для хостов, необходимых для этого (например, тестовые системы, локальные машины разработки).

что вы можете сделать на уровне запасов добавить

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

или

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

для определения хоста (см. Ansible Поведенческие Параметры Инвентаризации).

это будет работать при условии, что вы используете ssh тип соединения, а не paramiko или что-то еще).

например, определение бродячего хоста будет выглядеть как...

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

или

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

запуск Ansible будет успешным без изменения какой-либо среды переменная.

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

если вы хотите сделать это для группы хостов, вот предложение сделать его дополнительной группой var для существующей группы, как это:

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

[insecuressh:children]
mytestsystems

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

Я не могу использовать:

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

в файл inventory. Кажется, ansible не рассматривает этот вариант в моем случае (ansible 2.0.1.0 от pip в ubuntu 14.04)

я решил использовать:

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

это помогло мне.

также вы можете установить эту переменную в группе вместо каждого хоста:

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

на /etc/ansible/ansible.cfg раскомментируйте строку:

host_key_check = False

и /etc/ansible/hosts раскомментируйте строку

client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678

вот и все


добавление следующего в конфигурацию ansible работало при использовании команд Ansible ad-hoc:

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

Ansible Version

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