diff --git a/dhcpd/yaml_dump/init.sls b/dhcpd/yaml_dump/init.sls new file mode 100644 index 0000000..0af2734 --- /dev/null +++ b/dhcpd/yaml_dump/init.sls @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# vim: ft=sls +--- +{#- Get the `tplroot` from `tpldir` #} +{%- set tplroot = tpldir.split('/')[0] %} +{%- from tplroot ~ "/map.jinja" import dhcpd as map with context %} + +{%- set output_file = '/tmp/salt_yaml_dump.yaml' %} + +yaml-dump-{{ tplroot }}: + file.managed: + - name: {{ output_file }} + - source: salt://{{ tplroot }}/yaml_dump/yaml_dump.jinja + - template: jinja + - context: + map: {{ map | yaml }} diff --git a/dhcpd/yaml_dump/yaml_dump.jinja b/dhcpd/yaml_dump/yaml_dump.jinja new file mode 100644 index 0000000..300b464 --- /dev/null +++ b/dhcpd/yaml_dump/yaml_dump.jinja @@ -0,0 +1,4 @@ +# yamllint disable rule:indentation rule:line-length +# {{ grains.get('osfinger', grains.os) }}-{{ grains.saltversion }}-py{{ grains.pythonversion[0] }} +--- +{{ map|yaml(False)|trim }} diff --git a/kitchen.yml b/kitchen.yml index c83e048..1515511 100644 --- a/kitchen.yml +++ b/kitchen.yml @@ -160,6 +160,7 @@ suites: state_top: base: '*': + - dhcpd.yaml_dump - dhcpd.config pillars: top.sls: diff --git a/test/integration/default/controls/yaml_dump_spec.rb b/test/integration/default/controls/yaml_dump_spec.rb new file mode 100644 index 0000000..b640342 --- /dev/null +++ b/test/integration/default/controls/yaml_dump_spec.rb @@ -0,0 +1,59 @@ +# frozen_string_literal: true + +control 'DHCPD `map.jinja` YAML dump' do + title 'should contain the lines' + + config = '/etc/dhcp/dhcpd.conf' + enable = 'false' + server = 'dhcp' + service = 'dhcpd' + yaml_dump = "---\n" + yaml_dump += + case platform[:family] + when 'debian' + <<~YAML_DUMP.chomp + config: #{config} + enable: #{enable} + server: isc-dhcp-server + service: isc-dhcp-server + service_config: /etc/default/isc-dhcp-server + YAML_DUMP + when 'redhat', 'fedora' + <<~YAML_DUMP.chomp + config: #{config} + enable: #{enable} + server: #{server} + service: #{service} + service_config: /etc/systemd/system/dhcpd.service.d/override.conf + YAML_DUMP + when 'suse' + <<~YAML_DUMP.chomp + config: /etc/dhcpd.conf + enable: #{enable} + server: dhcp-server + service: dhcpd + YAML_DUMP + when 'freebsd' + <<~YAML_DUMP.chomp + config: /usr/local/etc/dhcpd.conf + enable: #{enable} + server: isc-dhcp43-server + service: isc-dhcpd + service_config: /etc/rc.conf.d/dhcpd + YAML_DUMP + when 'linux' + case platform[:name] + when 'arch' + <<~YAML_DUMP.chomp + config: /etc/dhcpd.conf + enable: #{enable} + server: dhcp + service: dhcpd4 + YAML_DUMP + end + end + + describe file('/tmp/salt_yaml_dump.yaml') do + its('content') { should include yaml_dump } + end +end