|
|
@@ -7,19 +7,19 @@ include: |
|
|
|
- .pin |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
{% if salt_settings.install_packages and grains.os == 'MacOS' %} |
|
|
|
{%- if grains.os == 'MacOS' %} |
|
|
|
{% if salt_settings.install_packages %} |
|
|
|
|
|
|
|
download-salt-minion: |
|
|
|
{% if salt_settings.salt_minion_pkg_source %} |
|
|
|
{# only download IF we know where to get the pkg from and 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.salt_minion_pkg_source %} {# minion upgrade? #} |
|
|
|
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' |
|
|
@@ -27,43 +27,62 @@ download-salt-minion: |
|
|
|
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*' |
|
|
|
- require_in: |
|
|
|
- macpackage: salt-minion |
|
|
|
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %} |
|
|
|
- retry: |
|
|
|
attempts: 2 |
|
|
|
until: True |
|
|
|
interval: 10 |
|
|
|
splay: 10 |
|
|
|
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %} |
|
|
|
cmd.run: |
|
|
|
- name: /usr/local/bin/brew install {{ salt_settings.salt_minion }} |
|
|
|
- onlyif: test -x /usr/local/bin/brew |
|
|
|
- runas: {{ salt_settings.rootuser }} |
|
|
|
{%- endif %} |
|
|
|
{% endif %} |
|
|
|
{%- endif %} |
|
|
|
|
|
|
|
salt-minion-macos: |
|
|
|
file.managed: |
|
|
|
- onlyif: {{ grains.os == 'MacOS' }} |
|
|
|
- name: /Library/LaunchDaemons/com.saltstack.salt.minion.plist |
|
|
|
- source: https://raw.githubusercontent.com/saltstack/salt/master/pkg/osx/scripts/com.saltstack.salt.master.plist |
|
|
|
- source_hash: {{ salt_settings.salt_minion_macos_plist_hash }} |
|
|
|
- retry: |
|
|
|
attempts: 2 |
|
|
|
until: True |
|
|
|
interval: 10 |
|
|
|
splay: 10 |
|
|
|
- require_in: |
|
|
|
- service: salt-minion |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
|
|
|
|
salt-minion: |
|
|
|
{% if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
{% if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
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 #} |
|
|
|
- force: True |
|
|
|
{# macpackage.installed is weird with version_check, detects diff but incomplete install #} |
|
|
|
- force: True {# workaround #} |
|
|
|
- unless: |
|
|
|
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*' |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
- require_in: |
|
|
|
- service: salt-minion |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
- onchanges_in: |
|
|
|
- cmd: remove-macpackage-salt |
|
|
|
{%- elif grains.os != 'MacOS' and "workaround https://github.com/saltstack/salt/issues/49348" %} |
|
|
|
{%- elif grains.os != 'MacOS' and "workaround https://github.com/saltstack/salt/issues/49348" %} |
|
|
|
pkg.installed: |
|
|
|
- name: {{ salt_settings.salt_minion }} |
|
|
|
{%- if salt_settings.version %} |
|
|
|
{%- if salt_settings.version %} |
|
|
|
- version: {{ salt_settings.version }} |
|
|
|
{%- endif %} |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
{%- endif %} |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
- require_in: |
|
|
|
- service: salt-minion |
|
|
|
{% endif %} |
|
|
|
{%- endif %} |
|
|
|
{% endif %} |
|
|
|
{% endif %} |
|
|
|
{%- endif %} |
|
|
|
{% endif %} |
|
|
|
file.recurse: |
|
|
|
- name: {{ salt_settings.config_path }}/minion.d |
|
|
|
{%- if salt_settings.minion_config_use_TOFS %} |
|
|
@@ -80,47 +99,49 @@ salt-minion: |
|
|
|
{%- endif %} |
|
|
|
- clean: {{ salt_settings.clean_config_d_dir }} |
|
|
|
- exclude_pat: _* |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %} |
|
|
|
service.{{ salt_settings.minion_service_details.state }}: |
|
|
|
- enable: {{ salt_settings.minion_service_details.enabled }} |
|
|
|
- name: {{ salt_settings.minion_service }} |
|
|
|
- require: |
|
|
|
- file: salt-minion |
|
|
|
{% endif %} |
|
|
|
{%- if not salt_settings.restart_via_at %} |
|
|
|
- watch: |
|
|
|
- file: salt-master-macos |
|
|
|
- file: salt-master |
|
|
|
- file: remove-old-minion-conf-file |
|
|
|
{% endif %} |
|
|
|
{%- if not salt_settings.restart_via_at %} |
|
|
|
cmd.run: |
|
|
|
{%- if grains['saltversioninfo'] >= [ 2016, 3 ] %} |
|
|
|
{%- if grains['kernel'] == 'Windows' %} |
|
|
|
{%- if grains['saltversioninfo'] >= [ 2016, 3 ] %} |
|
|
|
{%- if grains['kernel'] == 'Windows' %} |
|
|
|
- name: 'salt-call.bat --local service.restart {{ salt_settings.minion_service }}' |
|
|
|
{%- else %} |
|
|
|
{%- else %} |
|
|
|
- name: 'salt-call --local service.restart {{ salt_settings.minion_service }} --out-file /dev/null' |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
- bg: True |
|
|
|
{%- else %} |
|
|
|
{%- if grains['kernel'] == 'Windows' %} |
|
|
|
{%- else %} |
|
|
|
{%- if grains['kernel'] == 'Windows' %} |
|
|
|
- name: 'start powershell "Restart-Service -Name {{ salt_settings.minion_service }}"' |
|
|
|
{%- else %} |
|
|
|
{%- 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 %} |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
- onchanges: |
|
|
|
{%- if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
{%- if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
- macpackage: salt-minion |
|
|
|
{%- elif grains.os == 'MacOS' %} |
|
|
|
{%- elif grains.os == 'MacOS' %} |
|
|
|
- cmd: download-salt-minion |
|
|
|
{%- else %} |
|
|
|
{%- else %} |
|
|
|
- pkg: salt-minion |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
- file: salt-minion |
|
|
|
- file: remove-old-minion-conf-file |
|
|
|
{%- else %} |
|
|
|
{%- else %} |
|
|
|
|
|
|
|
{% if grains.os_family not in ['MacOS', 'FreeBSD'] %} |
|
|
|
{# MacOS and FreeBSD have the 'at' command; but there's no package to install #} |
|
|
@@ -134,20 +155,20 @@ restart-salt-minion: |
|
|
|
- name: echo salt-call --local service.restart {{ salt_settings.minion_service }} | at now + 1 minute |
|
|
|
- order: last |
|
|
|
- onchanges: |
|
|
|
{%- if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
{%- if salt_settings.install_packages %} |
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %} |
|
|
|
- macpackage: salt-minion |
|
|
|
{%- elif grains.os == 'MacOS' %} |
|
|
|
{%- elif grains.os == 'MacOS' %} |
|
|
|
- cmd: download-salt-minion |
|
|
|
{%- else %} |
|
|
|
{%- else %} |
|
|
|
- pkg: salt-minion |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
{%- endif %} |
|
|
|
- file: salt-minion |
|
|
|
- file: remove-old-minion-conf-file |
|
|
|
{%- endif %} |
|
|
|
{%- 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 }} |
|
|
@@ -155,22 +176,22 @@ salt-minion-beacon-inotify: |
|
|
|
- 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 |
|
|
|
|
|
|
|
{% if grains.os == 'MacOS' %} |
|
|
|
{% if grains.os == 'MacOS' %} |
|
|
|
remove-macpackage-salt: |
|
|
|
file.absent: |
|
|
|
- name: /tmp/salt.pkg |
|
|
|
- force: True |
|
|
|
{% endif %} |
|
|
|
{% endif %} |