2
0

Merge pull request #421 from noelmcloughlin/metastate

feat(formula): add metastate per community convention
This commit is contained in:
Imran Iqbal 2020-02-20 14:51:51 +00:00 committed by GitHub
commit 718f5c7558
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 74 additions and 12 deletions

View File

@ -45,6 +45,13 @@ Available states
.. contents:: .. contents::
:local: :local:
``salt``
^^^^^^^^
*Meta-state (This is a state that includes other states)*.
This calls all runable states based on configured pillar data.
``salt.minion`` ``salt.minion``
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^

View File

@ -80,6 +80,7 @@ salt:
# salt master config # salt master config
master_config_use_TOFS: true master_config_use_TOFS: true
master: master:
standalone: false
fileserver_backend: fileserver_backend:
- git - git
- s3fs - s3fs
@ -163,6 +164,9 @@ salt:
minion_config_use_TOFS: true minion_config_use_TOFS: true
minion: minion:
# standalone setup
master_type: false # see init.sls & standalone.sls
# single master setup # single master setup
master: salt master: salt
@ -268,6 +272,13 @@ salt:
- test.ping - test.ping
- saltutil.find_job - saltutil.find_job
# init.sls skips salt.api and salt.syndic states
# unless those dicts are populated with something
api:
somekey: somevalue
syndic:
somekey: somevalue
# salt cloud config # salt cloud config
cloud: cloud:
master: salt master: salt

View File

@ -30,11 +30,16 @@ salt:
salt_api: salt-api salt_api: salt-api
salt_ssh: salt-ssh salt_ssh: salt-ssh
pkgrepo: '' # see osfamilymap
ssh_roster: {} # see pillar data
python_git: python-git python_git: python-git
python_dulwich: python-dulwich python_dulwich: python-dulwich
master: master:
gitfs_provider: gitpython gitfs_provider: gitpython
minion:
master_type: true # see init.sls & standalone.sls
gitfs: gitfs:
dulwich: dulwich:
@ -62,6 +67,7 @@ salt:
maps: salt://salt/files/cloud.maps.d maps: salt://salt/files/cloud.maps.d
salt_formulas: salt_formulas:
list: {} # via pillar data
checkout_orig_branch: false checkout_orig_branch: false
git_opts: git_opts:
default: default:

30
salt/init.sls Executable file
View File

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- salt.pkgrepo
{%- if salt.config.get('salt_formulas:list') %}
- salt.formulas
{%- endif %}
{%- if salt.config.get('salt:master')|length > 1 %}
- salt.master
{%- endif %}
{%- if salt.config.get('salt:cloud')|length > 1 %}
- salt.cloud
{%- endif %}
{%- if salt.config.get('salt:ssh_roster') %}
- salt.ssh
{%- endif %}
{%- if salt.config.get('salt:minion')|length > 1 %}
{%- if salt.config.get('salt:minion:master_type') %}
- salt.minion
{%- else %}
- salt.standalone
{%- endif %}
{%- endif %}
{%- if salt.config.get('salt:api') %}
- salt.api
{%- endif %}
{%- if salt.config.get('salt:syndic') %}
- salt.syndic
{%- endif %}

View File

@ -1,2 +1,10 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "salt/map.jinja" import salt_settings with context %}
{%- if salt_settings.pkgrepo %}
include: include:
- .{{ grains['os_family']|lower }} - .{{ grains['os_family']|lower }}
{%- endif %}

View File

@ -1,14 +1,14 @@
{%- set tplroot = tpldir.split('/')[0] %} {%- set tplroot = tpldir.split('/')[0] %}
{% from "salt/map.jinja" import salt_settings with context %} {% from "salt/map.jinja" import salt_settings with context %}
salt-minion: salt-minion-standalone:
{% if salt_settings.install_packages %} {% if salt_settings.install_packages %}
pkg.installed: pkg.installed:
- name: {{ salt_settings.salt_minion }} - name: {{ salt_settings.salt_minion }}
{%- if salt_settings.version is defined %} {%- if salt_settings.version is defined %}
- version: {{ salt_settings.version }} - version: {{ salt_settings.version }}
{%- endif %} {%- endif %}
{% endif %} {% endif %}
file.recurse: file.recurse:
- name: {{ salt_settings.config_path }}/minion.d - name: {{ salt_settings.config_path }}/minion.d
- template: jinja - template: jinja
@ -17,19 +17,19 @@ salt-minion:
- exclude_pat: _* - exclude_pat: _*
- context: - context:
standalone: True standalone: True
{%- if salt_settings.minion.master_type is defined and salt_settings.minion.master_type == 'disable' %} {%- if not salt_settings.minion.master_type %}
service.running: service.running:
- enable: True - enable: True
{%- else %} {%- else %}
service.dead: service.dead:
- enable: False - enable: False
{%- endif %} {%- endif %}
- name: {{ salt_settings.minion_service }} - name: {{ salt_settings.minion_service }}
- require: - require:
{% if salt_settings.install_packages %} {% if salt_settings.install_packages %}
- pkg: salt-minion - pkg: salt-minion-standalone
{% endif %} {% endif %}
- file: salt-minion - file: salt-minion-standalone
# clean up old _defaults.conf file if they have it around # clean up old _defaults.conf file if they have it around
remove-old-standalone-conf-file: remove-old-standalone-conf-file: