Dieser Eintrag ist der 11. Tagesbeitrag von Ansible 3 Adventskalender 2019. Es war nur frei, also habe ich es geschrieben.
main.yml
# vars:
# - ssh_host_and_user:
# - from:
# user: vagrant
# host: A
# to:
# user: root
# host: B
#Speichern Sie den öffentlichen Schlüssel des Root-Benutzers von Host B in einer Variablen
- name: Copy public key to variable
slurp:
src: "{{ ROOT_PUBLIC_KEY_HOST_B }}"
with_items: "{{ ssh_host_and_user }}"
register: to_host_public_key
when: item.to.host == inventory_hostname
#Host A.,Holen Sie sich das Home-Verzeichnis eines beliebigen Benutzers
- name: Get home direcotry of from.user
shell: |
set -o pipefail
egrep "^{{ item.from.user }}:" /etc/passwd | awk -F: '{ print $6 }'
register: from_user_home_directory
with_items: "{{ ssh_host_and_user }}"
changed_when: false
failed_when: from_user_home_directory.rc != 0
when: item.from.host == inventory_hostname
#Der öffentliche Schlüssel des Root-Benutzers von Host B, bekannt von Host A._Schreiben Sie an die Hosts
- name: Add Host B infomation to known_hosts in Host A
become: item.from.user
known_hosts:
key: "{{ item.to.host }}
{{ hostvars[item.to.host].to_host_public_key.results[0].content | b64decode }}"
name: "{{ item.to.host }}"
path: "{{ hostvars[item.from.host].from_user_home_directory.results[my_idx].stdout }}/.ssh/known_hosts"
state: present
with_items: "{{ ssh_host_and_user }}"
loop_control:
index_var: my_idx
when: item.from.host == inventory_hostname
Mit dem Modul unknown_hosts habe ich einen Prozess geschrieben, um die SSH-Erstbestätigungsnachricht nicht auszugeben.
Recommended Posts