Created
June 7, 2017 21:26
-
-
Save anonymous/a23a0d965f68a4f238d85068148772e5 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{# Define master lists #} | |
{% set master_default_path = "files/default/" ~ grains['os'] ~ "/" ~ grains['osmajorrelease'] ~ "/etc" %} | |
{% set master_custom_path = "files/custom/" ~ grains['os'] ~ "/" ~ grains['osmajorrelease'] ~ "/" ~ grains['id'] ~ "/etc" %} | |
{% set master_default_file_list = salt.cp.list_master(prefix=master_default_path) %} | |
{% set master_custom_file_list = salt.cp.list_master(prefix=master_custom_path) %} | |
{% set trimmed_custom_list = [] %} | |
{% set master_file_list = [] %} | |
{# Create master file list #} | |
{% for file_path in master_default_file_list %} | |
{% set relative_path = file_path.split('/')[4:]|join('/') %} | |
{% do master_file_list.append(relative_path) %} | |
{% endfor %} | |
{% for file_path in master_custom_file_list %} | |
{% set relative_path = file_path.split('/')[5:]|join('/') %} | |
{% do master_file_list.append(relative_path) %} | |
{% do trimmed_custom_list.append(relative_path) %} | |
{% endfor %} | |
{# Remove duplicates from master list (requires custom salt/utils/jinja.py until SaltStack Nitrogen #} | |
{% set final_list = master_file_list | unique %} | |
{# Iterate through master list, check for custom, and push to minion #} | |
{% for file_path in final_list %} | |
{% if file_path in trimmed_custom_list %} | |
{{ "custom_" ~ file_path }}: | |
{% else %} | |
{{ file_path }}: | |
{% endif %} | |
file.managed: | |
- name: {{ "/" ~ file_path }} | |
{% if file_path in trimmed_custom_list %} | |
- source: salt://files/custom/{{ grains['os'] }}/{{ grains['osmajorrelease'] }}/{{ grains['id'] }}/{{ file_path }} | |
{% else %} | |
- source: salt://files/default/{{ grains['os'] }}/{{ grains['osmajorrelease'] }}/{{ file_path }} | |
{% endif %} | |
- mode: keep | |
{% endfor %} | |
{# Output to machine's /tmp for testing #} | |
/tmp/final.txt: | |
file.managed: | |
- contents: | | |
{{ final_list }} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment