|
- {%- set minions = salt.slsutil.renderer(opts['config_dir'] + '/roster') %}
- {%- set cache_dir = opts['cachedir'] + '/../master/known_hosts_salt_ssh' %}
- {%- set cmd = "cat /etc/ssh/ssh_host_*_key.pub 2>/dev/null" %}
-
- {{ cache_dir }}:
- file.directory:
- - makedirs: True
-
- {%- for minion_id in minions %}
- {%- set salt_ssh_cmd = "salt-ssh --out=json --static '{}' cmd.run_all '{}'".format(minion_id, cmd) %}
- {%- set result = salt['cmd.run_all'](salt_ssh_cmd,
- python_shell=True,
- runas=salt['pillar.get']('openssh:known_hosts:salt_ssh:user', 'salt-master')
- )
- %}
-
- {%- set pubkeys = False %}
- {%- if result['retcode'] == 0 %}
- {%- load_json as inner_result %}
- {{ result['stdout'] }}
- {%- endload %}
- {%- set pubkeys = inner_result[minion_id]['stdout'].splitlines() | sort | join("\n") %}
- {%- else %}
- {%- do salt.log.error("{} failed: {}".format(salt_ssh_cmd, result)) %}
- {%- endif %}
-
- {%- if pubkeys %}
- {{ cache_dir }}/{{ minion_id }}.pub:
- file.managed:
- - contents: |
- {{ pubkeys | indent(8) }}
- - require:
- - file: {{ cache_dir }}
- {%- endif %}
-
- {%- endfor %}
|