Programing

ansible 인벤토리 파일에서 host_key_checking = false를 설정하는 방법은 무엇입니까?

crosscheck 2020. 8. 30. 07:41
반응형

ansible 인벤토리 파일에서 host_key_checking = false를 설정하는 방법은 무엇입니까?


ansible-playbook' vagrant provision' 대신 명령 을 사용하고 싶습니다 . 그러나 설정 host_key_checking=falsehosts파일은 작동하지 않습니다.

# 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이 값을 재정 할 수있는 외부 구성 변수가 있습니까?


2014 년에 이에 답변했기 때문에 최신 버전의 ansible을 고려하여 답변을 업데이트했습니다.

예, 호스트 / 인벤토리 수준 ( 최신 ansible 버전 에서 가능 해짐 ) 또는 글로벌 수준 에서 수행 할 수 있습니다 .

재고 :

다음을 추가하십시오.

ansible_ssh_common_args='-o StrictHostKeyChecking=no'

호스트 :

다음을 추가하십시오.

ansible_ssh_extra_args='-o StrictHostKeyChecking=no'

호스트 / 재고 옵션은 연결 유형에서 작동 ssh하지 paramiko. 어떤 사람들은 범위가 더 제한되어 있기 때문에 인벤토리와 호스트가 더 안전하다고 강력하게 주장 할 수 있습니다.

글로벌 :

Ansible 사용 설명서-호스트 키 확인

  • /etc/ansible/ansible.cfg또는 ~/.ansible.cfg파일 에서 수행 할 수 있습니다 .

    [defaults]
    host_key_checking = False
    
  • 또는 설정 및 환경 변수를 설정할 수 있습니다 (최신 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 호스트 정의는 다음과 같습니다.

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"
}

호스트 그룹에 대해이 작업을 수행하려는 경우 다음과 같이 기존 그룹에 대한 보충 그룹 변수로 만드는 제안이 있습니다.

[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'

재고 파일에서. 내 경우에는 ansible 이이 옵션을 고려하지 않는 것 같습니다 (우분투 14.04의 pip에서 ansible 2.0.1.0)

나는 사용하기로 결정했다 :

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

그게 다야


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

참고URL : https://stackoverflow.com/questions/23074412/how-to-set-host-key-checking-false-in-ansible-inventory-file

반응형