2019-06-07 04:44:02 +02:00
|
|
|
{%- set tplroot = tpldir.split('/')[0] %}
|
|
|
|
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
|
|
|
|
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
2013-08-14 21:53:29 +02:00
|
|
|
|
2020-03-18 20:49:28 +01:00
|
|
|
{% if salt_settings.pin_version and salt_settings.version and grains.os_family|lower == 'debian' %}
|
|
|
|
include:
|
|
|
|
- .pin
|
|
|
|
{% endif %}
|
|
|
|
|
2020-01-22 16:55:42 +01:00
|
|
|
{%- if grains.os == 'MacOS' %}
|
|
|
|
{% if salt_settings.install_packages %}
|
2020-06-01 02:15:32 +02:00
|
|
|
|
2018-04-17 22:26:20 +02:00
|
|
|
download-salt-minion:
|
2020-06-13 21:33:36 +02:00
|
|
|
{% if salt_settings.salt_minion_pkg_source %} {# minion upgrade? #}
|
2018-04-17 22:26:20 +02:00
|
|
|
file.managed:
|
|
|
|
- name: '/tmp/salt.pkg'
|
|
|
|
- source: {{ salt_settings.salt_minion_pkg_source }}
|
2020-01-22 16:55:42 +01:00
|
|
|
{%- if salt_settings.salt_minion_pkg_hash %}
|
2018-04-17 22:26:20 +02:00
|
|
|
- source_hash: {{ salt_settings.salt_minion_pkg_hash }}
|
2020-01-22 16:55:42 +01:00
|
|
|
{% else %}
|
2018-04-17 22:26:20 +02:00
|
|
|
- skip_verify: True
|
2020-01-22 16:55:42 +01:00
|
|
|
{% endif %}
|
2018-04-17 22:26:20 +02:00
|
|
|
- user: root
|
|
|
|
- group: wheel
|
2020-01-22 16:55:42 +01:00
|
|
|
- mode: '0644'
|
2018-04-17 22:26:20 +02:00
|
|
|
- unless:
|
2019-08-01 02:27:49 +02:00
|
|
|
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
|
2018-04-17 22:26:20 +02:00
|
|
|
- require_in:
|
|
|
|
- macpackage: salt-minion
|
2021-03-26 18:59:40 +01:00
|
|
|
- retry: {{ salt_settings.retry_options | json }}
|
2020-01-22 16:55:42 +01:00
|
|
|
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %}
|
2019-08-01 02:27:49 +02:00
|
|
|
cmd.run:
|
|
|
|
- name: /usr/local/bin/brew install {{ salt_settings.salt_minion }}
|
|
|
|
- onlyif: test -x /usr/local/bin/brew
|
|
|
|
- runas: {{ salt_settings.rootuser }}
|
2020-01-22 16:55:42 +01:00
|
|
|
{%- endif %}
|
|
|
|
|
|
|
|
salt-minion-macos:
|
|
|
|
file.managed:
|
|
|
|
- onlyif: {{ grains.os == 'MacOS' }}
|
|
|
|
- name: /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
2020-06-13 22:11:28 +02:00
|
|
|
- source: https://raw.githubusercontent.com/saltstack/salt/master/pkg/osx/scripts/com.saltstack.salt.master.plist
|
2020-01-22 16:55:42 +01:00
|
|
|
- source_hash: {{ salt_settings.salt_minion_macos_plist_hash }}
|
2021-03-26 18:59:40 +01:00
|
|
|
- retry: {{ salt_settings.retry_options | json }}
|
2020-01-22 16:55:42 +01:00
|
|
|
- require_in:
|
2020-07-15 14:58:17 +02:00
|
|
|
- service: salt-minion
|
|
|
|
- watch_in:
|
2020-01-22 16:55:42 +01:00
|
|
|
- service: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
2020-01-22 16:55:42 +01:00
|
|
|
{%- endif %}
|
2018-04-17 22:26:20 +02:00
|
|
|
|
2013-06-13 01:53:26 +02:00
|
|
|
salt-minion:
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if salt_settings.install_packages %}
|
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
|
2018-04-17 22:26:20 +02:00
|
|
|
macpackage.installed:
|
|
|
|
- name: '/tmp/salt.pkg'
|
|
|
|
- target: /
|
2020-06-13 22:11:28 +02:00
|
|
|
{# macpackage.installed is weird with version_check, detects diff but incomplete install #}
|
|
|
|
- force: True {# workaround #}
|
2019-08-01 02:27:49 +02:00
|
|
|
- unless:
|
|
|
|
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %}
|
2019-03-31 18:02:13 +02:00
|
|
|
- require_in:
|
|
|
|
- service: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
2019-08-01 02:27:49 +02:00
|
|
|
- onchanges_in:
|
|
|
|
- cmd: remove-macpackage-salt
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- elif grains.os != 'MacOS' and "workaround https://github.com/saltstack/salt/issues/49348" %}
|
2013-06-13 01:53:26 +02:00
|
|
|
pkg.installed:
|
2015-03-17 05:39:32 +01:00
|
|
|
- name: {{ salt_settings.salt_minion }}
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- if salt_settings.version %}
|
2018-02-01 11:13:55 +01:00
|
|
|
- version: {{ salt_settings.version }}
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %}
|
2019-03-31 18:02:13 +02:00
|
|
|
- require_in:
|
|
|
|
- service: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
|
|
|
{%- endif %}
|
|
|
|
{% endif %}
|
2014-10-06 17:17:43 +02:00
|
|
|
file.recurse:
|
2021-12-27 14:37:24 +01:00
|
|
|
- name: {{ salt_settings.config_path | path_join('minion.d') }}
|
2019-06-07 04:44:02 +02:00
|
|
|
{%- if salt_settings.minion_config_use_TOFS %}
|
|
|
|
- template: ''
|
|
|
|
- source: {{ files_switch(['minion.d'],
|
|
|
|
lookup='salt-minion'
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
{%- else %}
|
2013-06-13 01:53:26 +02:00
|
|
|
- template: jinja
|
2020-02-12 05:49:22 +01:00
|
|
|
- source: salt://{{ tplroot }}/files/minion.d
|
2014-12-21 15:35:45 +01:00
|
|
|
- context:
|
|
|
|
standalone: False
|
2019-06-07 04:44:02 +02:00
|
|
|
{%- endif %}
|
|
|
|
- clean: {{ salt_settings.clean_config_d_dir }}
|
|
|
|
- exclude_pat: _*
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if salt_settings.minion_service_details.state != 'ignore' %}
|
2020-02-17 15:20:33 +01:00
|
|
|
service.{{ salt_settings.minion_service_details.state }}:
|
|
|
|
- enable: {{ salt_settings.minion_service_details.enabled }}
|
2015-03-17 05:39:32 +01:00
|
|
|
- name: {{ salt_settings.minion_service }}
|
2022-04-03 11:26:20 +02:00
|
|
|
{%- if grains.os_family in ['FreeBSD', 'Gentoo'] %}
|
2021-03-30 12:57:51 +02:00
|
|
|
- retry: {{ salt_settings.retry_options | json }}
|
|
|
|
{%- endif %}
|
2020-06-13 22:11:28 +02:00
|
|
|
- watch:
|
|
|
|
- file: remove-old-minion-conf-file
|
2020-07-27 14:23:21 +02:00
|
|
|
- order: last
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
|
|
|
{%- if not salt_settings.restart_via_at %}
|
2017-07-27 22:15:21 +02:00
|
|
|
cmd.run:
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- if grains['saltversioninfo'] >= [ 2016, 3 ] %}
|
|
|
|
{%- if grains['kernel'] == 'Windows' %}
|
2017-10-16 18:09:19 +02:00
|
|
|
- name: 'salt-call.bat --local service.restart {{ salt_settings.minion_service }}'
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
2017-07-27 22:15:21 +02:00
|
|
|
- name: 'salt-call --local service.restart {{ salt_settings.minion_service }} --out-file /dev/null'
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
2017-10-16 18:09:19 +02:00
|
|
|
- bg: True
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
|
|
|
{%- if grains['kernel'] == 'Windows' %}
|
2017-07-27 22:15:21 +02:00
|
|
|
- name: 'start powershell "Restart-Service -Name {{ salt_settings.minion_service }}"'
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
2017-07-27 22:15:21 +02:00
|
|
|
# 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 &
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
|
|
|
{%- endif %}
|
2017-07-27 22:15:21 +02:00
|
|
|
- onchanges:
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- if salt_settings.install_packages %}
|
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
|
2018-04-17 22:26:20 +02:00
|
|
|
- macpackage: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- elif grains.os == 'MacOS' %}
|
2019-08-01 02:27:49 +02:00
|
|
|
- cmd: download-salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
2013-08-14 21:53:29 +02:00
|
|
|
- pkg: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
|
|
|
{%- endif %}
|
2017-06-14 17:35:00 +02:00
|
|
|
- file: salt-minion
|
|
|
|
- file: remove-old-minion-conf-file
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
2018-04-17 22:26:20 +02:00
|
|
|
|
2020-06-30 02:48:51 +02:00
|
|
|
{% if grains.os_family not in ['MacOS', 'FreeBSD'] %}
|
|
|
|
{# MacOS and FreeBSD have the 'at' command; but there's no package to install #}
|
2017-06-14 17:35:00 +02:00
|
|
|
at:
|
2020-06-30 02:48:51 +02:00
|
|
|
pkg.installed:
|
|
|
|
- require_in: restart-salt-minion
|
2018-04-17 22:26:20 +02:00
|
|
|
{% endif %}
|
2017-06-14 17:35:00 +02:00
|
|
|
|
|
|
|
restart-salt-minion:
|
2017-10-01 20:22:11 +02:00
|
|
|
cmd.run:
|
2018-04-17 22:26:20 +02:00
|
|
|
- name: echo salt-call --local service.restart {{ salt_settings.minion_service }} | at now + 1 minute
|
2017-06-14 17:35:00 +02:00
|
|
|
- order: last
|
2017-10-01 20:22:11 +02:00
|
|
|
- onchanges:
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- if salt_settings.install_packages %}
|
|
|
|
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
|
2018-04-17 22:26:20 +02:00
|
|
|
- macpackage: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- elif grains.os == 'MacOS' %}
|
2019-08-01 02:27:49 +02:00
|
|
|
- cmd: download-salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- else %}
|
2017-06-14 17:35:00 +02:00
|
|
|
- pkg: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
|
|
|
{%- endif %}
|
2013-06-13 01:53:26 +02:00
|
|
|
- file: salt-minion
|
2015-03-27 23:58:05 +01:00
|
|
|
- file: remove-old-minion-conf-file
|
2020-06-13 22:11:28 +02:00
|
|
|
{%- endif %}
|
2015-03-27 23:58:05 +01:00
|
|
|
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if 'inotify' in salt_settings.get('minion', {}).get('beacons', {}) and salt_settings.get('pyinotify', False) %}
|
2017-08-15 22:48:15 +02:00
|
|
|
salt-minion-beacon-inotify:
|
|
|
|
pkg.installed:
|
|
|
|
- name: {{ salt_settings.pyinotify }}
|
|
|
|
- require_in:
|
|
|
|
- service: salt-minion
|
|
|
|
- watch_in:
|
|
|
|
- service: salt-minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
2017-08-15 22:48:15 +02:00
|
|
|
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if salt_settings.minion_remove_config %}
|
2016-07-14 18:23:08 +02:00
|
|
|
remove-default-minion-conf-file:
|
|
|
|
file.absent:
|
|
|
|
- name: {{ salt_settings.config_path }}/minion
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
2016-07-14 18:23:08 +02:00
|
|
|
|
2015-03-27 23:58:05 +01:00
|
|
|
# clean up old _defaults.conf file if they have it around
|
|
|
|
remove-old-minion-conf-file:
|
|
|
|
file.absent:
|
2021-12-27 14:37:24 +01:00
|
|
|
- name: {{ salt_settings.config_path | path_join('minion.d', '_defaults.conf') }}
|
2018-01-06 13:54:57 +01:00
|
|
|
|
2020-06-13 22:11:28 +02:00
|
|
|
{% if grains.os == 'MacOS' %}
|
2018-04-17 22:26:20 +02:00
|
|
|
remove-macpackage-salt:
|
2019-08-01 02:27:49 +02:00
|
|
|
file.absent:
|
|
|
|
- name: /tmp/salt.pkg
|
|
|
|
- force: True
|
2020-06-13 22:11:28 +02:00
|
|
|
{% endif %}
|
2020-09-21 08:44:24 +02:00
|
|
|
|
2022-02-03 17:14:40 +01:00
|
|
|
{% if not salt_settings.minion_remove_config %}
|
2020-09-21 08:44:24 +02:00
|
|
|
permissions-minion-config:
|
|
|
|
file.managed:
|
|
|
|
- name: {{ salt_settings.config_path | path_join('minion') }}
|
|
|
|
- user: {{ salt_settings.rootuser }}
|
|
|
|
- group:
|
|
|
|
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
|
|
|
|
wheel
|
|
|
|
{%- else %}
|
|
|
|
root
|
|
|
|
{%- endif %}
|
|
|
|
{%- if grains['kernel'] != 'Windows' %}
|
|
|
|
- mode: 640
|
|
|
|
{% endif %}
|
|
|
|
- replace: False
|
2022-02-03 17:14:40 +01:00
|
|
|
{% endif %}
|
2020-09-21 08:44:24 +02:00
|
|
|
|
|
|
|
salt-minion-pki-dir:
|
|
|
|
file.directory:
|
|
|
|
{% if 'pki_dir' in salt_settings.minion %}
|
|
|
|
- name: {{ salt_settings.minion.pki_dir }}
|
|
|
|
{% else %}
|
|
|
|
- name: {{ salt_settings.config_path | path_join('pki', 'minion') }}
|
|
|
|
{% endif %}
|
|
|
|
- user: {{ salt_settings.rootuser }}
|
|
|
|
- group:
|
|
|
|
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
|
|
|
|
wheel
|
|
|
|
{%- else %}
|
|
|
|
root
|
|
|
|
{%- endif %}
|
|
|
|
{%- if grains['kernel'] != 'Windows' %}
|
|
|
|
- mode: 700
|
|
|
|
{% endif %}
|
|
|
|
- makedirs: True
|
|
|
|
|
|
|
|
permissions-minion.pem:
|
|
|
|
file.managed:
|
|
|
|
{% if 'pki_dir' in salt_settings.minion %}
|
|
|
|
- name: {{ salt_settings.minion.pki_dir | path_join('minion.pem') }}
|
|
|
|
{% else %}
|
|
|
|
- name: {{ salt_settings.config_path | path_join('pki', 'minion', 'minion.pem') }}
|
|
|
|
{% endif %}
|
|
|
|
- user: {{ salt_settings.rootuser }}
|
|
|
|
- group:
|
|
|
|
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
|
|
|
|
wheel
|
|
|
|
{%- else %}
|
|
|
|
root
|
|
|
|
{%- endif %}
|
|
|
|
{%- if grains['kernel'] != 'Windows' %}
|
|
|
|
- mode: 400
|
|
|
|
{% endif %}
|
|
|
|
- replace: False
|
|
|
|
- require:
|
|
|
|
- file: salt-minion-pki-dir
|
|
|
|
|
|
|
|
permissions-minion.pub:
|
|
|
|
file.managed:
|
|
|
|
{% if 'pki_dir' in salt_settings.minion %}
|
|
|
|
- name: {{ salt_settings.minion.pki_dir | path_join('minion.pub') }}
|
|
|
|
{% else %}
|
|
|
|
- name: {{ salt_settings.config_path | path_join('pki', 'minion', 'minion.pub') }}
|
|
|
|
{% endif %}
|
|
|
|
- user: {{ salt_settings.rootuser }}
|
|
|
|
- group:
|
|
|
|
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
|
|
|
|
wheel
|
|
|
|
{%- else %}
|
|
|
|
root
|
|
|
|
{%- endif %}
|
|
|
|
{%- if grains['kernel'] != 'Windows' %}
|
|
|
|
- mode: 644
|
|
|
|
{% endif %}
|
|
|
|
- replace: False
|
|
|
|
- require:
|
|
|
|
- file: salt-minion-pki-dir
|