diff --git a/manifests/install/cni_plugins.pp b/manifests/install/cni_plugins.pp index 50715a9..218611f 100644 --- a/manifests/install/cni_plugins.pp +++ b/manifests/install/cni_plugins.pp @@ -27,20 +27,30 @@ $_url = k8s::format_url($download_url_template, { version => $version, }) + $_target = "/opt/k8s/cni-${version}"; + $_tarball_target = '/opt/k8s/archives'; - file { '/opt/cni/bin': - ensure => directory, + file { $_target: + ensure => stdlib::ensure($ensure, 'directory'), } archive { 'cni-plugins': ensure => $ensure, - path => "/tmp/cni-plugins-linux-${version}.tgz", + path => "${_tarball_target}/cni-plugins-linux-${version}.tgz", source => $_url, extract => true, - extract_path => '/opt/cni/bin', - creates => '/opt/cni/bin/bridge', + extract_path => $_target, + creates => "${_target}/bridge", cleanup => true, - require => File['/opt/cni/bin'], + } + + file { '/opt/cni/bin': + ensure => stdlib::ensure($ensure, 'link'), + mode => '0755', + replace => true, + force => true, + target => $_target, + require => Archive['cni-plugins'], } } 'package':{ diff --git a/manifests/install/crictl.pp b/manifests/install/crictl.pp index 9abd559..6b23444 100644 --- a/manifests/install/crictl.pp +++ b/manifests/install/crictl.pp @@ -34,17 +34,31 @@ $_url = k8s::format_url($download_url_template, { version => $version, }) + $_target = "/opt/k8s/crictl-${version}"; + $_tarball_target = '/opt/k8s/archives'; + + file { $_target: + ensure => stdlib::ensure($ensure, 'directory'), + } archive { 'crictl': ensure => $ensure, - path => "/tmp/crictl-${version}-linux.tar.gz", + path => "${_tarball_target}/crictl-${version}-linux.tar.gz", source => $_url, extract => true, - extract_path => '/usr/local/bin', - creates => '/usr/local/bin/crictl', + extract_path => $_target, + creates => "${_target}/crictl", cleanup => true, } + file { '/usr/local/bin/crictl': + ensure => stdlib::ensure($ensure, 'link'), + mode => '0755', + replace => true, + target => "${_target}/crictl", + require => Archive['crictl'], + } + $config_require = Archive['crictl'] } diff --git a/manifests/server/etcd/setup.pp b/manifests/server/etcd/setup.pp index da774e3..b54a459 100644 --- a/manifests/server/etcd/setup.pp +++ b/manifests/server/etcd/setup.pp @@ -80,22 +80,39 @@ if $install == 'archive' { $_url = k8s::format_url($archive_template, { version => $version, }) $_file = basename($_url) + $_target = "/opt/k8s/etcd-${version}"; + $_tarball_target = '/opt/k8s/archives'; - archive { "/var/tmp/${_file}": + file { $_target: + ensure => stdlib::ensure($ensure, 'directory'), + } + + archive { 'etcd': ensure => $ensure, + path => "${_tarball_target}/${_file}", source => $_url, extract => true, extract_command => 'tar xfz %s --strip-components=1', - extract_path => '/usr/local/bin', + extract_path => $_target, cleanup => true, - creates => ['/usr/local/bin/etcd', '/usr/local/bin/etcdctl'], - notify => Service['etcd'], + creates => ["${_target}/etcd", "${_target}/etcdctl"], + } + + file { '/usr/local/bin/etcd': + ensure => stdlib::ensure($ensure, 'link'), + mode => '0755', + replace => true, + target => "${_target}/etcd", + require => Archive['etcd'], + notify => Service['etcd'], } - if $ensure == 'absent' { - file { ['/usr/local/bin/etcd', '/usr/local/bin/etcdctl']: - ensure => 'absent', - } + file { '/usr/local/bin/etcdctl': + ensure => stdlib::ensure($ensure, 'link'), + mode => '0755', + replace => true, + target => "${_target}/etcdctl", + require => Archive['etcd'], } group { $group: diff --git a/spec/classes/server/etcd/setup_spec.rb b/spec/classes/server/etcd/setup_spec.rb index 1c39e69..920b30e 100644 --- a/spec/classes/server/etcd/setup_spec.rb +++ b/spec/classes/server/etcd/setup_spec.rb @@ -31,15 +31,30 @@ class { '::k8s::server::etcd': it { is_expected.to compile } it do - is_expected.to contain_archive('/var/tmp/etcd-v3.6.0-linux-amd64.tar.gz').with( + is_expected.to contain_archive('etcd').with( ensure: 'present', + path: '/opt/k8s/archives/etcd-v3.6.0-linux-amd64.tar.gz', source: 'https://storage.googleapis.com/etcd/v3.6.0/etcd-v3.6.0-linux-amd64.tar.gz', extract: true, extract_command: 'tar xfz %s --strip-components=1', - extract_path: '/usr/local/bin', + extract_path: '/opt/k8s/etcd-3.6.0', cleanup: true, - creates: ['/usr/local/bin/etcd', '/usr/local/bin/etcdctl'] + creates: ['/opt/k8s/etcd-3.6.0/etcd', '/opt/k8s/etcd-3.6.0/etcdctl'] + ) + + is_expected.to contain_file('/usr/local/bin/etcd').with( + ensure: 'link', + mode: '0755', + replace: true, + target: '/opt/k8s/etcd-3.6.0/etcd' ).that_notifies('Service[etcd]') + + is_expected.to contain_file('/usr/local/bin/etcdctl').with( + ensure: 'link', + mode: '0755', + replace: true, + target: '/opt/k8s/etcd-3.6.0/etcdctl' + ) end it { is_expected.to contain_user('etcd') }