feat(macos): basic launchctl service support
This commit is contained in:
parent
e9c0a2473b
commit
94027f7332
|
@ -24,6 +24,8 @@ salt:
|
||||||
|
|
||||||
salt_master: salt-master
|
salt_master: salt-master
|
||||||
salt_minion: salt-minion
|
salt_minion: salt-minion
|
||||||
|
salt_master_macos_plist_hash: ''
|
||||||
|
salt_minion_macos_plist_hash: ''
|
||||||
salt_syndic: salt-syndic
|
salt_syndic: salt-syndic
|
||||||
salt_cloud: salt-cloud
|
salt_cloud: salt-cloud
|
||||||
salt_api: salt-api
|
salt_api: salt-api
|
||||||
|
|
|
@ -2,6 +2,27 @@
|
||||||
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
|
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
|
||||||
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
||||||
|
|
||||||
|
{%- 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/darwin/com.saltstack.salt.master.plist
|
||||||
|
- source_hash: {{ salt_settings.salt_master_macos_plist_hash }}
|
||||||
|
- retry:
|
||||||
|
attempts: 2
|
||||||
|
until: True
|
||||||
|
interval: 10
|
||||||
|
splay: 10
|
||||||
|
cmd.run:
|
||||||
|
- names:
|
||||||
|
- launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.master.plist
|
||||||
|
- launchctl unload /Library/LaunchDaemons/com.saltstack.salt.master.plist
|
||||||
|
- require:
|
||||||
|
- file: salt-master-macos
|
||||||
|
- require_in:
|
||||||
|
- service: salt-master
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
salt-master:
|
salt-master:
|
||||||
{% if salt_settings.install_packages %}
|
{% if salt_settings.install_packages %}
|
||||||
pkg.installed:
|
pkg.installed:
|
||||||
|
|
|
@ -2,11 +2,12 @@
|
||||||
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
|
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
|
||||||
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}
|
||||||
|
|
||||||
{% if salt_settings.install_packages and grains.os == 'MacOS' %}
|
{%- if grains.os == 'MacOS' %}
|
||||||
|
{% if salt_settings.install_packages %}
|
||||||
download-salt-minion:
|
download-salt-minion:
|
||||||
{% if salt_settings.salt_minion_pkg_source %}
|
{% 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 #}
|
{# only IF we know source and 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 #}
|
{# e.g. don't download unless a minion upgrade is happening #}
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: '/tmp/salt.pkg'
|
- name: '/tmp/salt.pkg'
|
||||||
- source: {{ salt_settings.salt_minion_pkg_source }}
|
- source: {{ salt_settings.salt_minion_pkg_source }}
|
||||||
|
@ -17,18 +18,44 @@ download-salt-minion:
|
||||||
{% endif %}
|
{% endif %}
|
||||||
- user: root
|
- user: root
|
||||||
- group: wheel
|
- group: wheel
|
||||||
- mode: 0644
|
- mode: '0644'
|
||||||
- unless:
|
- unless:
|
||||||
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
|
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
|
||||||
- require_in:
|
- require_in:
|
||||||
- macpackage: salt-minion
|
- macpackage: salt-minion
|
||||||
|
- retry:
|
||||||
|
attempts: 2
|
||||||
|
until: True
|
||||||
|
interval: 10
|
||||||
|
splay: 10
|
||||||
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %}
|
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %}
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/local/bin/brew install {{ salt_settings.salt_minion }}
|
- name: /usr/local/bin/brew install {{ salt_settings.salt_minion }}
|
||||||
- onlyif: test -x /usr/local/bin/brew
|
- onlyif: test -x /usr/local/bin/brew
|
||||||
- runas: {{ salt_settings.rootuser }}
|
- 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/darwin/com.saltstack.salt.minion.plist
|
||||||
|
- source_hash: {{ salt_settings.salt_minion_macos_plist_hash }}
|
||||||
|
- retry:
|
||||||
|
attempts: 2
|
||||||
|
until: True
|
||||||
|
interval: 10
|
||||||
|
splay: 10
|
||||||
|
cmd.run:
|
||||||
|
- names:
|
||||||
|
- launchctl load -w /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
||||||
|
- launchctl unload /Library/LaunchDaemons/com.saltstack.salt.minion.plist
|
||||||
|
- require:
|
||||||
|
- file: salt-minion-macos
|
||||||
|
- require_in:
|
||||||
|
- service: salt-minion
|
||||||
|
{%- endif %}
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
salt-minion:
|
salt-minion:
|
||||||
{% if salt_settings.install_packages %}
|
{% if salt_settings.install_packages %}
|
||||||
|
@ -36,7 +63,7 @@ salt-minion:
|
||||||
macpackage.installed:
|
macpackage.installed:
|
||||||
- name: '/tmp/salt.pkg'
|
- name: '/tmp/salt.pkg'
|
||||||
- target: /
|
- target: /
|
||||||
{# macpackage.installed behaves weirdly with version_check; version_check detects difference but fails to actually complete install. #}
|
{# macpackage.installed behaves weirdly with version_check, detects diff but fails to complete install. #}
|
||||||
{# use force == True as workaround #}
|
{# use force == True as workaround #}
|
||||||
- force: True
|
- force: True
|
||||||
- unless:
|
- unless:
|
||||||
|
|
|
@ -57,3 +57,7 @@ SmartOS:
|
||||||
config_path: /opt/local/etc/salt
|
config_path: /opt/local/etc/salt
|
||||||
master:
|
master:
|
||||||
gitfs_provider: dulwich
|
gitfs_provider: dulwich
|
||||||
|
|
||||||
|
MacOS:
|
||||||
|
salt_master_macos_plist_hash: 9c55cb448269f4d7c433429448d1ec7dda260f180bbcf5197bc430f7645017de
|
||||||
|
salt_minion_macos_plist_hash: 6383d2d336b06802bfdf25a4c21ee25c85ee9fa57d3ef5776321d9c8cd096395
|
||||||
|
|
Loading…
Reference in New Issue