From b44997c990681a7a3c0a3b41edbc71365d57e3c4 Mon Sep 17 00:00:00 2001 From: Waleed Malik Date: Thu, 7 Jul 2022 19:13:24 +0500 Subject: [PATCH] [release/v1.45] rh_subscriprion bootstrap script (#1350) * rh_subscriprion bootstrap script Signed-off-by: Waleed Malik * Fix tests Signed-off-by: Waleed Malik Co-authored-by: Mattia Lavacca --- pkg/cloudprovider/provider/azure/provider.go | 8 ++--- pkg/controller/machine/bootstrap.go | 30 +++++++++++++++++-- pkg/userdata/rhel/provider.go | 3 -- .../kubelet-containerd-v1.20-aws.yaml | 1 - .../rhel/testdata/kubelet-v1.20-aws.yaml | 1 - .../rhel/testdata/kubelet-v1.21-aws.yaml | 1 - .../rhel/testdata/kubelet-v1.22-aws.yaml | 1 - .../rhel/testdata/kubelet-v1.22-nutanix.yaml | 1 - .../testdata/kubelet-v1.23-aws-external.yaml | 1 - .../rhel/testdata/kubelet-v1.23-aws.yaml | 1 - .../kubelet-v1.23-vsphere-mirrors.yaml | 1 - .../testdata/kubelet-v1.23-vsphere-proxy.yaml | 1 - .../rhel/testdata/kubelet-v1.23-vsphere.yaml | 1 - 13 files changed, 31 insertions(+), 20 deletions(-) diff --git a/pkg/cloudprovider/provider/azure/provider.go b/pkg/cloudprovider/provider/azure/provider.go index 5ff671e11..3357345a8 100644 --- a/pkg/cloudprovider/provider/azure/provider.go +++ b/pkg/cloudprovider/provider/azure/provider.go @@ -132,8 +132,8 @@ var imageReferences = map[providerconfigtypes.OperatingSystem]compute.ImageRefer providerconfigtypes.OperatingSystemRHEL: { Publisher: to.StringPtr("RedHat"), Offer: to.StringPtr("rhel-byos"), - Sku: to.StringPtr("rhel-lvm83"), - Version: to.StringPtr("8.3.20201109"), + Sku: to.StringPtr("rhel-lvm85"), + Version: to.StringPtr("8.5.20220316"), }, providerconfigtypes.OperatingSystemFlatcar: { Publisher: to.StringPtr("kinvolk"), @@ -150,7 +150,7 @@ var osPlans = map[providerconfigtypes.OperatingSystem]*compute.Plan{ Product: pointer.StringPtr("flatcar-container-linux"), }, providerconfigtypes.OperatingSystemRHEL: { - Name: pointer.StringPtr("rhel-lvm83"), + Name: pointer.StringPtr("rhel-lvm85"), Publisher: pointer.StringPtr("redhat"), Product: pointer.StringPtr("rhel-byos"), }, @@ -180,7 +180,7 @@ func getOSImageReference(c *config, os providerconfigtypes.OperatingSystem) (*co return &ref, nil } -// New returns a digitalocean provider +// New returns a new azure provider func New(configVarResolver *providerconfig.ConfigVarResolver) cloudprovidertypes.Provider { return &provider{configVarResolver: configVarResolver} } diff --git a/pkg/controller/machine/bootstrap.go b/pkg/controller/machine/bootstrap.go index d68705583..92916f4a6 100644 --- a/pkg/controller/machine/bootstrap.go +++ b/pkg/controller/machine/bootstrap.go @@ -31,6 +31,7 @@ import ( providerconfigtypes "github.com/kubermatic/machine-controller/pkg/providerconfig/types" "github.com/kubermatic/machine-controller/pkg/userdata/convert" "github.com/kubermatic/machine-controller/pkg/userdata/helper" + "github.com/kubermatic/machine-controller/pkg/userdata/rhel" ctrlruntimeclient "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -123,6 +124,7 @@ func getOSMBootstrapUserDataForCloudInit(req plugin.UserDataRequest, pconfig *pr MachineName string EnterpriseLinux bool ProviderSpec *providerconfigtypes.Config + RHELConfig rhel.Config }{ Token: token, SecretName: secretName, @@ -132,8 +134,9 @@ func getOSMBootstrapUserDataForCloudInit(req plugin.UserDataRequest, pconfig *pr } var ( - bsScript *template.Template - err error + rhelConfig *rhel.Config + bsScript *template.Template + err error ) switch pconfig.OperatingSystem { @@ -159,6 +162,10 @@ func getOSMBootstrapUserDataForCloudInit(req plugin.UserDataRequest, pconfig *pr return "", fmt.Errorf("failed to parse bootstrapZypperBinContentTemplate template: %v", err) } case providerconfigtypes.OperatingSystemRHEL: + rhelConfig, err = rhel.LoadConfig(pconfig.OperatingSystemSpec) + if err != nil { + return "", fmt.Errorf("failed to parse OperatingSystemSpec: %w", err) + } bsScript, err = template.New("bootstrap-cloud-init").Parse(bootstrapYumBinContentTemplate) if err != nil { return "", fmt.Errorf("failed to parse bootstrapYumBinContentTemplate template: %v", err) @@ -182,12 +189,14 @@ func getOSMBootstrapUserDataForCloudInit(req plugin.UserDataRequest, pconfig *pr plugin.UserDataRequest ProviderSpec *providerconfigtypes.Config BootstrapKubeconfig string + RHELConfig *rhel.Config }{ Script: base64.StdEncoding.EncodeToString(script.Bytes()), Service: base64.StdEncoding.EncodeToString([]byte(bootstrapServiceContentTemplate)), UserDataRequest: req, ProviderSpec: pconfig, BootstrapKubeconfig: base64.StdEncoding.EncodeToString([]byte(bootstrapKfg)), + RHELConfig: rhelConfig, }) if err != nil { return "", fmt.Errorf("failed to execute cloudInitTemplate template: %v", err) @@ -238,7 +247,9 @@ fi {{- if .EnterpriseLinux }} yum install epel-release -y {{- end }} + yum install -y curl jq + curl -s -k -v --header 'Authorization: Bearer {{ .Token }}' {{ .ServerURL }}/api/v1/namespaces/cloud-init-settings/secrets/{{ .SecretName }} | jq '.data["cloud-config"]' -r| base64 -d > /etc/cloud/cloud.cfg.d/{{ .SecretName }}.cfg cloud-init clean cloud-init --file /etc/cloud/cloud.cfg.d/{{ .SecretName }}.cfg init @@ -305,7 +316,7 @@ write_files: encoding: b64 content: | {{ .BootstrapKubeconfig }} -{{- if and (eq .ProviderSpec.CloudProvider "openstack") (eq .ProviderSpec.OperatingSystem "centos") }} +{{- if and (eq .ProviderSpec.CloudProvider "openstack") (or (eq .ProviderSpec.OperatingSystem "centos") (eq .ProviderSpec.OperatingSystem "rhel")) }} {{- /* The normal way of setting it via cloud-init is broken, see */}} {{- /* https://bugs.launchpad.net/cloud-init/+bug/1662542 */}} - path: /etc/hostname @@ -328,6 +339,19 @@ write_files: runcmd: - systemctl restart bootstrap.service - systemctl daemon-reload +{{- if .RHELConfig }} +rh_subscription: +{{- if .RHELConfig.RHELUseSatelliteServer }} + org: "{{.RHELConfig.RHELOrganizationName}}" + activation-key: "{{.RHELConfig.RHELActivationKey}}" + server-hostname: {{ .RHELConfig.RHELSatelliteServer }} + rhsm-baseurl: https://{{ .RHELConfig.RHELSatelliteServer }}/pulp/repos +{{- else }} + username: "{{.RHELConfig.RHELSubscriptionManagerUser}}" + password: "{{.RHELConfig.RHELSubscriptionManagerPassword}}" + auto-attach: {{.RHELConfig.AttachSubscription}} +{{- end }} +{{- end }} ` ignitionBootstrapBinContentTemplate = `#!/bin/bash diff --git a/pkg/userdata/rhel/provider.go b/pkg/userdata/rhel/provider.go index 306f863f1..446cc484f 100644 --- a/pkg/userdata/rhel/provider.go +++ b/pkg/userdata/rhel/provider.go @@ -208,9 +208,6 @@ write_files: {{- /* https://bugs.launchpad.net/cloud-init/+bug/1662542 */}} hostnamectl set-hostname {{ .MachineSpec.Name }} {{ end }} - {{ if eq .CloudProviderName "azure" }} - yum update -y --disablerepo='*' --enablerepo='*microsoft*' - {{ end }} yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-containerd-v1.20-aws.yaml b/pkg/userdata/rhel/testdata/kubelet-containerd-v1.20-aws.yaml index 79685ec63..df69450e4 100644 --- a/pkg/userdata/rhel/testdata/kubelet-containerd-v1.20-aws.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-containerd-v1.20-aws.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.20-aws.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.20-aws.yaml index bf5edafb4..44c883b4f 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.20-aws.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.20-aws.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.21-aws.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.21-aws.yaml index a08bf51df..09d08178e 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.21-aws.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.21-aws.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.22-aws.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.22-aws.yaml index fc62de7de..9f12f58a8 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.22-aws.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.22-aws.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.22-nutanix.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.22-nutanix.yaml index 24e55ecd8..0098fcb9e 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.22-nutanix.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.22-nutanix.yaml @@ -73,7 +73,6 @@ write_files: hostnamectl set-hostname node1 - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.23-aws-external.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.23-aws-external.yaml index 353463c22..7c89316ea 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.23-aws-external.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.23-aws-external.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.23-aws.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.23-aws.yaml index 75e193f4d..86266c97d 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.23-aws.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.23-aws.yaml @@ -68,7 +68,6 @@ write_files: sed -i.orig '/.*swap.*/d' /etc/fstab swapoff -a - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-mirrors.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-mirrors.yaml index f56a3f063..314d8b697 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-mirrors.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-mirrors.yaml @@ -81,7 +81,6 @@ write_files: hostnamectl set-hostname node1 - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-proxy.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-proxy.yaml index 04a47939c..d0988433d 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-proxy.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere-proxy.yaml @@ -81,7 +81,6 @@ write_files: hostnamectl set-hostname node1 - yum install -y \ device-mapper-persistent-data \ lvm2 \ diff --git a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere.yaml b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere.yaml index 173e97e39..916457de9 100644 --- a/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere.yaml +++ b/pkg/userdata/rhel/testdata/kubelet-v1.23-vsphere.yaml @@ -73,7 +73,6 @@ write_files: hostnamectl set-hostname node1 - yum install -y \ device-mapper-persistent-data \ lvm2 \