diff --git a/manifests/init.pp b/manifests/init.pp index 23def399..98d12677 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -384,6 +384,8 @@ $local_integrations = $integrations } + $_puppetversion = lookup({ 'name' => '::puppetversion', 'default_value' => 'unknown'}) + include datadog_agent::params case upcase($log_level) { 'CRITICAL': { $_loglevel = 'CRITICAL' } @@ -558,6 +560,15 @@ order => '08', } } + + file {'/etc/dd-agent/install_info': + owner => $dd_user, + group => $dd_group, + mode => '0640', + content => template('datadog_agent/install_info.erb'), + require => File['/etc/dd-agent'], + } + } else { #Agent 6/7 # notify of broken params on agent6/7 @@ -714,6 +725,14 @@ require => File['C:/ProgramData/Datadog'], } + file { 'C:/ProgramData/Datadog/install_info': + owner => $dd_user, + group => $dd_group, + mode => '0660', + content => template('datadog_agent/install_info.erb'), + require => File['C:/ProgramData/Datadog'], + } + } else { file { '/etc/datadog-agent/datadog.yaml': @@ -725,6 +744,14 @@ require => File['/etc/datadog-agent'], } + file { '/etc/datadog-agent/install_info': + owner => $dd_user, + group => $dd_group, + mode => '0640', + content => template('datadog_agent/install_info.erb'), + require => File['/etc/datadog-agent'], + } + } } diff --git a/manifests/params.pp b/manifests/params.pp index 0706c355..9ceada4a 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -23,6 +23,7 @@ $apt_backup_keyserver = 'hkp://pool.sks-keyservers.net:80' $apt_keyserver = 'hkp://keyserver.ubuntu.com:80' $sysprobe_service_name = 'datadog-agent-sysprobe' + $module_metadata = load_module_metadata($module_name) case $::operatingsystem { 'Ubuntu','Debian' : { diff --git a/spec/classes/datadog_agent_spec.rb b/spec/classes/datadog_agent_spec.rb index cc7246a7..ffeea833 100644 --- a/spec/classes/datadog_agent_spec.rb +++ b/spec/classes/datadog_agent_spec.rb @@ -1591,11 +1591,13 @@ end config_dir = WINDOWS_OS.include?(operatingsystem) ? 'C:/ProgramData/Datadog' : '/etc/datadog-agent' - config_yaml_file = config_dir + '/datadog.yaml' + config_yaml_file = File.join(config_dir, 'datadog.yaml') + install_info_file = File.join(config_dir, 'install_info') log_file = WINDOWS_OS.include?(operatingsystem) ? 'C:/ProgramData/Datadog/logs/agent.log' : '\/var\/log\/datadog\/agent.log' it { is_expected.to contain_file(config_dir) } it { is_expected.to contain_file(config_yaml_file) } + it { is_expected.to contain_file(install_info_file) } it { is_expected.to contain_file(config_dir + '/conf.d').with_ensure('directory') } # Agent 5 files @@ -1603,6 +1605,21 @@ it { is_expected.not_to contain_concat('/etc/dd-agent/datadog.conf') } it { is_expected.not_to contain_file('/etc/dd-agent/conf.d').with_ensure('directory') } + describe 'install_info check' do + let!(:install_info) do + contents = catalogue.resource('file', install_info_file).send(:parameters)[:content] + YAML.safe_load(contents) + end + + it 'adds an install_info' do + expect(install_info['install_method']).to match( + 'tool' => 'puppet', + 'tool_version' => %r{^puppet-(\d+\.\d+\.\d+|unknown)$}, + 'installer_version' => %r{^datadog_module-\d+\.\d+\.\d+$}, + ) + end + end + describe 'agent6 parameter check' do context 'with defaults' do context 'for basic beta settings' do diff --git a/templates/install_info.erb b/templates/install_info.erb new file mode 100644 index 00000000..8036d7db --- /dev/null +++ b/templates/install_info.erb @@ -0,0 +1,5 @@ +--- +install_method: + tool: puppet + tool_version: puppet-<%= @_puppetversion %> + installer_version: datadog_module-<%= @module_metadata['version'] %>