Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(salt-minion): remove old code, rearrange & reformat #416

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 40 additions & 58 deletions salt/minion.sls
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,53 @@
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}

{% if salt_settings.install_packages and grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source != '' and salt_settings.version != '' %}
{# only download IF we know where to get the pkg from and if we know what version to check the current install (if installed) against #}
{# e.g. don't download unless it appears as though we're about to try and upgrade the minion #}
{%- if salt_settings.install_packages and grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source != '' and salt_settings.version != '' %}
{#- only download IF we know where to get the pkg from and if we know what version to check the current install (if installed) against #}
{#- e.g. don't download unless it appears as though we're about to try and upgrade the minion #}
download-salt-minion:
file.managed:
- name: '/tmp/salt.pkg'
- source: {{ salt_settings.salt_minion_pkg_source }}
{% if salt_settings.salt_minion_pkg_hash != '' %}
{%- if salt_settings.salt_minion_pkg_hash != '' %}
- source_hash: {{ salt_settings.salt_minion_pkg_hash }}
{% else %}
{%- else %}
- skip_verify: True
{% endif %}
{%- endif %}
- user: root
- group: wheel
- mode: 0644
- unless:
- '/opt/salt/bin/salt-minion --version | grep {{ salt_settings.version }}'
- require_in:
- macpackage: salt-minion
{% endif %}
{%- endif %}

salt-minion:
{% if salt_settings.install_packages %}
{%- if salt_settings.install_packages %}
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source != '' and salt_settings.version != '' %}
macpackage.installed:
- name: '/tmp/salt.pkg'
- target: /
{# macpackage.installed behaves weirdly with version_check; version_check detects difference but fails to actually complete install. #}
{# use force == True as workaround #}
{#- macpackage.installed behaves weirdly with version_check; version_check detects difference but fails to actually complete install. #}
{#- use force == True as workaround #}
- force: True
- version_check: /opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*
- require_in:
- service: salt-minion
{%- else %}
pkg.installed:
- name: {{ salt_settings.salt_minion }}
{%- if salt_settings.version is defined %}
{%- if salt_settings.version is defined %}
- version: {{ salt_settings.version }}
{%- endif %}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I resolved the conflict but missed this - line 53 needs to be deleted.

{%- endif %}
- require_in:
- service: salt-minion
{%- endif %}
{% endif %}
- onchanges_in:
- cmd: salt-minion
{%- if salt_settings.restart_via_at %}
- cmd: restart-salt-minion
{%- endif %}
{%- endif %}

file.recurse:
- name: {{ salt_settings.config_path }}/minion.d
{%- if salt_settings.minion_config_use_TOFS %}
Expand All @@ -61,93 +65,71 @@ salt-minion:
{%- endif %}
- clean: {{ salt_settings.clean_config_d_dir }}
- exclude_pat: _*
- onchanges_in:
- cmd: salt-minion
{%- if salt_settings.restart_via_at %}
- cmd: restart-salt-minion
{%- endif %}

service.running:
- enable: True
- name: {{ salt_settings.minion_service }}
- require:
- file: salt-minion

{%- if not salt_settings.restart_via_at %}
cmd.run:
{%- if grains['saltversioninfo'][0] >= 2016 and grains['saltversioninfo'][1] >= 3 %}
{%- if grains['kernel'] == 'Windows' %}
- name: 'salt-call.bat --local service.restart {{ salt_settings.minion_service }}'
{%- else %}
- name: 'salt-call --local service.restart {{ salt_settings.minion_service }} --out-file /dev/null'
{%- endif %}
- bg: True
{%- else %}
{%- if grains['kernel'] == 'Windows' %}
- name: 'start powershell "Restart-Service -Name {{ salt_settings.minion_service }}"'
{%- else %}
# old style, pre 2016.3. fork and disown the process
- name: |-
exec 0>&- # close stdin
exec 1>&- # close stdout
exec 2>&- # close stderr
nohup salt-call --local service.restart {{ salt_settings.minion_service }} --out-file /dev/null &
{%- endif %}
{%- endif %}
- onchanges:
{%- if salt_settings.install_packages %}
{%- if grains.os == 'MacOS' %}
- macpackage: salt-minion
{%- else %}
- pkg: salt-minion
{%- endif %}
{%- endif %}
- file: salt-minion
- file: remove-old-minion-conf-file
{%- else %}

{% if grains.os != 'MacOS' %}
{# MacOS has 'at' command; but there's no package to install #}
{%- if grains.os != 'MacOS' %}
{#- MacOS has 'at' command; but there's no package to install #}
at:
pkg.installed: []
{% endif %}
{%- endif %}

restart-salt-minion:
cmd.run:
- name: echo salt-call --local service.restart {{ salt_settings.minion_service }} | at now + 1 minute
- order: last
- require:
- pkg: at
- onchanges:
{%- if salt_settings.install_packages %}
{%- if grains.os == 'MacOS' %}
- macpackage: salt-minion
{%- else %}
- pkg: salt-minion
{%- endif %}
{%- endif %}
- file: salt-minion
- file: remove-old-minion-conf-file
{%- endif %}

{% if 'inotify' in salt_settings.get('minion', {}).get('beacons', {}) and salt_settings.get('pyinotify', False) %}
{%- if 'inotify' in salt_settings.get('minion', {}).get('beacons', {}) and salt_settings.get('pyinotify', False) %}
salt-minion-beacon-inotify:
pkg.installed:
- name: {{ salt_settings.pyinotify }}
- require_in:
- service: salt-minion
- watch_in:
- service: salt-minion
{% endif %}
{%- endif %}

{% if salt_settings.minion_remove_config %}
{%- if salt_settings.minion_remove_config %}
remove-default-minion-conf-file:
file.absent:
- name: {{ salt_settings.config_path }}/minion
{% endif %}
{%- endif %}

# clean up old _defaults.conf file if they have it around
remove-old-minion-conf-file:
file.absent:
- name: {{ salt_settings.config_path }}/minion.d/_defaults.conf
- onchanges_in:
- cmd: salt-minion
{%- if salt_settings.restart_via_at %}
- cmd: restart-salt-minion
{%- endif %}

{% if grains.os == 'MacOS' %}
{%- if grains.os == 'MacOS' %}
remove-macpackage-salt:
cmd.run:
- name: 'rm -f /tmp/salt.pkg'
- onchanges:
- macpackage: salt-minion
{% endif %}
{%- endif %}