Как установить 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