Как установить host_key_checking = false в файле незаменимых ресурсов?
Я хотел бы использовать команду ansible-playbook
вместо 'vagrant provision
'. Однако установка host_key_checking=false
в файле hosts
не работает.
# 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
, которая может переопределить это значение?
Ответы
Ответ 1
Да, но не на уровне хозяев/инвентаря. Вы можете сделать это на глобальном уровне.
-
Вы можете сделать это либо в файле /etc/ansible/ansible.cfg
, либо ~/.ansible.cfg
:
[defaults]
host_key_checking = False
-
Или вы можете передать его из командной строки:
ansible-playbook -e 'host_key_checking=False' yourplaybook.yml
-
Или вы можете установить переменную env (это может не работать в более новых версиях):
export ANSIBLE_HOST_KEY_CHECKING=False
Ответ 2
Да, вы можете установить это на уровне инвентаря/хоста.
Имея уже принятый ответ, я думаю, что это лучший ответ на вопрос о том, как справиться с этим на уровне запасов. Я считаю это более безопасным, изолируя эту небезопасную настройку хостам, требуемым для этого (например, тестовые системы, локальные машины разработки).
Что вы можете сделать на уровне инвентаря, добавьте
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
или
ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
для определения вашего хоста (см. Параметры Anseible Behavioral Inventory).
Это будет работать, если вы используете тип соединения 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'
Ответ 3
Я не мог использовать:
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
в файле инвентаря. Кажется, он не учитывает этот вариант в моем случае (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'
Ответ 4
В /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
Что все