From cfd02e5fd01a57c0f7ccc3d0bc24c0197aaffe02 Mon Sep 17 00:00:00 2001 From: QcFe <10742159+QcFe@users.noreply.github.com> Date: Thu, 9 May 2024 16:39:10 +0200 Subject: [PATCH] try fixing nfs mount opts --- operators/pkg/forge/cloudinit.go | 2 +- operators/pkg/forge/cloudinit_test.go | 2 +- operators/pkg/instctrl/cloudinit-startup.sh | 3 +++ operators/pkg/instctrl/cloudinit.go | 10 +++++++++- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 operators/pkg/instctrl/cloudinit-startup.sh diff --git a/operators/pkg/forge/cloudinit.go b/operators/pkg/forge/cloudinit.go index 08d620285..c77605bda 100644 --- a/operators/pkg/forge/cloudinit.go +++ b/operators/pkg/forge/cloudinit.go @@ -73,7 +73,7 @@ func CloudInitUserData(nfsServerName, nfsPath string, publicKeys []string) ([]by fmt.Sprintf("%s:%s", nfsServerName, nfsPath), MyDriveVolumeMountPath, "nfs", - "rw,tcp,hard,intr,rsize=8192,wsize=8192,timeo=14", + "rw,tcp,hard,intr,rsize=8192,wsize=8192,timeo=14,_netdev,user", "0", "0", }} diff --git a/operators/pkg/forge/cloudinit_test.go b/operators/pkg/forge/cloudinit_test.go index dfa03dea4..63f5c876b 100644 --- a/operators/pkg/forge/cloudinit_test.go +++ b/operators/pkg/forge/cloudinit_test.go @@ -48,7 +48,7 @@ mounts: - - rook-ceph-nfs-my-nfs-a.rook-ceph.svc.cluster.local:/path - /media/mydrive - nfs - - rw,tcp,hard,intr,rsize=8192,wsize=8192,timeo=14 + - rw,tcp,hard,intr,rsize=8192,wsize=8192,timeo=14,all_squash,anonuid=1000,anongid=1000 - "0" - "0" ssh_authorized_keys: diff --git a/operators/pkg/instctrl/cloudinit-startup.sh b/operators/pkg/instctrl/cloudinit-startup.sh new file mode 100644 index 000000000..364fbbf04 --- /dev/null +++ b/operators/pkg/instctrl/cloudinit-startup.sh @@ -0,0 +1,3 @@ +#!/bin/bash +mkdir -p $NFSPATH +chown 1000:1000 $NFSPATH diff --git a/operators/pkg/instctrl/cloudinit.go b/operators/pkg/instctrl/cloudinit.go index e5786c231..e07cd1af2 100644 --- a/operators/pkg/instctrl/cloudinit.go +++ b/operators/pkg/instctrl/cloudinit.go @@ -15,7 +15,9 @@ package instctrl import ( + "bytes" "context" + _ "embed" "fmt" corev1 "k8s.io/api/core/v1" @@ -41,6 +43,9 @@ const ( UserDataKey = "userdata" ) +//go:embed cloudinit-startup.sh +var scriptdata []byte + // EnforceCloudInitSecret enforces the creation/update of a secret containing the cloud-init configuration, // based on the information retrieved for the tenant object and its associated WebDav credentials. func (r *InstanceReconciler) EnforceCloudInitSecret(ctx context.Context) error { @@ -71,12 +76,15 @@ func (r *InstanceReconciler) EnforceCloudInitSecret(ctx context.Context) error { log.Error(err, "unable to marshal secret content") return err } + + userScriptData := bytes.ReplaceAll(scriptdata, []byte("$NFSPATH"), []byte(forge.MyDriveVolumeMountPath)) + // Enforce the cloud-init secret presence. instance := clctx.InstanceFrom(ctx) secret := corev1.Secret{ObjectMeta: forge.ObjectMeta(instance)} res, err := ctrl.CreateOrUpdate(ctx, r.Client, &secret, func() error { secret.SetLabels(forge.InstanceObjectLabels(secret.GetLabels(), instance)) - secret.Data = map[string][]byte{UserDataKey: userdata} + secret.Data = map[string][]byte{UserDataKey: userdata, "x-shellscript": userScriptData} secret.Type = corev1.SecretTypeOpaque return ctrl.SetControllerReference(instance, &secret, r.Scheme) })