How to set host_key_checking=false in ansible inventory file?

前端 未结 6 537
清歌不尽
清歌不尽 2020-12-12 12:10

I would like to use ansible-playbook command instead of \'vagrant provision\'. However setting host_key_checking=false in the ho

相关标签:
6条回答
  • 2020-12-12 12:57

    I could not use:

    ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    

    in inventory file. It seems ansible does not consider this option in my case (ansible 2.0.1.0 from pip in ubuntu 14.04)

    I decided to use:

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

    It helped me.

    Also you could set this variable in group instead for each host:

    [servers_group:vars]
    ansible_ssh_common_args='-o UserKnownHostsFile=/dev/null'
    
    0 讨论(0)
  • 2020-12-12 13:01

    Yes, you can set this on the inventory/host level.

    With an already accepted answer present, I think this is a better answer to the question on how to handle this on the inventory level. I consider this more secure by isolating this insecure setting to the hosts required for this (e.g. test systems, local development machines).

    What you can do at the inventory level is add

    ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    

    or

    ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
    

    to your host definition (see Ansible Behavioral Inventory Parameters).

    This will work provided you use the ssh connection type, not paramiko or something else).

    For example, a Vagrant host definition would look like…

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

    or

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

    Running Ansible will then be successful without changing any environment variable.

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

    In case you want to do this for a group of hosts, here's a suggestion to make it a supplemental group var for an existing group like this:

    [mytestsystems]
    test[01:99].example.tld
    
    [insecuressh:children]
    mytestsystems
    
    [insecuressh:vars]
    ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    
    0 讨论(0)
  • 2020-12-12 13:01

    You set these configs either in the /etc/ansible/ansible.cfg or ~/.ansible.cfg or ansible.cfg(in your current directory) file

    [ssh_connection]
    ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
    

    tested with ansible 2.9.6 in ubuntu 20.04

    0 讨论(0)
  • 2020-12-12 13:05

    Due to the fact that I answered this in 2014, I have updated my answer to account for more recent versions of ansible.

    Yes, you can do it at the host/inventory level (Which became possible on newer ansible versions) or global level:

    inventory:

    Add the following.

    ansible_ssh_common_args='-o StrictHostKeyChecking=no'
    

    host:

    Add the following.

    ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
    

    hosts/inventory options will work with connection type ssh and not paramiko. Some people may strongly argue that inventory and hosts is more secure because the scope is more limited.

    global:

    Ansible User Guide - Host Key Checking

    • You can do it either in the /etc/ansible/ansible.cfg or ~/.ansible.cfg file:

      [defaults]
      host_key_checking = False
      
    • Or you can setup and env variable (this might not work on newer ansible versions):

      export ANSIBLE_HOST_KEY_CHECKING=False
      
    0 讨论(0)
  • 2020-12-12 13:08

    Adding following to ansible config worked while using ansible ad-hoc commands:

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

    Ansible Version

    ansible 2.1.6.0
    config file = /etc/ansible/ansible.cfg
    
    0 讨论(0)
  • 2020-12-12 13:09

    In /etc/ansible/ansible.cfg uncomment the line:

    host_key_check = False
    

    and in /etc/ansible/hosts uncomment the line

    client_ansible ansible_ssh_host=10.1.1.1 ansible_ssh_user=root ansible_ssh_pass=12345678
    

    That's all

    0 讨论(0)
提交回复
热议问题