Как установить host key checking=false в Ansible inventory file?
Я хотел бы использовать вместо '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
что может переопределить это значение?
5 ответов:
из-за того, что я ответил на этот вопрос в 2014 году, я обновил свой ответ, чтобы учесть более поздние версии ansible.
Да, вы можете сделать это на уровне хоста / инвентаря (что стало возможным на новые версии ansible) или глобальном уровне:
инвентаризации:
добавить следующее.
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
хоста:
добавить следующий.
ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
параметры hosts/inventory будут работать с типом соединения
ssh
, а неparamiko
. Некоторые люди могут решительно утверждать, что инвентарь и хосты более безопасны, потому что область действия более ограничена.global:
вы можете сделать это либо в
/etc/ansible/ansible.cfg
или~/.ansible.cfg
file:[defaults] host_key_checking = False
или вы можете передать его из команды линия:
ansible-playbook -e 'host_key_checking=False' yourplaybook.yml
или вы можете настроить и env переменную (это может не работать на более новых версиях ansible):
export ANSIBLE_HOST_KEY_CHECKING=False
Да, вы можете установите это на уровне инвентаризации / хоста.
С уже принятый ответ, я думаю, это лучший ответ на вопрос о том, как справиться с этим на уровень запасов. Я считаю это более безопасным, изолируя эту небезопасную настройку на хосты, необходимые для этого (например, тестовые системы, локальные машины разработки).
что вы можете сделать на уровне запасов добавить
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'