Skip to content

Commit 7d26f57

Browse files
committed
Render rke2-install without semanage for flatcar
Signed-off-by: Dinar Valeev <[email protected]>
1 parent cc09c2b commit 7d26f57

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

bootstrap/internal/ignition/ignition.go

+15
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package ignition
1818
import (
1919
"errors"
2020
"fmt"
21+
"strings"
2122

2223
bootstrapv1 "github.com/rancher/cluster-api-provider-rke2/bootstrap/api/v1beta1"
2324
"github.com/rancher/cluster-api-provider-rke2/bootstrap/internal/cloudinit"
@@ -102,6 +103,17 @@ func NewJoinControlPlane(input *ControlPlaneInput) ([]byte, error) {
102103
return render(&processedInput.BaseUserData, processedInput.AdditionalIgnition)
103104
}
104105

106+
func removeSemanageCmd(cmds []string) []string {
107+
// this is flatcar drop /opt filesystem from default config
108+
newCmds := []string{}
109+
for _, cmd := range cmds {
110+
if !strings.HasPrefix(cmd, "semanage") {
111+
newCmds = append(newCmds, cmd)
112+
}
113+
}
114+
return newCmds
115+
}
116+
105117
// NewInitControlPlane returns Ignition configuration for bootstrapping new cluster.
106118
func NewInitControlPlane(input *ControlPlaneInput) ([]byte, error) {
107119
processedInput, err := controlPlaneConfigInput(input)
@@ -138,6 +150,9 @@ func render(input *cloudinit.BaseUserData, ignitionConfig *bootstrapv1.Additiona
138150
if ignitionConfig != nil && ignitionConfig.Config != "" {
139151
additionalButaneConfig = ignitionConfig
140152
}
153+
if strings.Contains(ignitionConfig.Config, "variant: flatcar") {
154+
input.DeployRKE2Commands = removeSemanageCmd(input.DeployRKE2Commands)
155+
}
141156

142157
return butane.Render(input, additionalButaneConfig)
143158
}

bootstrap/internal/ignition/ignition_test.go

+48
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ func TestIgnition(t *testing.T) {
3939
RunSpecs(t, "Ignition Suite")
4040
}
4141

42+
var flatcarIgnition = `variant: flatcar`
43+
4244
var additionalIgnition = `variant: fcos
4345
version: 1.4.0
4446
systemd:
@@ -139,6 +141,29 @@ var _ = Describe("NewJoinWorker", func() {
139141
Expect(err).ToNot(HaveOccurred())
140142
Expect(scriptContents).To(ContainSubstring("/opt/rke2-cis-script.sh"))
141143
})
144+
It("should render rke2-install without semanage for flatcar", func() {
145+
input.AdditionalIgnition = &bootstrapv1.AdditionalUserData{
146+
Config: flatcarIgnition,
147+
Strict: true,
148+
}
149+
ignitionJson, err := NewJoinWorker(input)
150+
Expect(err).ToNot(HaveOccurred())
151+
Expect(ignitionJson).ToNot(BeNil())
152+
153+
ign, reports, err := ignition.Parse(ignitionJson)
154+
Expect(err).ToNot(HaveOccurred())
155+
Expect(reports.IsFatal()).To(BeFalse())
156+
157+
scriptContentsEnc := strings.Split(*ign.Storage.Files[3].Contents.Source, ",")[1]
158+
scriptContentsGzip, err := base64.StdEncoding.DecodeString(scriptContentsEnc)
159+
Expect(err).ToNot(HaveOccurred())
160+
reader := bytes.NewReader(scriptContentsGzip)
161+
gzreader, err := gzip.NewReader(reader)
162+
Expect(err).ToNot(HaveOccurred())
163+
scriptContents, err := io.ReadAll(gzreader)
164+
Expect(err).ToNot(HaveOccurred())
165+
Expect(scriptContents).ToNot(ContainSubstring("semanage"))
166+
})
142167

143168
})
144169

@@ -190,6 +215,29 @@ var _ = Describe("NewJoinControlPlane", func() {
190215
Expect(err).To(HaveOccurred())
191216
Expect(ignitionJson).To(BeNil())
192217
})
218+
It("should render rke2-install without semanage for flatcar", func() {
219+
input.AdditionalIgnition = &bootstrapv1.AdditionalUserData{
220+
Config: flatcarIgnition,
221+
Strict: true,
222+
}
223+
ignitionJson, err := NewJoinControlPlane(input)
224+
Expect(err).ToNot(HaveOccurred())
225+
Expect(ignitionJson).ToNot(BeNil())
226+
227+
ign, reports, err := ignition.Parse(ignitionJson)
228+
Expect(err).ToNot(HaveOccurred())
229+
Expect(reports.IsFatal()).To(BeFalse())
230+
231+
scriptContentsEnc := strings.Split(*ign.Storage.Files[3].Contents.Source, ",")[1]
232+
scriptContentsGzip, err := base64.StdEncoding.DecodeString(scriptContentsEnc)
233+
Expect(err).ToNot(HaveOccurred())
234+
reader := bytes.NewReader(scriptContentsGzip)
235+
gzreader, err := gzip.NewReader(reader)
236+
Expect(err).ToNot(HaveOccurred())
237+
scriptContents, err := io.ReadAll(gzreader)
238+
Expect(err).ToNot(HaveOccurred())
239+
Expect(scriptContents).ToNot(ContainSubstring("semanage"))
240+
})
193241
})
194242

195243
var _ = Describe("NewInitControlPlane", func() {

0 commit comments

Comments
 (0)