Skip to content

Commit fe856b9

Browse files
authored
support centos bootstrapping (kubermatic#1105)
Signed-off-by: Moath Qasim <moad.qassem@gmail.com> Signed-off-by: Moath Qasim <moad.qassem@gmail.com>
1 parent a44de32 commit fe856b9

2 files changed

Lines changed: 35 additions & 6 deletions

File tree

pkg/controller/machine/bootstrap.go

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,29 @@ func getOSMBootstrapUserDataForCloudInit(ctx context.Context, req plugin.UserDat
116116
ServerURL: req.Kubeconfig.Clusters[clusterName].Server,
117117
MachineName: req.MachineSpec.Name,
118118
}
119-
bsScript, err := template.New("bootstrap-cloud-init").Parse(bootstrapBinContentTemplate)
120-
if err != nil {
121-
return "", fmt.Errorf("failed to parse bootstrapBinContentTemplate template: %v", err)
119+
120+
var (
121+
bsScript *template.Template
122+
err error
123+
)
124+
125+
switch pconfig.OperatingSystem {
126+
case providerconfigtypes.OperatingSystemUbuntu:
127+
bsScript, err = template.New("bootstrap-cloud-init").Parse(bootstrapAptBinContentTemplate)
128+
if err != nil {
129+
return "", fmt.Errorf("failed to parse bootstrapAptBinContentTemplate template: %v", err)
130+
}
131+
case providerconfigtypes.OperatingSystemCentOS:
132+
bsScript, err = template.New("bootstrap-cloud-init").Parse(bootstrapYumBinContentTemplate)
133+
if err != nil {
134+
return "", fmt.Errorf("failed to parse bootstrapYumBinContentTemplate template: %v", err)
135+
}
122136
}
137+
123138
script := &bytes.Buffer{}
124139
err = bsScript.Execute(script, data)
125140
if err != nil {
126-
return "", fmt.Errorf("failed to execute bootstrapBinContentTemplate template: %v", err)
141+
return "", fmt.Errorf("failed to execute bootstrap script template: %v", err)
127142
}
128143
bsCloudInit, err := template.New("bootstrap-cloud-init").Parse(cloudInitTemplate)
129144
if err != nil {
@@ -170,7 +185,7 @@ func useIgnition(p *providerconfigtypes.Config) bool {
170185
}
171186

172187
const (
173-
bootstrapBinContentTemplate = `#!/bin/bash
188+
bootstrapAptBinContentTemplate = `#!/bin/bash
174189
set -xeuo pipefail
175190
apt update && apt install -y curl jq
176191
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
@@ -182,6 +197,19 @@ systemctl restart kubelet.service
182197
systemctl restart kubelet-healthcheck.service
183198
`
184199

200+
bootstrapYumBinContentTemplate = `#!/bin/bash
201+
set -xeuo pipefail
202+
yum install epel-release -y
203+
yum install -y curl jq
204+
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
205+
cloud-init clean
206+
cloud-init --file /etc/cloud/cloud.cfg.d/{{ .SecretName }}.cfg init
207+
systemctl daemon-reload
208+
systemctl restart setup.service
209+
systemctl restart kubelet.service
210+
systemctl restart kubelet-healthcheck.service
211+
`
212+
185213
bootstrapServiceContentTemplate = `[Install]
186214
WantedBy=multi-user.target
187215

pkg/controller/machine/machine_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
cloudprovidererrors "github.com/kubermatic/machine-controller/pkg/cloudprovider/errors"
3636
"github.com/kubermatic/machine-controller/pkg/cloudprovider/instance"
3737
cloudprovidertypes "github.com/kubermatic/machine-controller/pkg/cloudprovider/types"
38+
"github.com/kubermatic/machine-controller/pkg/cloudprovider/util"
3839
"github.com/kubermatic/machine-controller/pkg/containerruntime"
3940
kuberneteshelper "github.com/kubermatic/machine-controller/pkg/kubernetes"
4041
"github.com/kubermatic/machine-controller/pkg/node/eviction"
@@ -755,7 +756,7 @@ func (r *Reconciler) ensureInstanceExistsForMachine(
755756

756757
// It is important to check if the secret holding cloud-config exists
757758
if err := r.client.Get(ctx,
758-
types.NamespacedName{Name: cloudConfigSecretName, Namespace: "kube-system"},
759+
types.NamespacedName{Name: cloudConfigSecretName, Namespace: util.CloudInitNamespace},
759760
&corev1.Secret{}); err != nil {
760761
klog.Errorf("Cloud init configurations for machine: %v is not ready yet", machine.Name)
761762
return nil, err

0 commit comments

Comments
 (0)