-
Notifications
You must be signed in to change notification settings - Fork 206
Closed
Labels
affects-0.3Issues related to 0.3.X Mitogen releasesIssues related to 0.3.X Mitogen releasesbugCode feature that hinders desired execution outcomeCode feature that hinders desired execution outcome
Description
When adding a managed node to the current inventory using add_host the variable ansible_host_key_checking is not honoured. Let's say we have a vanilla machine ansible-test-100 and this playbook:
---
- hosts: localhost
gather_facts: no
tasks:
- add_host:
name: ansible-test-100
ansible_host: 192.168.122.100
ansible_ssh_private_key_file: /tmp/ansibletest-leases/100/id_ed25519
- hosts: ansible-test-100
remote_user: ansible
become: no
tasks:
- copy: content="Hello world" dest=/tmp/blah
- file: path=/tmp/blah state=absentAs ssh doesn't know about the ssh host key yet, the playbook will prompt for a fingerprint confirmation:
$ ANSIBLE_STRATEGY=linear ansible-playbook foo.yml
PLAY [localhost] ******************************************************************************************************
TASK [add_host] *******************************************************************************************************
changed: [localhost]
PLAY [ansible-test-100] ***********************************************************************************************
The authenticity of host '192.168.122.100 (192.168.122.100)' can't be established.
ED25519 key fingerprint is SHA256:JzKOGkgn5xX67/IAksbd/S/cof9Vzn1FD25a+pQfgXQ.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
To circumvent this, we can add ansible_host_key_checking: no to the add_host task:
- add_host:
name: ansible-test-100
ansible_host: 192.168.122.100
ansible_ssh_private_key_file: /tmp/ansibletest-leases/100/id_ed25519
ansible_host_key_checking: noNow the playbook runs fine:
$ ANSIBLE_STRATEGY=linear ansible-playbook foo.yml
PLAY [localhost] ******************************************************************************************************
TASK [add_host] *******************************************************************************************************
changed: [localhost]
PLAY [ansible-test-100] ***********************************************************************************************
TASK [copy] ***********************************************************************************************************
--- before
+++ after: /tmp/blah
@@ -0,0 +1 @@
+Hello world
\ No newline at end of file
changed: [ansible-test-100]
TASK [file] ***********************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
{
"path": "/tmp/blah",
- "state": "file"
+ "state": "absent"
}
changed: [ansible-test-100]
PLAY RECAP ************************************************************************************************************
ansible-test-100 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Yet this doesn't work with mitogen:
$ ANSIBLE_STRATEGY=mitogen_linear ansible-playbook foo.yml
PLAY [localhost] ******************************************************************************************************
TASK [add_host] *******************************************************************************************************
changed: [localhost]
PLAY [ansible-test-100] ***********************************************************************************************
TASK [copy] ***********************************************************************************************************
fatal: [ansible-test-100]: UNREACHABLE! => {"changed": false, "msg": "Host key checking is enabled, and SSH reported an unrecognized or mismatching host key.", "unreachable": true}
PLAY RECAP ************************************************************************************************************
ansible-test-100 : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
I suggest to add mitogen_ssh_host_key_checking which accepts accept, enforce or ignore to mimic this behaviour:
- add_host:
name: ansible-test-100
ansible_host: 192.168.122.100
ansible_ssh_private_key_file: /tmp/ansibletest-leases/100/id_ed25519
ansible_host_key_checking: no
mitogen_ssh_host_key_checking: ignore=>
$ ANSIBLE_STRATEGY=mitogen_linear ansible-playbook foo.yml
PLAY [localhost] ******************************************************************************************************
TASK [add_host] *******************************************************************************************************
changed: [localhost]
PLAY [ansible-test-100] ***********************************************************************************************
TASK [copy] ***********************************************************************************************************
--- before
+++ after: /tmp/blah
@@ -0,0 +1 @@
+Hello world
\ No newline at end of file
changed: [ansible-test-100]
TASK [file] ***********************************************************************************************************
--- before
+++ after
@@ -1,4 +1,4 @@
{
"path": "/tmp/blah",
- "state": "file"
+ "state": "absent"
}
changed: [ansible-test-100]
PLAY RECAP ************************************************************************************************************
ansible-test-100 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
I'll open a draft pr for this, it'd be nice if you could have a look. Or maybe I'm just reinventing the wheel and such a feature already exists somehow 😄
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
affects-0.3Issues related to 0.3.X Mitogen releasesIssues related to 0.3.X Mitogen releasesbugCode feature that hinders desired execution outcomeCode feature that hinders desired execution outcome