Browse Source

feat: update chrony formula to new template

BREAKING CHANGE: `chrony.removed` replaced by `.clean` states.
tags/v1.0.0
Kolin Keane 5 years ago
parent
commit
8a05d0f686
24 changed files with 505 additions and 173 deletions
  1. +7
    -0
      chrony/clean.sls
  2. +0
    -17
      chrony/config.sls
  3. +16
    -0
      chrony/config/clean.sls
  4. +27
    -0
      chrony/config/file.sls
  5. +5
    -0
      chrony/config/init.sls
  6. +22
    -20
      chrony/defaults.yaml
  7. +0
    -21
      chrony/files/chrony_config
  8. +24
    -0
      chrony/files/default/chrony.conf.jinja
  9. +6
    -9
      chrony/init.sls
  10. +100
    -0
      chrony/libtofs.jinja
  11. +21
    -19
      chrony/map.jinja
  12. +82
    -0
      chrony/osfamilymap.yaml
  13. +18
    -0
      chrony/osfingermap.yaml
  14. +24
    -59
      chrony/osmap.yaml
  15. +16
    -0
      chrony/package/clean.sls
  16. +5
    -0
      chrony/package/init.sls
  17. +10
    -0
      chrony/package/install.sls
  18. +0
    -10
      chrony/removed.sls
  19. +11
    -0
      chrony/service/clean.sls
  20. +5
    -0
      chrony/service/init.sls
  21. +17
    -0
      chrony/service/running.sls
  22. +48
    -8
      docs/README.rst
  23. +1
    -2
      kitchen.yml
  24. +40
    -8
      pillar.example

+ 7
- 0
chrony/clean.sls View File

@@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

include:
- .service.clean
- .config.clean
- .package.clean

+ 0
- 17
chrony/config.sls View File

@@ -1,17 +0,0 @@
{% from slspath+"/map.jinja" import chrony with context %}

include:
- chrony

chrony_config:
file.managed:
- name: {{ chrony.config }}
- source: {{ chrony.config_src }}
- template: jinja
- defaults:
slspath: {{ slspath|yaml_encode }}
- user: root
- group: root
- mode: 644
- watch_in:
- service: chrony

+ 16
- 0
chrony/config/clean.sls View File

@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_service_clean = tplroot ~ '.service.clean' %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}

include:
- {{ sls_service_clean }}

chrony-config-clean-file-absent:
file.absent:
- name: {{ chrony.config }}
- require:
- sls: {{ sls_service_clean }}

+ 27
- 0
chrony/config/file.sls View File

@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_package_install = tplroot ~ '.package.install' %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}
{%- from tplroot ~ "/libtofs.jinja" import files_switch with context %}

include:
- {{ sls_package_install }}

chrony-config-file-file-managed:
file.managed:
- name: {{ chrony.config }}
- source: {{ files_switch(['chrony.conf', 'chrony.conf.jinja'],
lookup='chrony-config-file-file-managed'
)
}}
- mode: 644
- user: root
- group: root
- template: jinja
- context:
chrony: {{ chrony|json }}
- require:
- sls: {{ sls_package_install }}

+ 5
- 0
chrony/config/init.sls View File

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

include:
- .file

+ 22
- 20
chrony/defaults.yaml View File

@@ -1,27 +1,29 @@
# Default lookup dictionary

# -*- coding: utf-8 -*-
# vim: ft=yaml
---
chrony:
package: chrony
service: chronyd
service:
name: chronyd
config: /etc/chrony.conf
config_src: salt://{{ slspath }}/files/chrony_config
ntpservers: [ '0.us.pool.ntp.org',
'1.us.pool.ntp.org',
'2.us.pool.ntp.org',
'3.us.pool.ntp.org'
]
ntpservers:
- '0.us.pool.ntp.org'
- '1.us.pool.ntp.org'
- '2.us.pool.ntp.org'
- '3.us.pool.ntp.org'
options: iburst
logdir: /var/log/chrony
keyfile: /etc/chrony.keys
driftfile: /var/lib/chrony/drift
otherparams: [ 'rtcsync',
'makestep 10 3',
'stratumweight 0',
'bindcmdaddress 127.0.0.1',
'bindcmdaddress ::1',
'commandkey 1',
'generatecommandkey',
'noclientlog',
'logchange 0.5',
]
allow: [ '10/8', '192.168/16', '172.16/12' ]
otherparams:
- 'rtcsync'
- 'makestep 10 3'
- 'stratumweight 0'
- 'bindcmdaddress 127.0.0.1'
- 'bindcmdaddress ::1'
- 'noclientlog'
- 'logchange 0.5'
allow:
- '10/8'
- '192.168/16'
- '172.16/12'

+ 0
- 21
chrony/files/chrony_config View File

@@ -1,21 +0,0 @@
{% from slspath+"/map.jinja" import chrony as config with context %}
# This file is managed by salt
{% for server in config.ntpservers -%}
server {{ server }} {{ config.options }}
{% endfor %}

keyfile {{ config.keyfile }}

driftfile {{ config.driftfile }}

{% if config.allow is defined %}
{% for allowed in config.get('allow', []) -%}
allow {{ allowed }}
{% endfor %}
{%- endif %}

logdir {{ config.logdir }}

{% for param in config.get('otherparams', []) -%}
{{ param }}
{% endfor %}

+ 24
- 0
chrony/files/default/chrony.conf.jinja View File

@@ -0,0 +1,24 @@
########################################################################
# File managed by Salt at <{{ source }}>.
# Your changes will be overwritten.
########################################################################

{% for server in chrony.ntpservers -%}
server {{ server }} {{ chrony.options }}
{% endfor %}

keyfile {{ chrony.keyfile }}

driftfile {{ chrony.driftfile }}

{% if chrony.allow is defined %}
{% for allowed in chrony.get('allow', []) -%}
allow {{ allowed }}
{% endfor %}
{%- endif %}

logdir {{ chrony.logdir }}

{% for param in chrony.get('otherparams', []) -%}
{{ param }}
{% endfor %}

+ 6
- 9
chrony/init.sls View File

@@ -1,10 +1,7 @@
{% from slspath+"/map.jinja" import chrony with context %}
# -*- coding: utf-8 -*-
# vim: ft=sls

chrony:
pkg.installed:
- name: {{ chrony.package }}
service.running:
- enable: True
- name: {{ chrony.service }}
- require:
- pkg: {{ chrony.package }}
include:
- .package
- .config
- .service

+ 100
- 0
chrony/libtofs.jinja View File

@@ -0,0 +1,100 @@
{%- macro files_switch(source_files,
lookup=None,
default_files_switch=['id', 'os_family'],
indent_width=6,
v1_path_prefix='') %}
{#-
Returns a valid value for the "source" parameter of a "file.managed"
state function. This makes easier the usage of the Template Override and
Files Switch (TOFS) pattern.

Params:
* source_files: ordered list of files to look for
* lookup: key under '<tplroot>:tofs:source_files' to override
list of source files
* default_files_switch: if there's no config (e.g. pillar)
'<tplroot>:tofs:files_switch' this is the ordered list of grains to
use as selector switch of the directories under
"<path_prefix>/files"
* indent_witdh: indentation of the result value to conform to YAML
* v1_path_prefix: (deprecated) only used for injecting a path prefix into
the source, to support older TOFS configs

Example (based on a `tplroot` of `xxx`):

If we have a state:

Deploy configuration:
file.managed:
- name: /etc/yyy/zzz.conf
- source: {{ files_switch(['/etc/yyy/zzz.conf', '/etc/yyy/zzz.conf.jinja'],
lookup='Deploy configuration'
) }}
- template: jinja

In a minion with id=theminion and os_family=RedHat, it's going to be
rendered as:

Deploy configuration:
file.managed:
- name: /etc/yyy/zzz.conf
- source:
- salt://xxx/files/theminion/etc/yyy/zzz.conf
- salt://xxx/files/theminion/etc/yyy/zzz.conf.jinja
- salt://xxx/files/RedHat/etc/yyy/zzz.conf
- salt://xxx/files/RedHat/etc/yyy/zzz.conf.jinja
- salt://xxx/files/default/etc/yyy/zzz.conf
- salt://xxx/files/default/etc/yyy/zzz.conf.jinja
- template: jinja
#}
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set path_prefix = salt['config.get'](tplroot ~ ':tofs:path_prefix', tplroot) %}
{%- set files_dir = salt['config.get'](tplroot ~ ':tofs:dirs:files', 'files') %}
{%- set files_switch_list = salt['config.get'](
tplroot ~ ':tofs:files_switch',
default_files_switch
) %}
{#- Lookup source_files (v2), files (v1), or fallback to source_files parameter #}
{%- set src_files = salt['config.get'](
tplroot ~ ':tofs:source_files:' ~ lookup,
salt['config.get'](
tplroot ~ ':tofs:files:' ~ lookup,
source_files
)
) %}
{#- Only add to [''] when supporting older TOFS implementations #}
{%- set path_prefix_exts = [''] %}
{%- if v1_path_prefix != '' %}
{%- do path_prefix_exts.append(v1_path_prefix) %}
{%- endif %}
{%- for path_prefix_ext in path_prefix_exts %}
{%- set path_prefix_inc_ext = path_prefix ~ path_prefix_ext %}
{#- For older TOFS implementation, use `files_switch` from the config #}
{#- Use the default, new method otherwise #}
{%- set fsl = salt['config.get'](
tplroot ~ path_prefix_ext|replace('/', ':') ~ ':files_switch',
files_switch_list
) %}
{#- Append an empty value to evaluate as `default` in the loop below #}
{%- if '' not in fsl %}
{%- do fsl.append('') %}
{%- endif %}
{%- for fs in fsl %}
{%- for src_file in src_files %}
{%- if fs %}
{%- set fs_dir = salt['config.get'](fs, fs) %}
{%- else %}
{%- set fs_dir = salt['config.get'](tplroot ~ ':tofs:dirs:default', 'default') %}
{%- endif %}
{%- set url = '- salt://' ~ '/'.join([
path_prefix_inc_ext,
files_dir,
fs_dir,
src_file.lstrip('/')
]) %}
{{ url | indent(indent_width, true) }}
{%- endfor %}
{%- endfor %}
{%- endfor %}
{%- endmacro %}

+ 21
- 19
chrony/map.jinja View File

@@ -1,22 +1,24 @@
{## start with defaults from defaults.yaml ##}
{% import_yaml slspath+"/defaults.yaml" as defaults %}
{% import_yaml slspath+"/osmap.yaml" as osmap %}
# -*- coding: utf-8 -*-
# vim: ft=jinja

{% set chrony = salt['grains.filter_by'](
defaults,
merge=salt['grains.filter_by'](
osmap,
grain='os_family',
merge=salt['pillar.get']('chrony', {}),
),
base='chrony'
{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{#- Start imports as #}
{%- import_yaml tplroot ~ "/defaults.yaml" as default_settings %}
{%- import_yaml tplroot ~ "/osfamilymap.yaml" as osfamilymap %}
{%- import_yaml tplroot ~ "/osmap.yaml" as osmap %}
{%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %}

{%- set defaults = salt['grains.filter_by'](default_settings,
default='chrony',
merge=salt['grains.filter_by'](osfamilymap, grain='os_family',
merge=salt['grains.filter_by'](osmap, grain='os',
merge=salt['grains.filter_by'](osfingermap, grain='osfinger',
merge=salt['pillar.get']('chrony:lookup', default={})
)
)
)
) %}

{# Debian distros check /etc/default/rcS to determine UTC setting #}
{% if grains['os_family'] == "Debian" %}
{% if salt['cmd.run']('grep UTC=no /etc/default/rcS', output_loglevel='quiet') %}
{%- if chrony['otherparams'] and 'rtconutc' in chrony['otherparams'] %}
{% do chrony['otherparams'].remove('rtconutc') %}
{%- endif %}
{% endif %}
{% endif %}
{#- Merge the chrony pillar #}
{%- set chrony = salt['pillar.get']('chrony', default=defaults, merge=True) %}

+ 82
- 0
chrony/osfamilymap.yaml View File

@@ -0,0 +1,82 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
#
# Setup variables using grains['os_family'] based logic.
# You just need to add the key:values for an `os_family` that differ
# from `defaults.yaml`.
# Only add an `os_family` which is/will be supported by the formula
#
# If you do not need to provide defaults via the `os_family` grain,
# you will need to provide at least an empty dict in this file, e.g.
# osfamilymap: {}
---
Debian:
service:
name: chrony
config: /etc/chrony/chrony.conf
ntpservers:
- '0.debian.pool.ntp.org'
- '1.debian.pool.ntp.org'
- '2.debian.pool.ntp.org'
- '3.debian.pool.ntp.org'
options: offline minpoll 8
keyfile: /etc/chrony/chrony.keys
driftfile: /var/lib/chrony/chrony.drift
otherparams:
- 'log tracking measurements statistics'
- 'maxupdateskew 100.0'
- 'dumponexit'
- 'dumpdir /var/lib/chrony'
- 'commandkey 1'
- 'local stratum 10'
- 'rtconutc'

RedHat:
ntpservers:
- '0.centos.pool.ntp.org'
- '1.centos.pool.ntp.org'
- '2.centos.pool.ntp.org'
- '3.centos.pool.ntp.org'
otherparams:
- 'rtcsync'
- 'makestep 10 3'
- 'stratumweight 0'
- 'bindcmdaddress 127.0.0.1'
- 'bindcmdaddress ::1'
- 'commandkey 1'
- 'generatecommandkey'
- 'noclientlog'
- 'logchange 0.5'

openSUSE:
ntpservers:
- '0.arch.opensuse.ntp.org'
- '1.arch.opensuse.ntp.org'
- '2.arch.opensuse.ntp.org'
- '3.opensuse.pool.ntp.org'
otherparams:
- 'rtcsync'
- 'makestep 10 3'
- 'maxdistance 6'
- 'logchange 0.1'

Gentoo:
package: net-misc/chrony
config: /etc/chrony/chrony.conf
ntpservers:
- '0.gentoo.pool.ntp.org'
- '1.gentoo.pool.ntp.org'
- '2.gentoo.pool.ntp.org'
- '3.gentoo.pool.ntp.org'
otherparams:
- 'rtconutc'
- 'rtcsync'

Arch:
ntpservers:
- '0.arch.pool.ntp.org'
- '1.arch.pool.ntp.org'
- '2.arch.pool.ntp.org'
otherparams:
- 'rtconutc'
- 'rtcsync'

+ 18
- 0
chrony/osfingermap.yaml View File

@@ -0,0 +1,18 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
#
# Setup variables using grains['osfinger'] based logic.
# You just need to add the key:values for an `osfinger` that differ
# from `defaults.yaml` + `os_family.yaml` + `osmap.yaml`.
# Only add an `osfinger` which is/will be supported by the formula
#
# If you do not need to provide defaults via the `os_finger` grain,
# you will need to provide at least an empty dict in this file, e.g.
# osfingermap: {}
---
# os: Ubuntu
Ubuntu-18.04: {}

# os: CentOS
CentOS-6: {}
CentOS-7: {}

+ 24
- 59
chrony/osmap.yaml View File

@@ -1,65 +1,30 @@
# OS parameters overriding common defaults(.yaml)
# -*- coding: utf-8 -*-
# vim: ft=yaml
#
# Setup variables using grains['os'] based logic.
# You just need to add the key:values for an `os` that differ
# from `defaults.yaml` + `os_family.yaml`.
# Only add an `os` which is/will be supported by the formula
#
# If you do not need to provide defaults via the `os` grain,
# you will need to provide at least an empty dict in this file, e.g.
# osmap: {}
---
# os_family: Debian
Ubuntu: {}

Debian:
service: chrony
config: /etc/chrony/chrony.conf
ntpservers: [ '0.debian.pool.ntp.org',
'1.debian.pool.ntp.org',
'2.debian.pool.ntp.org',
'3.debian.pool.ntp.org', ]
options: offline minpoll 8
keyfile: /etc/chrony/chrony.keys
driftfile: /var/lib/chrony/chrony.drift
otherparams: [ 'log tracking measurements statistics',
'maxupdateskew 100.0',
'dumponexit',
'dumpdir /var/lib/chrony',
'commandkey 1',
'local stratum 10',
'rtconutc', ]
Raspbian: {}

RedHat:
ntpservers: [ '0.centos.pool.ntp.org',
'1.centos.pool.ntp.org',
'2.centos.pool.ntp.org',
'3.centos.pool.ntp.org', ]
otherparams: [ 'rtcsync',
'makestep 10 3',
'stratumweight 0',
'bindcmdaddress 127.0.0.1',
'bindcmdaddress ::1',
'commandkey 1',
'generatecommandkey',
'noclientlog',
'logchange 0.5', ]
# os_family: RedHat
Fedora: {}

Arch:
ntpservers: [ '0.arch.pool.ntp.org',
'1.arch.pool.ntp.org',
'2.arch.pool.ntp.org' ]
otherparams: [ 'rtconutc',
'rtcsync', ]
CentOS: {}

Gentoo:
package: net-misc/chrony
service: chronyd
config: /etc/chrony/chrony.conf
ntpservers: [ '0.gentoo.pool.ntp.org',
'1.gentoo.pool.ntp.org',
'2.gentoo.pool.ntp.org',
'3.gentoo.pool.ntp.org', ]
options: iburst
driftfile: /var/lib/chrony/drift
otherparams: [ 'rtconutc',
'rtcsync', ]
# os_family: Gentoo
Gentoo: {}

Suse:
ntpservers: [ '0.arch.opensuse.ntp.org',
'1.arch.opensuse.ntp.org',
'2.arch.opensuse.ntp.org',
'3.opensuse.pool.ntp.org', ]
otherparams: [ 'rtcsync',
'makestep 10 3',
'maxdistance 6',
'logchange 0.1', ]
# os_family: Suse
Suse: {}

# os_family: Arch
Arch: {}

+ 16
- 0
chrony/package/clean.sls View File

@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_config_clean = tplroot ~ '.config.clean' %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}

include:
- {{ sls_config_clean }}

chrony-package-clean-pkg-removed:
pkg.removed:
- name: {{ chrony.pkg }}
- require:
- sls: {{ sls_config_clean }}

+ 5
- 0
chrony/package/init.sls View File

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

include:
- .install

+ 10
- 0
chrony/package/install.sls View File

@@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}

chrony-package-install-pkg-installed:
pkg.installed:
- name: {{ chrony.package }}

+ 0
- 10
chrony/removed.sls View File

@@ -1,10 +0,0 @@
{% from slspath+"/map.jinja" import chrony with context %}

chrony_removed:
service.dead:
- enable: False
- name: {{ chrony.service }}
pkg.removed:
- name: {{ chrony.package }}
- require:
- service: chrony_removed

+ 11
- 0
chrony/service/clean.sls View File

@@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}

chrony-service-clean-service-dead:
service.dead:
- name: {{ chrony.service.name }}
- enable: False

+ 5
- 0
chrony/service/init.sls View File

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

include:
- .running

+ 17
- 0
chrony/service/running.sls View File

@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
# vim: ft=sls

{#- Get the `tplroot` from `tpldir` #}
{%- set tplroot = tpldir.split('/')[0] %}
{%- set sls_config_file = tplroot ~ '.config.file' %}
{%- from tplroot ~ "/map.jinja" import chrony with context %}

include:
- {{ sls_config_file }}

chrony-service-running-service-running:
service.running:
- name: {{ chrony.service.name }}
- enable: True
- require:
- sls: {{ sls_config_file }}

+ 48
- 8
docs/README.rst View File

@@ -40,20 +40,60 @@ Contributing to this repo
Please see :ref:`How to contribute <CONTRIBUTING>` for more details.

Available states
================
----------------

.. contents::
:local:

``chrony``
----------
^^^^^^^^^^

Installs the chrony package.
*Meta-state (This is a state that includes other states)*.

This installs the chrony package,
manages the chrony configuration file and then
starts the associated chrony service.

``chrony.package``
^^^^^^^^^^^^^^^^^^

This state will install the chrony package only.

``chrony.config``
-----------------
This state manages the file ``chrony.conf`` under ``/etc`` (template found in "chrony/files"). The configuration is populated by values in "chrony/map.jinja" based on the package's default values (and RedHat, Debian, Suse and Arch family distribution specific values), which can then be overridden by values of the same name in pillar.
^^^^^^^^^^^^^^^^^

This state will configure the chrony service and has a dependency on ``chrony.install``
via include list.

``chrony.service``
^^^^^^^^^^^^^^^^^^

This state will start the chrony service and has a dependency on ``chrony.config``
via include list.

``chrony.clean``
^^^^^^^^^^^^^^^^

*Meta-state (This is a state that includes other states)*.

this state will undo everything performed in the ``chrony`` meta-state in reverse order, i.e.
stops the service,
removes the configuration file and
then uninstalls the package.

``chrony.service.clean``
^^^^^^^^^^^^^^^^^^^^^^^^

This state will stop the chrony service and disable it at boot time.

``chrony.config.clean``
^^^^^^^^^^^^^^^^^^^^^^^

This state will remove the configuration of the chrony service and has a
dependency on ``chrony.service.clean`` via include list.

``chrony.package.clean``
^^^^^^^^^^^^^^^^^^^^^^^^

``chrony.removed``
-----------------
Stops the service and uninstalls the package.
This state will remove the chrony package and has a depency on
``chrony.config.clean`` via include list.

+ 1
- 2
kitchen.yml View File

@@ -72,8 +72,7 @@ provisioner:
state_top:
base:
'*':
# - chrony
- chrony.config
- chrony
pillars:
top.sls:
base:

+ 40
- 8
pillar.example View File

@@ -1,10 +1,42 @@
chrony:
ntpservers:
- 'ntp0.nl.net'
- 'ntp1.nl.net'
- 'ntp2.nl.net'
- 'ntp.xs4all.nl'
- '0.nl.pool.ntp.org'
- '1.nl.pool.ntp.org'
- '2.nl.pool.ntp.org'
- '3.nl.pool.ntp.org'
- '0.debian.pool.ntp.org'
- '1.centos.pool.ntp.org'
- '2.arch.pool.ntp.org'
- '3.gentoo.pool.ntp.org'
allow:
- '10/8'
- '192.168/16'
- '172.16/12'
otherparams:
- 'rtcsync'
- 'makestep 10 3'
- 'stratumweight 0'
- 'bindcmdaddress 127.0.0.1'
- 'bindcmdaddress ::1'
- 'commandkey 1'
- 'generatecommandkey'
- 'noclientlog'
- 'logchange 0.5'
# tofs:
# # The files_switch key serves as a selector for alternative
# # directories under the formula files directory. See TOFS pattern
# # doc for more info.
# # Note: Any value not evaluated by `config.get` will be used literally.
# # This can be used to set custom paths, as many levels deep as required.
# files_switch:
# - any/path/can/be/used/here
# - id
# - osfinger
# - os
# - os_family
# # All aspects of path/file resolution are customisable using the options below.
# # This is unnecessary in most cases; there are sensible defaults.
# path_prefix: template_alt
# dirs:
# files: files_alt
# default: default_alt
# source_files:
# chrony-config-file-file-managed:
# - 'chrony_alt.conf'
# - 'chrony_alt.conf.jinja'

Loading…
Cancel
Save