Skip to content

Commit

Permalink
Initial puppet module for linux
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffreyc-splunk committed May 17, 2021
1 parent 6621f51 commit 3c6021a
Show file tree
Hide file tree
Showing 23 changed files with 1,105 additions and 0 deletions.
1 change: 1 addition & 0 deletions deployments/puppet/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pkg/*
11 changes: 11 additions & 0 deletions deployments/puppet/.fixtures.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
fixtures:
forge_modules:
stdlib:
repo: "puppetlabs/stdlib"
ref: "4.24.0"
apt:
repo: "puppetlabs/apt"
ref: "7.0.0"
yum:
repo: "puppet/yum"
ref: "4.3.0"
1 change: 1 addition & 0 deletions deployments/puppet/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/pkg/
31 changes: 31 additions & 0 deletions deployments/puppet/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
FROM ubuntu:16.04

ENV PATH=$PATH:/opt/puppetlabs/bin:/opt/puppetlabs/pdk/bin

WORKDIR /tmp
RUN apt update &&\
apt install -y make wget vim gcc ruby ruby-dev libxml2 libxml2-dev libxslt1-dev git apt-transport-https ca-certificates g++

RUN wget https://apt.puppetlabs.com/puppet6-release-xenial.deb &&\
dpkg -i puppet6-release-xenial.deb &&\
rm *.deb &&\
apt update &&\
apt install -y puppet-agent

RUN wget https://apt.puppet.com/puppet-tools-release-xenial.deb && \
dpkg -i puppet-tools-release-xenial.deb && \
apt-get update && \
apt-get install -y pdk && \
rm -f *.deb

WORKDIR /etc/puppetlabs/code/modules/splunk_otel_collector
COPY ./Rakefile ./Gemfile ./Gemfile.lock ./
RUN gem install bundler && bundle install

RUN mkdir -p /root/.config/puppet && \
echo "---\n\
disabled: true" > /root/.config/puppet/analytics.yml

ENV PATH=/opt/puppetlabs/bin:$PATH

COPY ./ ./
127 changes: 127 additions & 0 deletions deployments/puppet/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'

def location_for(place_or_version, fake_version = nil)
if place_or_version =~ %r{\A(git[:@][^#]*)#(.*)}
[fake_version, { git: Regexp.last_match(1), branch: Regexp.last_match(2), require: false }].compact
elsif place_or_version =~ %r{\Afile:\/\/(.*)}
['>= 0', { path: File.expand_path(Regexp.last_match(1)), require: false }]
else
[place_or_version, { require: false }]
end
end

def gem_type(place_or_version)
if place_or_version =~ %r{\Agit[:@]}
:git
elsif !place_or_version.nil? && place_or_version.start_with?('file:')
:file
else
:gem
end
end

ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
minor_version = ruby_version_segments[0..1].join('.')

group :development do
gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.1.0')
gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1.0')
gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('2.0.0')
gem "json", '>= 2.3.0', require: false if Gem::Version.new(RUBY_VERSION.dup) == Gem::Version.new('2.1.9')
gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw]
gem "rspec_junit_formatter"
end

puppet_version = ENV['PUPPET_GEM_VERSION']
puppet_type = gem_type(puppet_version)
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']

def puppet_older_than?(version)
puppet_version = ENV['PUPPET_GEM_VERSION']
!puppet_version.nil? &&
Gem::Version.correct?(puppet_version) &&
Gem::Requirement.new("< #{version}").satisfied_by?(Gem::Version.new(puppet_version.dup))
end

gems = {}

gems['puppet'] = location_for(puppet_version)

# If facter or hiera versions have been specified via the environment
# variables, use those versions. If not, and if the puppet version is < 3.5.0,
# use known good versions of both for puppet < 3.5.0.
if facter_version
gems['facter'] = location_for(facter_version)
elsif puppet_type == :gem && puppet_older_than?('3.5.0')
gems['facter'] = ['>= 1.6.11', '<= 1.7.5', require: false]
end

if hiera_version
gems['hiera'] = location_for(ENV['HIERA_GEM_VERSION'])
elsif puppet_type == :gem && puppet_older_than?('3.5.0')
gems['hiera'] = ['>= 1.0.0', '<= 1.3.0', require: false]
end

if Gem.win_platform? && (puppet_type != :gem || puppet_older_than?('3.5.0'))
# For Puppet gems < 3.5.0 (tested as far back as 3.0.0) on Windows
if puppet_type == :gem
gems['ffi'] = ['1.9.0', require: false]
gems['minitar'] = ['0.5.4', require: false]
gems['win32-eventlog'] = ['0.5.3', '<= 0.6.5', require: false]
gems['win32-process'] = ['0.6.5', '<= 0.7.5', require: false]
gems['win32-security'] = ['~> 0.1.2', '<= 0.2.5', require: false]
gems['win32-service'] = ['0.7.2', '<= 0.8.8', require: false]
else
gems['ffi'] = ['~> 1.9.0', require: false]
gems['minitar'] = ['~> 0.5.4', require: false]
gems['win32-eventlog'] = ['~> 0.5', '<= 0.6.5', require: false]
gems['win32-process'] = ['~> 0.6', '<= 0.7.5', require: false]
gems['win32-security'] = ['~> 0.1', '<= 0.2.5', require: false]
gems['win32-service'] = ['~> 0.7', '<= 0.8.8', require: false]
end

gems['win32-dir'] = ['~> 0.3', '<= 0.4.9', require: false]

if RUBY_VERSION.start_with?('1.')
gems['win32console'] = ['1.3.2', require: false]
# sys-admin was removed in Puppet 3.7.0 and doesn't compile under Ruby 2.x
gems['sys-admin'] = ['1.5.6', require: false]
end

# Puppet < 3.7.0 requires these.
# Puppet >= 3.5.0 gem includes these as requirements.
# The following versions are tested to work with 3.0.0 <= puppet < 3.7.0.
gems['win32-api'] = ['1.4.8', require: false]
gems['win32-taskscheduler'] = ['0.2.2', require: false]
gems['windows-api'] = ['0.4.3', require: false]
gems['windows-pr'] = ['1.2.3', require: false]
elsif Gem.win_platform?
# If we're using a Puppet gem on Windows which handles its own win32-xxx gem
# dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
gems['win32-dir'] = ['<= 0.4.9', require: false]
gems['win32-eventlog'] = ['<= 0.6.5', require: false]
gems['win32-process'] = ['<= 0.7.5', require: false]
gems['win32-security'] = ['<= 0.2.5', require: false]
gems['win32-service'] = ['<= 0.8.8', require: false]
end

gems.each do |gem_name, gem_params|
gem gem_name, *gem_params
end

# Evaluate Gemfile.local and ~/.gemfile if they exist
extra_gemfiles = [
"#{__FILE__}.local",
File.join(Dir.home, '.gemfile'),
]

extra_gemfiles.each do |gemfile|
if File.file?(gemfile) && File.readable?(gemfile)
eval(File.read(gemfile), binding)
end
end
# vim: syntax=ruby
172 changes: 172 additions & 0 deletions deployments/puppet/Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
ast (2.4.1)
coderay (1.1.3)
concurrent-ruby (1.1.6)
deep_merge (1.2.1)
diff-lcs (1.4.4)
docile (1.3.2)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
facter (4.0.30)
hocon (~> 1.3)
thor (>= 1.0.1, < 2.0)
facterdb (1.2.0)
facter
jgrep
fast_gettext (1.8.0)
hiera (3.6.0)
hocon (1.3.1)
http-accept (1.7.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
jgrep (1.5.2)
json (2.3.1)
json-schema (2.8.1)
addressable (>= 2.4)
locale (2.1.3)
metaclass (0.0.4)
metadata-json-lint (2.4.0)
json-schema (~> 2.8)
spdx-licenses (~> 1.0)
method_source (1.0.0)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.0512)
mocha (1.1.0)
metaclass (~> 0.0.1)
multi_json (1.15.0)
net-scp (3.0.0)
net-ssh (>= 2.6.5, < 7.0.0)
net-ssh (4.2.0)
net-telnet (0.2.0)
netrc (0.11.0)
parallel (1.19.2)
parallel_tests (2.32.0)
parallel
parser (2.7.1.4)
ast (~> 2.4.1)
pathspec (0.2.1)
powerpack (0.1.2)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
public_suffix (4.0.5)
puppet (6.17.0)
concurrent-ruby (~> 1.0)
deep_merge (~> 1.0)
facter (> 2.0.1, < 5)
fast_gettext (~> 1.1)
hiera (>= 3.2.1, < 4)
httpclient (~> 2.8)
locale (~> 2.1)
multi_json (~> 1.10)
puppet-resource_api (~> 1.5)
semantic_puppet (~> 1.0)
puppet-blacksmith (4.1.2)
rest-client (~> 2.0)
puppet-lint (2.4.2)
puppet-module-posix-default-r2.3 (0.5.0)
puppet-module-posix-dev-r2.3 (0.0.8)
metadata-json-lint
mocha (< 1.2.0)
parallel_tests
pry
puppet-blacksmith (>= 3.4.0)
puppet-lint
puppetlabs_spec_helper (>= 1.2.1)
rainbow (< 2.2.0)
rspec-puppet (>= 2.3.2)
rspec-puppet-facts
rspec_junit_formatter (~> 0.2)
rubocop
rubocop-rspec (~> 1.15)
simplecov
specinfra (= 2.67.3)
puppet-resource_api (1.8.13)
hocon (>= 1.0)
puppet-syntax (2.6.1)
puppet (>= 5)
rake
puppetlabs_spec_helper (2.15.0)
mocha (~> 1.0)
pathspec (~> 0.2.1)
puppet-lint (~> 2.0)
puppet-syntax (>= 2.0, < 4)
rspec-puppet (~> 2.0)
rainbow (2.1.0)
rake (13.0.1)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rspec (3.9.0)
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
rspec-core (3.9.2)
rspec-support (~> 3.9.3)
rspec-expectations (3.9.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-mocks (3.9.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.9.0)
rspec-puppet (2.7.10)
rspec
rspec-puppet-facts (1.10.0)
facter
facterdb (>= 0.5.0)
json
puppet
rspec-support (3.9.3)
rspec_junit_formatter (0.4.1)
rspec-core (>= 2, < 4, != 2.12.0)
rubocop (0.49.1)
parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0)
ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1)
rubocop-rspec (1.16.0)
rubocop (>= 0.49.0)
ruby-progressbar (1.10.1)
semantic_puppet (1.0.2)
sfl (2.3)
simplecov (0.17.1)
docile (~> 1.1)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.2)
spdx-licenses (1.2.0)
specinfra (2.67.3)
net-scp
net-ssh (>= 2.7, < 5.0)
net-telnet
sfl
thor (1.0.1)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)

PLATFORMS
ruby

DEPENDENCIES
fast_gettext
puppet
puppet-module-posix-default-r2.3
puppet-module-posix-dev-r2.3
puppet-module-win-default-r2.3
puppet-module-win-dev-r2.3
rspec_junit_formatter

BUNDLED WITH
2.1.4
32 changes: 32 additions & 0 deletions deployments/puppet/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
.PHONY: dev-image
dev-image:
docker build -t splunk-otel-connector-puppet-dev .

.PHONY: run-dev-image
run-dev-image:
docker exec -it splunk-otel-collector-puppet-dev bash 2>/dev/null || \
docker run \
--rm \
--name splunk-otel-collector-puppet-dev \
-it \
-v $(CURDIR):/etc/puppetlabs/code/modules/splunk_otel_collector \
splunk-otel-connector-puppet-dev \
bash

.PHONY: lint
lint: dev-image
docker run \
--rm \
splunk-otel-connector-puppet-dev \
puppet-lint --fail-on-warnings .

.PHONY: rake-spec
rake-spec: dev-image
docker run \
--rm \
splunk-otel-connector-puppet-dev \
rake spec

.PHONY: release
release:
./release
Loading

0 comments on commit 3c6021a

Please sign in to comment.