Подтвердить что ты не робот

Как установить 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, которая может переопределить это значение?

4b9b3361

Ответ 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

Что все