2
0

Merge pull request #426 from noelmcloughlin/macos

fix(macos): fix brew packaging handling
This commit is contained in:
Niels Abspoel 2019-08-01 20:31:39 +02:00 committed by GitHub
commit 190998ded2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 50 additions and 18 deletions

View File

@ -1,6 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# vim: ft=yaml # vim: ft=yaml
salt: salt:
version: ''
rootuser: root
rootgroup: root
install_packages: True install_packages: True
use_pip: False use_pip: False
clean_config_d_dir: True clean_config_d_dir: True

View File

@ -6,6 +6,10 @@
{%- from "salt/formulas.jinja" import formulas_git_opt with context %} {%- from "salt/formulas.jinja" import formulas_git_opt with context %}
{%- from "salt/formulas.jinja" import formulas_opts_for_git_latest with context %} {%- from "salt/formulas.jinja" import formulas_opts_for_git_latest with context %}
## from template-formula
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import salt_settings with context %}
# Loop over all formulas listed in pillar data # Loop over all formulas listed in pillar data
{%- for env, entries in salt['pillar.get']('salt_formulas:list', {}).items() %} {%- for env, entries in salt['pillar.get']('salt_formulas:list', {}).items() %}
{%- for entry in entries %} {%- for entry in entries %}
@ -31,6 +35,8 @@
{%- for key, value in salt['pillar.get']('salt_formulas:basedir_opts', {%- for key, value in salt['pillar.get']('salt_formulas:basedir_opts',
{'makedirs': True}).items() %} {'makedirs': True}).items() %}
- {{ key }}: {{ value }} - {{ key }}: {{ value }}
- user: {{ salt_settings.rootuser }}
- group: {{ salt_settings.rootgroup }}
{%- endfor %} {%- endfor %}
{%- endif %} {%- endif %}

View File

@ -2,14 +2,15 @@
{%- 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' and salt_settings.salt_minion_pkg_source != '' and salt_settings.version != '' %} {% if salt_settings.install_packages and grains.os == 'MacOS' %}
{# 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: 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 #}
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 }}
{% if salt_settings.salt_minion_pkg_hash != '' %} {%- if salt_settings.salt_minion_pkg_hash %}
- source_hash: {{ salt_settings.salt_minion_pkg_hash }} - source_hash: {{ salt_settings.salt_minion_pkg_hash }}
{% else %} {% else %}
- skip_verify: True - skip_verify: True
@ -18,27 +19,36 @@ download-salt-minion:
- group: wheel - group: wheel
- mode: 0644 - mode: 0644
- unless: - unless:
- '/opt/salt/bin/salt-minion --version | grep {{ 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
{%- 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: 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 != '' %} {%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
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; version_check detects difference but fails to actually complete install. #}
{# use force == True as workaround #} {# use force == True as workaround #}
- force: True - force: True
- version_check: /opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.* - unless:
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
- require_in: - require_in:
- service: salt-minion - service: salt-minion
{%- else %} - onchanges_in:
- cmd: remove-macpackage-salt
{%- elif grains.os != 'MacOS' and "workaround https://github.com/saltstack/salt/issues/49348" %}
pkg.installed: pkg.installed:
- name: {{ salt_settings.salt_minion }} - name: {{ salt_settings.salt_minion }}
{%- if salt_settings.version is defined %} {%- if salt_settings.version %}
- version: {{ salt_settings.version }} - version: {{ salt_settings.version }}
{%- endif %} {%- endif %}
- require_in: - require_in:
@ -89,8 +99,10 @@ salt-minion:
{%- endif %} {%- endif %}
- onchanges: - onchanges:
{%- if salt_settings.install_packages %} {%- if salt_settings.install_packages %}
{%- if grains.os == 'MacOS' %} {%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
- macpackage: salt-minion - macpackage: salt-minion
{%- elif grains.os == 'MacOS' %}
- cmd: download-salt-minion
{%- else %} {%- else %}
- pkg: salt-minion - pkg: salt-minion
{%- endif %} {%- endif %}
@ -113,11 +125,13 @@ restart-salt-minion:
- pkg: at - pkg: at
- onchanges: - onchanges:
{%- if salt_settings.install_packages %} {%- if salt_settings.install_packages %}
{%- if grains.os == 'MacOS' %} {%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
- macpackage: salt-minion - macpackage: salt-minion
{%- else %} {%- elif grains.os == 'MacOS' %}
- cmd: download-salt-minion
{%- else %}
- pkg: salt-minion - pkg: salt-minion
{%- endif %} {%- endif %}
{%- endif %} {%- endif %}
- file: salt-minion - file: salt-minion
- file: remove-old-minion-conf-file - file: remove-old-minion-conf-file
@ -146,8 +160,7 @@ remove-old-minion-conf-file:
{% if grains.os == 'MacOS' %} {% if grains.os == 'MacOS' %}
remove-macpackage-salt: remove-macpackage-salt:
cmd.run: file.absent:
- name: 'rm -f /tmp/salt.pkg' - name: /tmp/salt.pkg
- onchanges: - force: True
- macpackage: salt-minion
{% endif %} {% endif %}

View File

@ -14,6 +14,12 @@
{% set osmajorrelease = salt['grains.get']('osmajorrelease', osrelease)|string %} {% set osmajorrelease = salt['grains.get']('osmajorrelease', osrelease)|string %}
{% set oscodename = salt['grains.get']('oscodename') %} {% set oscodename = salt['grains.get']('oscodename') %}
#from template-formula
{%- if grains.os == 'MacOS' %}
{%- set macos_rootuser = salt['cmd.run']("stat -f '%Su' /dev/console") %}
{%- set macos_rootgroup = salt['cmd.run']("stat -f '%Sg' /dev/console") %}
{%- endif %}
Debian: Debian:
pkgrepo: 'deb http://repo.saltstack.com/{{ py_ver_repr }}/{{ osfamily_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }} {{ oscodename }} main' pkgrepo: 'deb http://repo.saltstack.com/{{ py_ver_repr }}/{{ osfamily_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }} {{ oscodename }} main'
key_url: 'https://repo.saltstack.com/{{ py_ver_repr }}/{{ osfamily_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }}/SALTSTACK-GPG-KEY.pub' key_url: 'https://repo.saltstack.com/{{ py_ver_repr }}/{{ osfamily_lower }}/{{ osmajorrelease }}/amd64/{{ salt_release }}/SALTSTACK-GPG-KEY.pub'
@ -90,6 +96,7 @@ Alpine:
libgit2: libgit2 libgit2: libgit2
FreeBSD: FreeBSD:
rootgroup: wheel
salt_master: py27-salt salt_master: py27-salt
salt_minion: py27-salt salt_minion: py27-salt
salt_syndic: py27-salt salt_syndic: py27-salt
@ -122,8 +129,11 @@ Windows:
minion_service: salt-minion minion_service: salt-minion
MacOS: MacOS:
salt_minion: com.saltstack.salt salt_minion: salt
salt_minion_pkg_source: '' salt_minion_pkg_source: ''
salt_minion_pkg_hash: '' salt_minion_pkg_hash: ''
config_path: /private/etc/salt config_path: /private/etc/salt
minion_service: com.saltstack.salt.minion minion_service: com.saltstack.salt.minion
## from template-formula
rootuser: {{ macos_rootuser | d('') }}
rootgroup: {{ macos_rootgroup | d('') }}