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


113

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

답변:


182

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
    

32
ansible 1.7.2를 사용하고 있으며 환경 변수가 ANSIBLE_HOST_KEY_CHECKING작동하지만 작동 -e 'host_key_checking=False'하지 않는 경험이 있습니다.
Marc Abramowitz 2014

6
첫 번째 "예,하지만 호스트 / 인벤토리 수준이 아님"은 거짓입니다. 당신은 사용할 수 있습니다 ansible_ssh_common_args='-o StrictHostKeyChecking=no'또는ansible_ssh_extra_args='-o StrictHostKeyChecking=no'
Shammel 리에게

1
플레이 북을 실행하기 전에 마지막 옵션 만 작동했습니다 (ANSIBLE_HOST_KEY_CHECKING = False 내보내기).
ted-k42

1
"예,하지만 호스트 / 인벤토리 수준은 아닙니다." - 내 대답에 의해 입증 된 거짓 인 것으로 나타났습니다 . 나는 이것이 재고 수준 에서 설정하는 방법에 대한 질문에 대한 답이 아니라고 말하고 싶습니다 .
gertvdijk

@gertvdijk 저는 2014 년에이 질문에 답했습니다. Ansible은 많은 수정을 거쳤습니다. 더 이상 그렇지 않습니까?
Rico

68

예, 인벤토리 / 호스트 수준에서 설정할 수 있습니다 .

이미 받아 들여진 답변이 있으면 재고 수준에서 이것을 처리하는 방법에 대한 질문에 대한 더 나은 답변이라고 생각합니다. 이 안전하지 않은 설정을이를 위해 필요한 호스트 (예 : 테스트 시스템, 로컬 개발 머신)로 격리함으로써 더 안전하다고 생각합니다.

재고 수준에서 할 수있는 일은

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'

4
이것은 훨씬 더 나은 대답입니다.
marcv81

이 제안은 저에게 효과적이며 보안 문제로 인해 글로벌 수준이 아닌 프로젝트 수준에서 설정되어야한다는 데 동의합니다.
andrewdcato

1
ansible_ssh_common_args: '-o StrictHostKeyChecking=no'group_vars 파일 yml 파일에 포함 되었습니다.
g.

4

사용할 수 없습니다.

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'

설정 UserKnownHostsFile/ GlobalKnownHostsFile에 옵션을 /dev/null또한 실제로 작동합니다. 설정 StrictHostKeyChecking이 작동하지 않는 것이 이상 합니다. 대부분의 경우 SSH 구성의 일부 옵션이 원인입니다.
gertvdijk

에 대한 +1 -o UserKnownHostsFile=/dev/null. 그것 없이는 또한 ansible_ssh_common_args 다른 답변에 설명 된 위치와 방식에 관계없이 나를 위해 작동하지 않았습니다 .
Till Kuhn

0

에서 /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

그게 다야


0

ansible 구성에 다음을 추가하면 ansible ad-hoc 명령을 사용하는 동안 작동했습니다.

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

Ansible 버전

ansible 2.1.6.0
config file = /etc/ansible/ansible.cfg

0

이러한 구성은 /etc/ansible/ansible.cfg또는 ~/.ansible.cfg또는 ansible.cfg(현재 디렉토리) 파일에서 설정합니다.

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

우분투 20.04에서 ansible 2.9.6으로 테스트되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.