diff --git a/lib/puppet/functions/hashi_stack/to_hcl.rb b/lib/puppet/functions/hashi_stack/to_hcl.rb new file mode 100644 index 0000000..0e5a9c6 --- /dev/null +++ b/lib/puppet/functions/hashi_stack/to_hcl.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +require 'hcl2-rb' +# @summary +# Convert a data structure and output it as YAML +Puppet::Functions.create_function(:'hashi_stack::to_hcl') do + # @param data + # The data you want to convert to YAML + # @param options + # A hash of options that will be passed to Ruby's Psych library. Note, this could change between Puppet versions, but at time of writing these are `line_width`, `indentation`, and `canonical`. + # + # @example Output YAML to a file + # file { '/tmp/my.yaml': + # ensure => file, + # content => hashi_stack::to_hcl($myhash), + # } + # @example Use options to control the output format + # file { '/tmp/my.yaml': + # ensure => file, + # content => hashi_stack::to_hcl($myhash, {spaces => 2, tab => 0}) + # } + # + # @return [String] The YAML document + dispatch :to_hcl do + param 'Any', :data + optional_param 'Hash', :options + end + + def to_hcl(data, options = {}) + data.to_hcl2(options.transform_keys(&:to_sym)) + end +end diff --git a/manifests/config_file.pp b/manifests/config_file.pp new file mode 100644 index 0000000..dcdefdf --- /dev/null +++ b/manifests/config_file.pp @@ -0,0 +1,9 @@ +# @summary A short summary of the purpose of this defined type. +# +# A description of what this defined type does +# +# @example +# hashi_stack::config_file { 'namevar': } +define hashi_stack::config_file ( +) { +} diff --git a/spec/defines/config_file_spec.rb b/spec/defines/config_file_spec.rb new file mode 100644 index 0000000..fd8bb6c --- /dev/null +++ b/spec/defines/config_file_spec.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe 'hashi_stack::config_file' do + let(:title) { 'namevar' } + let(:params) do + {} + end + + on_supported_os.each do |os, os_facts| + context "on #{os}" do + let(:facts) { os_facts } + + it { is_expected.to compile } + end + end +end