Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add parameters to apt::source to avoid requiring an internet connection #100

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,34 @@ The keyserver which should be used to get the repository key.

Default value: ``undef``

##### <a name="repo_keycontent"></a>`repo_keycontent`

Data type: `Optional[String]`

The key content to use, useful when internet connexion is not available.

Default value: `undef`

##### <a name="repo_keysource"></a>`repo_keysource`

Data type: `Optional[Pattern[/\Ahttps?:\/\//, /\Aftp:\/\//, /\A\/\w+/]`

The key source to use, useful when internet connexion is not available and you want to use
an internal source.

Default value: `undef`

##### <a name="repo_keyweak_ssl"></a>`repo_keyweak_ssl`

Data type: `Boolean`

Specifies whether strict SSL verification on a https URL should be disabled when fetching the key.
Valid options: true or false.


Default value: `undef`


##### <a name="config_path"></a>`config_path`

Data type: `String`
Expand Down
58 changes: 34 additions & 24 deletions manifests/init.pp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@
# The base repository url.
# @param repo_keyserver
# The keyserver which should be used to get the repository key.
# @param repo_keycontent
# Supplies the entire GPG key. Useful in case the key can't be fetched from a remote location and using a file resource is inconvenient.
# @param repo_keysource
# Specifies the location of an existing GPG key file to copy. Valid options: a string containing a URL (ftp://, http://, or https://) or
# an absolute path.
# @param repo_keyweak_ssl
# Specifies whether strict SSL verification on a https URL should be disabled. Valid options: true or false.
# @param config_path
# The path to the config file of Gitlab runner.
# @param config_owner
Expand Down Expand Up @@ -74,30 +81,33 @@
# Using the CA file solves https://github.com/voxpupuli/puppet-gitlab_ci_runner/issues/124.
#
class gitlab_ci_runner (
String $xz_package_name, # Defaults in module hieradata
Hash $runners = {},
Hash $runner_defaults = {},
Optional[Integer] $concurrent = undef,
Optional[Gitlab_ci_runner::Log_level] $log_level = undef,
Optional[Gitlab_ci_runner::Log_format] $log_format = undef,
Comment on lines -81 to -82
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these removed?

Optional[Integer] $check_interval = undef,
Optional[String] $sentry_dsn = undef,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this removed?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GitHub fscked'up my in-line comment… I an speaking about $sentry_dsn.

Optional[Pattern[/.*:.+/]] $listen_address = undef,
Optional[Gitlab_ci_runner::Session_server] $session_server = undef,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this removed?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$session_server

Boolean $manage_docker = false,
Boolean $manage_repo = true,
String $package_ensure = installed,
String $package_name = 'gitlab-runner',
Stdlib::HTTPUrl $repo_base_url = 'https://packages.gitlab.com',
Optional[Gitlab_ci_runner::Keyserver] $repo_keyserver = undef,
String $config_path = '/etc/gitlab-runner/config.toml',
String[1] $config_owner = 'root',
String[1] $config_group = 'root',
Stdlib::Filemode $config_mode = '0444',
Boolean $manage_config_dir = false,
Optional[Stdlib::Filemode] $config_dir_mode = undef,
Optional[Stdlib::HTTPUrl] $http_proxy = undef,
Optional[Stdlib::Unixpath] $ca_file = undef,
String $xz_package_name, # Defaults in module hieradata
Hash $runners = {},
Hash $runner_defaults = {},
Optional[Integer] $concurrent = undef,
Optional[Integer] $check_interval = undef,
Optional[String] $builds_dir = undef,
Optional[String] $cache_dir = undef,
Optional[Pattern[/.*:.+/]] $metrics_server = undef,
Comment on lines +89 to +91
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes seems unrelated to this PR.

Optional[Pattern[/.*:.+/]] $listen_address = undef,
Optional[String] $sentry_dsn = undef,
Boolean $manage_docker = false,
Boolean $manage_repo = true,
String $package_ensure = installed,
String $package_name = 'gitlab-runner',
Stdlib::HTTPUrl $repo_base_url = 'https://packages.gitlab.com',
Optional[Stdlib::Fqdn] $repo_keyserver = undef,
Comment on lines -92 to +99
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change the data type?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The one of $repo_keyserver

Optional[String] $repo_keycontent = undef,
Optional[Pattern[/\Ahttps?:\/\//, /\Aftp:\/\//, /\A\/\w+/]] $repo_keysource = undef,
Boolean $repo_keyweak_ssl = false,
String $config_path = '/etc/gitlab-runner/config.toml',
String[1] $config_owner = 'root',
String[1] $config_group = 'root',
Stdlib::Filemode $config_mode = '0444',
Boolean $manage_config_dir = false,
Optional[Stdlib::Filemode] $config_dir_mode = undef,
Optional[Stdlib::HTTPUrl] $http_proxy = undef,
Optional[Stdlib::Unixpath] $ca_file = undef,
) {
if $manage_docker {
# workaround for cirunner issue #1617
Expand Down
16 changes: 11 additions & 5 deletions manifests/repo.pp
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
# @api private
#
class gitlab_ci_runner::repo (
$repo_base_url = $gitlab_ci_runner::repo_base_url,
$repo_keyserver = $gitlab_ci_runner::repo_keyserver,
$package_name = $gitlab_ci_runner::package_name,
$repo_base_url = $gitlab_ci_runner::repo_base_url,
$repo_keyserver = $gitlab_ci_runner::repo_keyserver,
$repo_keycontent = $gitlab_ci_runner::repo_keycontent,
$repo_keysource = $gitlab_ci_runner::repo_keysource,
$repo_keyweak_ssl = $gitlab_ci_runner::repo_keyweak_ssl,
$package_name = $gitlab_ci_runner::package_name,
) {
assert_private()
case $facts['os']['family'] {
Expand All @@ -15,8 +18,11 @@
location => "${repo_base_url}/runner/${package_name}/${facts['os']['distro']['id'].downcase}/",
repos => 'main',
key => {
'id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F',
'server' => $repo_keyserver,
'id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F',
'server' => $repo_keyserver,
'content' => $repo_keycontent,
'source' => $repo_keysource,
'weak_ssl' => $repo_keyweak_ssl,
},
include => {
'src' => false,
Expand Down
41 changes: 39 additions & 2 deletions spec/classes/gitlab_ci_runner_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,10 @@
repos: 'main',
key: {
'id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F',
'server' => undef_value
'server' => undef_value,
'content' => undef_value,
'source' => undef_value,
'weak_ssl' => false
},
include: {
'src' => false,
Expand Down Expand Up @@ -418,7 +421,41 @@
it { is_expected.to contain_class('gitlab_ci_runner::repo') }

it do
is_expected.to contain_apt__source('apt_gitlabci').with_key('id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F', 'server' => 'keys.gnupg.net')
is_expected.to contain_apt__source('apt_gitlabci').with_key('id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F', 'server' => 'keys.gnupg.net', 'content' => undef_value, 'source' => undef_value, 'weak_ssl' => false)
end
end
end
if facts[:os]['family'] == 'Debian'
context 'with manage_repo => true and repo_keysource => http://path.to/gpg.key' do
let(:params) do
super().merge(
manage_repo: true,
repo_keysource: 'http://path.to/gpg.key'
)
end

it { is_expected.to compile }
it { is_expected.to contain_class('gitlab_ci_runner::repo') }

it do
is_expected.to contain_apt__source('apt_gitlabci').with_key('id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F', 'server' => undef_value, 'content' => undef_value, 'source' => 'http://path.to/gpg.key', 'weak_ssl' => false)
end
end
end
if facts[:os]['family'] == 'Debian'
context 'with manage_repo => true and repo_keycontent => "somebase64encodedContent"' do
let(:params) do
super().merge(
manage_repo: true,
repo_keycontent: 'somebase64encodedContent'
)
end

it { is_expected.to compile }
it { is_expected.to contain_class('gitlab_ci_runner::repo') }

it do
is_expected.to contain_apt__source('apt_gitlabci').with_key('id' => 'F6403F6544A38863DAA0B6E03F01618A51312F3F', 'server' => undef_value, 'content' => 'somebase64encodedContent', 'source' => undef_value, 'weak_ssl' => false)
end
end

Expand Down