Hi,
The known_hosts module expects a complete "known_hosts - line" as key
value. The public key from /etc/ssh lists no hostname. So in your example
the correct behaviour can be achieved by preceding the hostname:
Example:
...
- name: known_hosts
known_hosts: path="/home/xiaoliang/.ssh/known_hosts" host="sun1-db-1"
state=present
key="sun1-db-1 {{ lookup('file', '/tmp/keys/
10.223.0.51/etc/ssh/ssh_host_rsa_key.pub') }}"
...
Cheers
Ulli
Am Freitag, 29. Mai 2015 14:36:38 UTC+2 schrieb Leon Xie:
>
> Hi all,
>
> I use the below playbook to add known hosts:
>
> ============================================================
> - name: demo
> hosts: 10.223.0.51
> remote_user: root
> tasks:
> - name: fetch
> fetch: src=/etc/ssh/ssh_host_rsa_key.pub dest=/tmp/keys
> fail_on_missing=yes validate_checksum=yes
> - name: demo
> hosts: 10.223.0.52
> remote_user: root
> tasks:
> - name: known_hosts
> known_hosts: path="/home/xiaoliang/.ssh/known_hosts"
> host="sun1-db-1" state=present
> key="{{ lookup('file', '/tmp/keys/
> 10.223.0.51/etc/ssh/ssh_host_rsa_key.pub') }}"
>
> ============================================================
>
> ============================================================
> $ ansible-playbook -i ../../inventory/hosts demo.yml -vvvv
>
> PLAY [demo]
> *******************************************************************
>
> TASK: [fetch]
> *****************************************************************
> <10.223.0.51> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 10.223.0.51
> <10.223.0.51> EXEC /bin/sh -c 'rc=flag; [ -r /etc/ssh/ssh_host_rsa_key.pub
> ] || rc=2; [ -f /etc/ssh/ssh_host_rsa_key.pub ] || rc=1; [ -d
> /etc/ssh/ssh_host_rsa_key.pub ] && rc=3; python -V 2>/dev/null || rc=4; [
> x"$rc" != "xflag" ] && echo "${rc} "/etc/ssh/ssh_host_rsa_key.pub && exit
> 0; (python -c '"'"'import hashlib; BLOCKSIZE = 65536; hasher =
> hashlib.sha1(); afile = open("'"'"'/etc/ssh/ssh_host_rsa_key.pub'"'"'",
> "rb") buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf)
> buf = afile.read(BLOCKSIZE) afile.close() print(hasher.hexdigest())'"'"'
> 2>/dev/null) || (python -c '"'"'import sha; BLOCKSIZE = 65536; hasher =
> sha.sha(); afile = open("'"'"'/etc/ssh/ssh_host_rsa_key.pub'"'"'", "rb")
> buf = afile.read(BLOCKSIZE) while len(buf) > 0: hasher.update(buf) buf =
> afile.read(BLOCKSIZE) afile.close() print(hasher.hexdigest())'"'"'
> 2>/dev/null) || (echo '"'"'0 '"'"'/etc/ssh/ssh_host_rsa_key.pub)'
> ok: [10.223.0.51] => {"changed": false, "checksum":
> "312b6e08531e50f6baa21bf87f0dd8adbaad0c0d", "dest": "/tmp/keys/
> 10.223.0.51/etc/ssh/ssh_host_rsa_key.pub", "file":
> "/etc/ssh/ssh_host_rsa_key.pub", "md5sum":
> "cb9f17d1febefd7c66fc79967606d272"}
>
> PLAY [demo]
> *******************************************************************
>
> TASK: [known_hosts]
> ***********************************************************
> <10.223.0.52> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 10.223.0.52
> <10.223.0.52> REMOTE_MODULE known_hosts
> path="/home/xiaoliang/.ssh/known_hosts" host="sun1-db-1" state=present
> key="ssh-rsa
> AAAAB3NzaC1yc2EAAAABIwAAAQEAtqGtO6VLYU3kWIWoiKKg8rgEQvEB/wHP1aZEK95kQ1yekDIK8Vfj4VQ3+pKqwTirwSF9ODeZR1VaC+K4b6Oke9bJ/0h5bXiRzzvmD/wu+c6uEtjtMdNYzQnLu4UNCCh1Fa6Pktm2Lz9xSxTcFyIncxgFSxqabf12OVYWsYaj7BwO6Wgs/pYoJjDv+IgJpUwvsPhJkX2s/Ak/U4JwnuaxXB/wufF/eFbEnTUbTv7o7KpHqX50Ok/daN05AVcC/oYPf79wOaeBsPMnTNisqjYJNSgS1EpTw1ZNxqwiRUpcyx8SQ/uI1caA06Q8g7RcNmLWiEM0t5lx2LjScX4ztrIYxQ=="
> <10.223.0.52> EXEC /bin/sh -c 'mkdir -p
> $HOME/.ansible/tmp/ansible-tmp-1432862043.76-101243566006070 && echo
> $HOME/.ansible/tmp/ansible-tmp-1432862043.76-101243566006070'
> <10.223.0.52> PUT /tmp/tmp54Yy4J TO
> /root/.ansible/tmp/ansible-tmp-1432862043.76-101243566006070/known_hosts
> <10.223.0.52> EXEC /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8
> /usr/bin/python
> /root/.ansible/tmp/ansible-tmp-1432862043.76-101243566006070/known_hosts;
> rm -rf /root/.ansible/tmp/ansible-tmp-1432862043.76-101243566006070/
> >/dev/null 2>&1'
> failed: [10.223.0.52] => {"cmd": "/usr/bin/ssh-keygen -F sun1-db-1 -f
> /tmp/tmpxxoJ6Q", "failed": true, "rc": 1}
> stderr: line 1 invalid key: ssh-rsa...
> /tmp/tmpxxoJ6Q is not a valid known_hosts file.
>
> msg: line 1 invalid key: ssh-rsa...
> /tmp/tmpxxoJ6Q is not a valid known_hosts file.
>
> FATAL: all hosts have already failed -- aborting
>
> PLAY RECAP
> ********************************************************************
> to retry, use: --limit @/home/xiaoliang/demo.retry
>
> 10.223.0.51 : ok=1 changed=0 unreachable=0
> failed=0
> 10.223.0.52 : ok=0 changed=0 unreachable=0
> failed=1
> ============================================================
>
>
> will anyone please help to look at this? or point me to the right
> direction?
>
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/08c2c9ef-e4ca-43ec-9245-04461fa66ad1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.