chore: standardise structure [skip ci]
* Automated using https://github.com/myii/ssf-formula/pull/264
This commit is contained in:
parent
5ef7662176
commit
7dc0ece4f5
44
.travis.yml
44
.travis.yml
@ -72,37 +72,67 @@ jobs:
|
|||||||
## Define the rest of the matrix based on Kitchen testing
|
## Define the rest of the matrix based on Kitchen testing
|
||||||
# Make sure the instances listed below match up with
|
# Make sure the instances listed below match up with
|
||||||
# the `platforms` defined in `kitchen.yml`
|
# the `platforms` defined in `kitchen.yml`
|
||||||
|
# - env: INSTANCE=default-debian-10-master-py3
|
||||||
- env: INSTANCE=modules-debian-10-master-py3
|
- env: INSTANCE=modules-debian-10-master-py3
|
||||||
# env: INSTANCE=modules-ubuntu-1804-master-py3
|
# - env: INSTANCE=default-ubuntu-1804-master-py3
|
||||||
|
# - env: INSTANCE=modules-ubuntu-1804-master-py3
|
||||||
|
# - env: INSTANCE=default-centos-8-master-py3
|
||||||
- env: INSTANCE=modules-centos-8-master-py3
|
- env: INSTANCE=modules-centos-8-master-py3
|
||||||
|
# - env: INSTANCE=default-fedora-31-master-py3
|
||||||
- env: INSTANCE=modules-fedora-31-master-py3
|
- env: INSTANCE=modules-fedora-31-master-py3
|
||||||
|
# - env: INSTANCE=default-opensuse-leap-151-master-py3
|
||||||
- env: INSTANCE=modules-opensuse-leap-151-master-py3
|
- env: INSTANCE=modules-opensuse-leap-151-master-py3
|
||||||
|
|
||||||
# https://community.letsencrypt.org/t/localhost-crt-does-not-exist-or-is-empty/103979
|
# https://community.letsencrypt.org/t/localhost-crt-does-not-exist-or-is-empty/103979
|
||||||
- env: INSTANCE=default-amazonlinux-2-master-py3
|
- env: INSTANCE=default-amazonlinux-2-master-py3
|
||||||
|
# - env: INSTANCE=modules-amazonlinux-2-master-py3
|
||||||
|
# - env: INSTANCE=default-debian-10-2019-2-py3
|
||||||
# - env: INSTANCE=modules-debian-10-2019-2-py3
|
# - env: INSTANCE=modules-debian-10-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-debian-9-2019-2-py3
|
||||||
# - env: INSTANCE=modules-debian-9-2019-2-py3
|
# - env: INSTANCE=modules-debian-9-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-ubuntu-1804-2019-2-py3
|
||||||
- env: INSTANCE=modules-ubuntu-1804-2019-2-py3
|
- env: INSTANCE=modules-ubuntu-1804-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-centos-8-2019-2-py3
|
||||||
# - env: INSTANCE=modules-centos-8-2019-2-py3
|
# - env: INSTANCE=modules-centos-8-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-fedora-31-2019-2-py3
|
||||||
# - env: INSTANCE=modules-fedora-31-2019-2-py3
|
# - env: INSTANCE=modules-fedora-31-2019-2-py3
|
||||||
# - env: INSTANCE=suse-opensuse-leap-151-2019-2-py3
|
# - env: INSTANCE=default-opensuse-leap-151-2019-2-py3
|
||||||
|
# - env: INSTANCE=modules-opensuse-leap-151-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-centos-7-2019-2-py2
|
||||||
- env: INSTANCE=modules-centos-7-2019-2-py2
|
- env: INSTANCE=modules-centos-7-2019-2-py2
|
||||||
# env: INSTANCE=default-amazonlinux-2-2019-2-py3
|
# - env: INSTANCE=default-amazonlinux-2-2019-2-py3
|
||||||
|
# - env: INSTANCE=modules-amazonlinux-2-2019-2-py3
|
||||||
|
# - env: INSTANCE=default-arch-base-latest-2019-2-py2
|
||||||
# - env: INSTANCE=modules-arch-base-latest-2019-2-py2
|
# - env: INSTANCE=modules-arch-base-latest-2019-2-py2
|
||||||
# env: INSTANCE=modules-fedora-30-2018-3-py3
|
# - env: INSTANCE=arch-arch-base-latest-2019-2-py2
|
||||||
|
# - env: INSTANCE=default-fedora-30-2018-3-py3
|
||||||
|
# - env: INSTANCE=modules-fedora-30-2018-3-py3
|
||||||
|
# - env: INSTANCE=default-debian-9-2018-3-py2
|
||||||
# - env: INSTANCE=modules-debian-9-2018-3-py2
|
# - env: INSTANCE=modules-debian-9-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-ubuntu-1604-2018-3-py2
|
||||||
# - env: INSTANCE=modules-ubuntu-1604-2018-3-py2
|
# - env: INSTANCE=modules-ubuntu-1604-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-centos-7-2018-3-py2
|
||||||
# - env: INSTANCE=modules-centos-7-2018-3-py2
|
# - env: INSTANCE=modules-centos-7-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-opensuse-leap-151-2018-3-py2
|
||||||
# - env: INSTANCE=modules-opensuse-leap-151-2018-3-py2
|
# - env: INSTANCE=modules-opensuse-leap-151-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-amazonlinux-1-2018-3-py2
|
||||||
# - env: INSTANCE=modules-amazonlinux-1-2018-3-py2
|
# - env: INSTANCE=modules-amazonlinux-1-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-arch-base-latest-2018-3-py2
|
||||||
# - env: INSTANCE=modules-arch-base-latest-2018-3-py2
|
# - env: INSTANCE=modules-arch-base-latest-2018-3-py2
|
||||||
|
# - env: INSTANCE=arch-arch-base-latest-2018-3-py2
|
||||||
|
# - env: INSTANCE=default-debian-8-2017-7-py2
|
||||||
# - env: INSTANCE=modules-debian-8-2017-7-py2
|
# - env: INSTANCE=modules-debian-8-2017-7-py2
|
||||||
|
# - env: INSTANCE=default-ubuntu-1604-2017-7-py2
|
||||||
# - env: INSTANCE=modules-ubuntu-1604-2017-7-py2
|
# - env: INSTANCE=modules-ubuntu-1604-2017-7-py2
|
||||||
# env: INSTANCE=default-centos-6-2017-7-py2
|
# - env: INSTANCE=default-centos-6-2017-7-py2
|
||||||
|
# - env: INSTANCE=modules-centos-6-2017-7-py2
|
||||||
|
# - env: INSTANCE=default-fedora-30-2017-7-py2
|
||||||
# - env: INSTANCE=modules-fedora-30-2017-7-py2
|
# - env: INSTANCE=modules-fedora-30-2017-7-py2
|
||||||
|
# - env: INSTANCE=default-opensuse-leap-151-2017-7-py2
|
||||||
# - env: INSTANCE=modules-opensuse-leap-151-2017-7-py2
|
# - env: INSTANCE=modules-opensuse-leap-151-2017-7-py2
|
||||||
|
# - env: INSTANCE=default-amazonlinux-1-2017-7-py2
|
||||||
# - env: INSTANCE=modules-amazonlinux-1-2017-7-py2
|
# - env: INSTANCE=modules-amazonlinux-1-2017-7-py2
|
||||||
|
# - env: INSTANCE=default-arch-base-latest-2017-7-py2
|
||||||
|
# - env: INSTANCE=modules-arch-base-latest-2017-7-py2
|
||||||
- env: INSTANCE=arch-arch-base-latest-2017-7-py2
|
- env: INSTANCE=arch-arch-base-latest-2017-7-py2
|
||||||
|
|
||||||
## Define the release stage that runs `semantic-release`
|
## Define the release stage that runs `semantic-release`
|
||||||
|
@ -13,7 +13,6 @@ ignore: |
|
|||||||
test/**/states/**/*.sls
|
test/**/states/**/*.sls
|
||||||
.kitchen/
|
.kitchen/
|
||||||
test/salt/pillar/modules.sls
|
test/salt/pillar/modules.sls
|
||||||
test/salt/pillar/default.sls
|
|
||||||
pillar.example
|
pillar.example
|
||||||
|
|
||||||
yaml-files:
|
yaml-files:
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
|
||||||
|
|
||||||
# SECTION: Owner(s) for everything in the repo, unless a later match takes precedence
|
# SECTION: Owner(s) for everything in the repo, unless a later match takes precedence
|
||||||
# **************************************************************************
|
|
||||||
# *** NO GLOBAL OWNER(S) SPECIFIED ***
|
|
||||||
# *** Ideally this will be defined for a healthy, well-maintained repo ***
|
|
||||||
# **************************************************************************
|
|
||||||
# FILE PATTERN OWNER(S)
|
# FILE PATTERN OWNER(S)
|
||||||
* @NONE
|
* @noelmcloughlin
|
||||||
|
|
||||||
# SECTION: Owner(s) for specific directories
|
# SECTION: Owner(s) for specific directories
|
||||||
# FILE PATTERN OWNER(S)
|
# FILE PATTERN OWNER(S)
|
||||||
|
@ -1,16 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vim: ft=jinja
|
|
||||||
|
|
||||||
{#- Get the relevant values from the `opts` dict #}
|
|
||||||
{%- set opts_cli = opts.get('__cli', '') %}
|
|
||||||
{%- set opts_masteropts_cli = opts | traverse('__master_opts__:__cli', '') %}
|
|
||||||
|
|
||||||
{#- Determine the type of salt command being run #}
|
|
||||||
{%- if opts_cli == 'salt-minion' %}
|
|
||||||
{%- set cli = 'minion' %}
|
|
||||||
{%- elif opts_cli == 'salt-call' %}
|
|
||||||
{%- set cli = 'ssh' if opts_masteropts_cli in ('salt-ssh', 'salt-master') else 'local' %}
|
|
||||||
{%- else %}
|
|
||||||
{%- set cli = 'unknown' %}
|
|
||||||
{%- endif %}
|
|
||||||
{%- do salt['log.debug']('[libsaltcli] the salt command type has been identified to be: ' ~ cli) %}
|
|
@ -1,40 +1,37 @@
|
|||||||
{%- macro files_switch(source_files,
|
{%- macro files_switch(
|
||||||
lookup=None,
|
source_files,
|
||||||
default_files_switch=['id', 'os_family'],
|
lookup=None,
|
||||||
indent_width=6,
|
default_files_switch=["id", "os_family"],
|
||||||
use_subpath=False) %}
|
indent_width=6,
|
||||||
{#-
|
use_subpath=False
|
||||||
|
) %}
|
||||||
|
{#-
|
||||||
Returns a valid value for the "source" parameter of a "file.managed"
|
Returns a valid value for the "source" parameter of a "file.managed"
|
||||||
state function. This makes easier the usage of the Template Override and
|
state function. This makes easier the usage of the Template Override and
|
||||||
Files Switch (TOFS) pattern.
|
Files Switch (TOFS) pattern.
|
||||||
|
|
||||||
Params:
|
Params:
|
||||||
* source_files: ordered list of files to look for
|
* source_files: ordered list of files to look for
|
||||||
* lookup: key under '<tplroot>:tofs:source_files' to prepend to the
|
* lookup: key under "<tplroot>:tofs:source_files" to prepend to the
|
||||||
list of source files
|
list of source files
|
||||||
* default_files_switch: if there's no config (e.g. pillar)
|
* default_files_switch: if there's no config (e.g. pillar)
|
||||||
'<tplroot>:tofs:files_switch' this is the ordered list of grains to
|
"<tplroot>:tofs:files_switch" this is the ordered list of grains to
|
||||||
use as selector switch of the directories under
|
use as selector switch of the directories under
|
||||||
"<path_prefix>/files"
|
"<path_prefix>/files"
|
||||||
* indent_width: indentation of the result value to conform to YAML
|
* indent_width: indentation of the result value to conform to YAML
|
||||||
* use_subpath: defaults to `False` but if set, lookup the source file
|
* use_subpath: defaults to `False` but if set, lookup the source file
|
||||||
recursively from the current state directory up to `tplroot`
|
recursively from the current state directory up to `tplroot`
|
||||||
|
|
||||||
Example (based on a `tplroot` of `xxx`):
|
Example (based on a `tplroot` of `xxx`):
|
||||||
|
|
||||||
If we have a state:
|
If we have a state:
|
||||||
|
|
||||||
Deploy configuration:
|
Deploy configuration:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /etc/yyy/zzz.conf
|
- name: /etc/yyy/zzz.conf
|
||||||
- source: {{ files_switch(['/etc/yyy/zzz.conf', '/etc/yyy/zzz.conf.jinja'],
|
- source: {{ files_switch(
|
||||||
lookup='Deploy configuration'
|
["/etc/yyy/zzz.conf", "/etc/yyy/zzz.conf.jinja"],
|
||||||
) }}
|
lookup="Deploy configuration",
|
||||||
|
) }}
|
||||||
- template: jinja
|
- template: jinja
|
||||||
|
|
||||||
In a minion with id=theminion and os_family=RedHat, it's going to be
|
In a minion with id=theminion and os_family=RedHat, it's going to be
|
||||||
rendered as:
|
rendered as:
|
||||||
|
|
||||||
Deploy configuration:
|
Deploy configuration:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /etc/yyy/zzz.conf
|
- name: /etc/yyy/zzz.conf
|
||||||
@ -46,67 +43,73 @@
|
|||||||
- salt://xxx/files/default/etc/yyy/zzz.conf
|
- salt://xxx/files/default/etc/yyy/zzz.conf
|
||||||
- salt://xxx/files/default/etc/yyy/zzz.conf.jinja
|
- salt://xxx/files/default/etc/yyy/zzz.conf.jinja
|
||||||
- template: jinja
|
- template: jinja
|
||||||
#}
|
#}
|
||||||
{#- Get the `tplroot` from `tpldir` #}
|
{#- Get the `tplroot` from `tpldir` #}
|
||||||
{%- set tplroot = tpldir.split('/')[0] %}
|
{%- set tplroot = tpldir.split("/")[0] %}
|
||||||
{%- set path_prefix = salt['config.get'](tplroot ~ ':tofs:path_prefix', tplroot) %}
|
{%- set path_prefix = salt["config.get"](tplroot ~ ":tofs:path_prefix", tplroot) %}
|
||||||
{%- set files_dir = salt['config.get'](tplroot ~ ':tofs:dirs:files', 'files') %}
|
{%- set files_dir = salt["config.get"](tplroot ~ ":tofs:dirs:files", "files") %}
|
||||||
{%- set files_switch_list = salt['config.get'](
|
{%- set files_switch_list = salt["config.get"](
|
||||||
tplroot ~ ':tofs:files_switch',
|
tplroot ~ ":tofs:files_switch", default_files_switch
|
||||||
default_files_switch
|
) %}
|
||||||
) %}
|
{#- Lookup source_files (v2), files (v1), or fallback to an empty list #}
|
||||||
{#- Lookup source_files (v2), files (v1), or fallback to an empty list #}
|
{%- set src_files = salt["config.get"](
|
||||||
{%- set src_files = salt['config.get'](
|
tplroot ~ ":tofs:source_files:" ~ lookup,
|
||||||
tplroot ~ ':tofs:source_files:' ~ lookup,
|
salt["config.get"](tplroot ~ ":tofs:files:" ~ lookup, []),
|
||||||
salt['config.get'](tplroot ~ ':tofs:files:' ~ lookup, [])
|
) %}
|
||||||
) %}
|
{#- Append the default source_files #}
|
||||||
{#- Append the default source_files #}
|
{%- set src_files = src_files + source_files %}
|
||||||
{%- set src_files = src_files + source_files %}
|
{#- Only add to [""] when supporting older TOFS implementations #}
|
||||||
{#- Only add to [''] when supporting older TOFS implementations #}
|
{%- set path_prefix_exts = [""] %}
|
||||||
{%- set path_prefix_exts = [''] %}
|
{%- if use_subpath and tplroot != tpldir %}
|
||||||
{%- if use_subpath and tplroot != tpldir %}
|
{#- Walk directory tree to find {{ files_dir }} #}
|
||||||
{#- Walk directory tree to find {{ files_dir }} #}
|
{%- set subpath_parts = tpldir.lstrip(tplroot).lstrip("/").split("/") %}
|
||||||
{%- set subpath_parts = tpldir.lstrip(tplroot).lstrip('/').split('/') %}
|
{%- for path in subpath_parts %}
|
||||||
{%- for path in subpath_parts %}
|
{%- set subpath = subpath_parts[0 : loop.index] | join("/") %}
|
||||||
{%- set subpath = subpath_parts[0:loop.index] | join('/') %}
|
{%- do path_prefix_exts.append("/" ~ subpath) %}
|
||||||
{%- do path_prefix_exts.append('/' ~ subpath) %}
|
{%- endfor %}
|
||||||
{%- endfor %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- for path_prefix_ext in path_prefix_exts | reverse %}
|
||||||
{%- for path_prefix_ext in path_prefix_exts|reverse %}
|
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
|
||||||
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
|
{#- For older TOFS implementation, use `files_switch` from the config #}
|
||||||
{#- For older TOFS implementation, use `files_switch` from the config #}
|
{#- Use the default, new method otherwise #}
|
||||||
{#- Use the default, new method otherwise #}
|
{%- set fsl = salt["config.get"](
|
||||||
{%- set fsl = salt['config.get'](
|
tplroot ~ path_prefix_ext | replace("/", ":") ~ ":files_switch",
|
||||||
tplroot ~ path_prefix_ext|replace('/', ':') ~ ':files_switch',
|
files_switch_list,
|
||||||
files_switch_list
|
) %}
|
||||||
) %}
|
{#- Append an empty value to evaluate as `default` in the loop below #}
|
||||||
{#- Append an empty value to evaluate as `default` in the loop below #}
|
{%- if "" not in fsl %}
|
||||||
{%- if '' not in fsl %}
|
{%- set fsl = fsl + [""] %}
|
||||||
{%- set fsl = fsl + [''] %}
|
{%- endif %}
|
||||||
{%- endif %}
|
{%- for fs in fsl %}
|
||||||
{%- for fs in fsl %}
|
{%- for src_file in src_files %}
|
||||||
{%- for src_file in src_files %}
|
{%- if fs %}
|
||||||
{%- if fs %}
|
{%- set fs_dirs = salt["config.get"](fs, fs) %}
|
||||||
{%- set fs_dirs = salt['config.get'](fs, fs) %}
|
{%- else %}
|
||||||
{%- else %}
|
{%- set fs_dirs = salt["config.get"](
|
||||||
{%- set fs_dirs = salt['config.get'](tplroot ~ ':tofs:dirs:default', 'default') %}
|
tplroot ~ ":tofs:dirs:default", "default"
|
||||||
{%- endif %}
|
) %}
|
||||||
{#- Force the `config.get` lookup result as a list where necessary #}
|
{%- endif %}
|
||||||
{#- since we need to also handle grains that are lists #}
|
{#- Force the `config.get` lookup result as a list where necessary #}
|
||||||
{%- if fs_dirs is string %}
|
{#- since we need to also handle grains that are lists #}
|
||||||
{%- set fs_dirs = [fs_dirs] %}
|
{%- if fs_dirs is string %}
|
||||||
{%- endif %}
|
{%- set fs_dirs = [fs_dirs] %}
|
||||||
{%- for fs_dir in fs_dirs %}
|
{%- endif %}
|
||||||
{%- set url = [
|
{%- for fs_dir in fs_dirs %}
|
||||||
'- salt:/',
|
{#- strip empty elements by using a select #}
|
||||||
path_prefix_inc_ext.strip('/'),
|
{%- set url = (
|
||||||
files_dir.strip('/'),
|
[
|
||||||
fs_dir.strip('/'),
|
"- salt:/",
|
||||||
src_file.strip('/'),
|
path_prefix_inc_ext.strip("/"),
|
||||||
] | select | join('/') %}
|
files_dir.strip("/"),
|
||||||
|
fs_dir.strip("/"),
|
||||||
|
src_file.strip("/"),
|
||||||
|
]
|
||||||
|
| select
|
||||||
|
| join("/")
|
||||||
|
) %}
|
||||||
{{ url | indent(indent_width, true) }}
|
{{ url | indent(indent_width, true) }}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
{%- endmacro %}
|
{%- endmacro %}
|
||||||
|
@ -188,6 +188,10 @@ suites:
|
|||||||
inspec_tests:
|
inspec_tests:
|
||||||
- path: test/integration/modules
|
- path: test/integration/modules
|
||||||
- name: arch
|
- name: arch
|
||||||
|
includes:
|
||||||
|
- arch-base-latest-2019-2-py2
|
||||||
|
- arch-base-latest-2018-3-py2
|
||||||
|
- arch-base-latest-2017-7-py2
|
||||||
provisioner:
|
provisioner:
|
||||||
state_top:
|
state_top:
|
||||||
base:
|
base:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user