commit 08ffffbe5247cca7e488dbc810415d1f66a0607e Author: root Date: Mon Mar 25 18:41:49 2019 +0000 Initial PAWS puppetization diff --git a/manifests/site.pp b/manifests/site.pp index 271c507d05..ce7799a765 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -1,2299 +1,19 @@ +node 'paws-packages-01.paws.eqiad.wmflabs' { + include role::paws::packages_server } +node /^paws-master/ { + include role::paws::master } +node /^paws-worker/ { + include role::paws::worker } +node /^paws-int-lb/ { + include role::paws::internal_lb } +node /^paws-ext-lb/ { + include role::paws::external_lb } diff --git a/modules/profile/manifests/paws/common.pp b/modules/profile/manifests/paws/common.pp new file mode 100644 index 0000000000..db99dcf272 --- /dev/null +++ b/modules/profile/manifests/paws/common.pp @@ -0,0 +1,6 @@ +class profile::paws::common { + + require role::labs::instance + include profile::paws::repos + +} diff --git a/modules/profile/manifests/paws/docker.pp b/modules/profile/manifests/paws/docker.pp new file mode 100644 index 0000000000..73a8bcb322 --- /dev/null +++ b/modules/profile/manifests/paws/docker.pp @@ -0,0 +1,47 @@ +class profile::paws::docker { + + # Consult the Kubernetes changelog for supported versions + $docker_ce_version = '5:18.09.3~3-0~debian-stretch' + $docker_ce_cli_version = '5:18.09.3~3-0~debian-stretch' + $containerd_version = '1.2.4-1' + + apt::pin { 'docker-ce': + package => 'docker-ce', + pin => "version ${docker_ce_version}", + priority => '3000', + } + + package { 'docker-ce': + ensure => "${docker_ce_version}", + require => Apt::Pin['docker-ce'], + } + + apt::pin { 'docker-ce-cli': + package => 'docker-ce-cli', + pin => "version ${docker_ce_cli_version}", + priority => '3000', + } + + package { 'docker-ce-cli': + ensure => "${docker_ce_cli_version}", + require => Apt::Pin['docker-ce-cli'], + } + + apt::pin { 'containerd.io': + package => 'containerd.io', + pin => "version ${containerd_version}", + priority => '3000', + } + + package { 'containerd.io': + ensure => "${containerd_version}", + require => Apt::Pin['containerd.io'], + } + + service { 'docker': + ensure => true, + enable => true, + require => Package['docker-ce'], + } + +} diff --git a/modules/profile/manifests/paws/external_lb.pp b/modules/profile/manifests/paws/external_lb.pp new file mode 100644 index 0000000000..7f0a817d89 --- /dev/null +++ b/modules/profile/manifests/paws/external_lb.pp @@ -0,0 +1,2 @@ +class profile::paws::external_lb { +} diff --git a/modules/profile/manifests/paws/internal_lb.pp b/modules/profile/manifests/paws/internal_lb.pp new file mode 100644 index 0000000000..53e2409b06 --- /dev/null +++ b/modules/profile/manifests/paws/internal_lb.pp @@ -0,0 +1,2 @@ +class profile::paws::internal_lb { +} diff --git a/modules/profile/manifests/paws/kubernetes.pp b/modules/profile/manifests/paws/kubernetes.pp new file mode 100644 index 0000000000..d2d9872d06 --- /dev/null +++ b/modules/profile/manifests/paws/kubernetes.pp @@ -0,0 +1,41 @@ +class profile::paws::kubernetes { + + $version = '1.13.4-00' + + $packages = [ + 'kubectl', + 'kubelet', + 'kubeadm', + ] + + apt::pin { 'kubernetes': + package => $packages, + pin => "version ${version}", + priority => '3000', + } + + package { $packages: + ensure => "${version}", + require => Apt::Pin['kubernetes'], + } + + service { 'kubelet': + ensure => true, + enable => true, + require => Package['kubelet'], + } + + file_line { 'swap-fstab': + ensure => absent, + path => '/etc/fstab', + match => 'none swap defaults 1 0', + match_for_absence => true, + multiple => true, + } + + exec { "swap-off": + command => "/sbin/swapoff -a", + onlyif => "/bin/grep partition /proc/swaps" + } + +} diff --git a/modules/profile/manifests/paws/nginx.pp b/modules/profile/manifests/paws/nginx.pp new file mode 100644 index 0000000000..1f4452a91c --- /dev/null +++ b/modules/profile/manifests/paws/nginx.pp @@ -0,0 +1,24 @@ +class profile::paws::nginx { + + $version = '1.14.1-1~bpo9+1' + + $packages = [ + 'nginx-light', + 'nginx-common', + 'libnginx-mod-http-echo', + 'libnginx-mod-stream', + ] + + apt::pin { 'nginx': + package => $packages, + pin => "version ${version}", + priority => '3000', + } + + package { $packages: + ensure => "${version}", + install_options => ['-t', 'stretch-backports'], + require => Apt::Pin['nginx'], + } + +} diff --git a/modules/profile/manifests/paws/packages_server.pp b/modules/profile/manifests/paws/packages_server.pp new file mode 100644 index 0000000000..d4314a803d --- /dev/null +++ b/modules/profile/manifests/paws/packages_server.pp @@ -0,0 +1,3 @@ +class profile::paws::packages_server { + include role::aptly::server +} diff --git a/modules/profile/manifests/paws/repos.pp b/modules/profile/manifests/paws/repos.pp new file mode 100644 index 0000000000..456d15623f --- /dev/null +++ b/modules/profile/manifests/paws/repos.pp @@ -0,0 +1,23 @@ +class profile::paws::repos ( + String $servername = 'paws-packages-01.paws.eqiad.wmflabs', + String $protocol = 'http', +) { + + apt::repository { 'kubernetes-xenial': + uri => "${protocol}://${servername}/repo", + dist => "kubernetes-xenial", + components => "main", + source => false, + trust_repo => true, + } + + apt::repository { 'docker-ce': + uri => "${protocol}://${servername}/repo", + dist => "docker-ce", + components => "main", + source => false, + trust_repo => true, + } + +} + diff --git a/modules/role/manifests/paws/external_lb.pp b/modules/role/manifests/paws/external_lb.pp new file mode 100644 index 0000000000..4f1e052ca4 --- /dev/null +++ b/modules/role/manifests/paws/external_lb.pp @@ -0,0 +1,5 @@ +class role::paws::external_lb { + include profile::paws::common + include profile::paws::nginx + include profile::paws::external_lb +} diff --git a/modules/role/manifests/paws/internal_lb.pp b/modules/role/manifests/paws/internal_lb.pp new file mode 100644 index 0000000000..c065b2a7f9 --- /dev/null +++ b/modules/role/manifests/paws/internal_lb.pp @@ -0,0 +1,5 @@ +class role::paws::internal_lb { + include profile::paws::common + include profile::paws::nginx + include profile::paws::internal_lb +} diff --git a/modules/role/manifests/paws/master.pp b/modules/role/manifests/paws/master.pp new file mode 100644 index 0000000000..084b3e6de6 --- /dev/null +++ b/modules/role/manifests/paws/master.pp @@ -0,0 +1,5 @@ +class role::paws::master { + include profile::paws::common + include profile::paws::docker + include profile::paws::kubernetes +} diff --git a/modules/role/manifests/paws/packages_server.pp b/modules/role/manifests/paws/packages_server.pp new file mode 100644 index 0000000000..3db48c682f --- /dev/null +++ b/modules/role/manifests/paws/packages_server.pp @@ -0,0 +1,4 @@ +class role::paws::packages_server { + include profile::paws::common + include profile::paws::packages_server +} diff --git a/modules/role/manifests/paws/worker.pp b/modules/role/manifests/paws/worker.pp new file mode 100644 index 0000000000..a801576498 --- /dev/null +++ b/modules/role/manifests/paws/worker.pp @@ -0,0 +1,5 @@ +class role::paws::worker { + include profile::paws::common + include profile::paws::docker + include profile::paws::kubernetes +}