refactor(salt-master): move to subcomponents

Add a verifier in each sls to exclude windows platform.
This commit is contained in:
Daniel Dehennin 2022-02-09 08:29:26 +01:00
parent ede1942d98
commit 928b1a7c29
8 changed files with 146 additions and 89 deletions

View File

@ -1,89 +0,0 @@
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
{% if salt_settings.pin_version and salt_settings.version and grains.os_family|lower == 'debian' %}
include:
- .pin
{% endif %}
{%- if grains.kernel != 'Windows' %}
{%- if grains.os == 'MacOS' %}
salt-master-macos:
file.managed:
- name: /Library/LaunchDaemons/com.saltstack.salt.master.plist
- source: https://raw.githubusercontent.com/saltstack/salt/master/pkg/osx/scripts/com.saltstack.salt.master.plist
- source_hash: {{ salt_settings.salt_master_macos_plist_hash }}
- retry: {{ salt_settings.retry_options | json }}
- require_in:
- service: salt-master
{%- endif %}
salt-master:
{% if salt_settings.install_packages %}
pkg.installed:
- name: {{ salt_settings.salt_master }}
{%- if salt_settings.version is defined %}
- version: {{ salt_settings.version }}
{%- endif %}
{% if salt_settings.master_service_details.state != 'ignore' %}
- require_in:
- service: salt-master
- watch_in:
- service: salt-master
{% endif %}
{% endif %}
file.recurse:
- name: {{ salt_settings.config_path }}/master.d
{%- if salt_settings.master_config_use_TOFS %}
- template: ''
- source: {{ files_switch(['master.d'],
lookup='salt-master'
)
}}
{%- else %}
- template: jinja
- source: salt://{{ tplroot }}/files/master.d
{%- endif %}
- clean: {{ salt_settings.clean_config_d_dir }}
- exclude_pat:
- _*
- raas.conf
{% if salt_settings.master_service_details.state != 'ignore' %}
service.{{ salt_settings.master_service_details.state }}:
- enable: {{ salt_settings.master_service_details.enabled }}
- name: {{ salt_settings.master_service }}
{%- if grains.os_family == 'FreeBSD' %}
- retry: {{ salt_settings.retry_options | json }}
{%- endif %}
- watch:
{%- if grains.kernel|lower == 'darwin' %}
- file: salt-master-macos
{%- else %}
- file: salt-master
{%- endif %}
- file: remove-old-master-conf-file
- order: last
{% endif %}
{% if salt_settings.master_remove_config %}
remove-default-master-conf-file:
file.absent:
- name: {{ salt_settings.config_path }}/master
- watch_in:
- service: salt-master
{% endif %}
# clean up old _defaults.conf file if they have it around
remove-old-master-conf-file:
file.absent:
- name: {{ salt_settings.config_path }}/master.d/_defaults.conf
{%- else %}
salt-master-install-skip:
test.show_notification:
- text: |
No salt-master state for Windows
{%- endif %}

View File

@ -0,0 +1,60 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split("/")[0] %}
{%- set sls_windows_excluded = tplroot ~ ".windows-excluded" %}
{%- set sls_package_install = tplroot ~ ".master.package.install" %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
include:
- {{ sls_windows_excluded }}
- {{ sls_package_install }}
{%- if salt_settings.master_config_use_TOFS %}
{%- set source = files_switch(["master.d"],
lookup="salt-master"
) %}
{%- set template = "" %}
{%- else %}
{%- set source = "salt://" ~ tplroot ~ "/files/master.d" %}
{%- set template = "jinja" %}
{%- endif %}
salt-master-config-files-file.recurse:
file.recurse:
- name: {{ salt_settings.config_path }}/master.d
- source: {{ source }}
- template: {{ template }}
- clean: {{ salt_settings.clean_config_d_dir }}
- exclude_pat:
- _*
- raas.conf
- require:
- sls: {{ sls_windows_excluded }}
- sls: {{ sls_package_install }}
{%- if salt_settings.master_remove_config %}
salt-master-config-files-remove-old-master-conf-file.absent:
file.absent:
- name: {{ salt_settings.config_path }}/master
- require:
- sls: {{ sls_windows_excluded }}
- sls: {{ sls_package_install }}
{%- endif %}
# clean up old _defaults.conf file if they have it around
salt-master-config-files-remove-old-default-master-conf-file.absent:
file.absent:
- name: {{ salt_settings.config_path }}/master.d/_defaults.conf
{%- if grains.os == "MacOS" %}
salt-master-config-files-macos-LaunchDaemons-file.managed:
file.managed:
- name: /Library/LaunchDaemons/com.saltstack.salt.master.plist
- source: https://raw.githubusercontent.com/saltstack/salt/master/pkg/osx/scripts/com.saltstack.salt.master.plist
- source_hash: {{ salt_settings.salt_master_macos_plist_hash }}
- retry: {{ salt_settings.retry_options | json }}
- require:
- sls: {{ sls_package_install }}
{%- endif %}

View File

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- .files

7
salt/master/init.sls Normal file
View File

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- .package
- .config
- .service

View File

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- .install

View File

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_windows_excluded = tplroot ~ '.windows-excluded' %}
{%- set sls_pin_version = tplroot ~ '.pin' %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
{#- `salt-master` cannot be installed on Windows machines #}
{%- set sls_dependencies = [sls_windows_excluded] %}
{%- if salt_settings.pin_version and salt_settings.version and grains.os_family|lower == 'debian' %}
{%- do sls_dependencies.append(sls_pin_version) %}
{%- endif %}
include: {{ sls_dependencies }}
{%- if salt_settings.install_packages %}
salt-master-package-install-pkg.installed:
pkg.installed:
- name: {{ salt_settings.salt_master }}
- version: {{ salt_settings.version | default('~') }}
- require:
- sls: {{ sls_windows_excluded }}
{%- endif %}

View File

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_windows_excluded = tplroot ~ ".windows-excluded" %}
{%- set sls_config_files = tplroot ~ '.master.config.files' %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
{%- if salt_settings.master_service_details.state != 'ignore' %}
include:
- {{ sls_windows_excluded }}
- {{ sls_config_files }}
{%- set wanted_state = salt_settings.master_service_details.state %}
{%- set retry = {
'darwin': salt_settings.retry_options | json,
}.get(grains.kernel|lower, '')
%}
salt-master-service-{{ wanted_state }}:
service.{{ wanted_state }}:
- enable: {{ salt_settings.master_service_details.enabled }}
- name: {{ salt_settings.master_service }}
- retry: {{ retry }}
- watch:
- sls: {{ sls_config_files }}
{%- endif %}

15
salt/windows-excluded.sls Normal file
View File

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{%- if grains.kernel == 'Windows' %}
salt-windows-excluded-test.fail_without_changes:
test.fail_without_changes:
- name: Verify that current platform is not Windows
- comment: Platform Windows is not supported
{%- else %}
{#- Workaround https://github.com/saltstack/salt/issues/10852 #}
salt-windows-excluded-test.succeed_without_changes:
test.succeed_without_changes:
- name: Verify that current platform is not Windows
- comment: Platform {{ grains.kernel }} is supported
{%- endif %}