diff --git a/pkg/apis/eksctl.io/v1alpha4/types.go b/pkg/apis/eksctl.io/v1alpha4/types.go index 52a20ce1fd7..ccfb59b3e62 100644 --- a/pkg/apis/eksctl.io/v1alpha4/types.go +++ b/pkg/apis/eksctl.io/v1alpha4/types.go @@ -355,6 +355,8 @@ type NodeGroup struct { // +optional IAM *NodeGroupIAM `json:"iam"` + + OverrideBootstrapCommand *string `json:"overrideBootstrapCommand,omitempty"` } // ListOptions returns metav1.ListOptions with label selector for the nodegroup diff --git a/pkg/nodebootstrap/userdata_al2.go b/pkg/nodebootstrap/userdata_al2.go index c8f61f1cbb7..d3cbe485ec2 100644 --- a/pkg/nodebootstrap/userdata_al2.go +++ b/pkg/nodebootstrap/userdata_al2.go @@ -40,15 +40,19 @@ func makeAmazonLinux2Config(spec *api.ClusterConfig, ng *api.NodeGroup) (configF func NewUserDataForAmazonLinux2(spec *api.ClusterConfig, ng *api.NodeGroup) (string, error) { config := cloudconfig.New() - scripts := []string{ - "bootstrap.al2.sh", - } - files, err := makeAmazonLinux2Config(spec, ng) if err != nil { return "", err } + scripts := []string{} + + if ng.OverrideBootstrapCommand != nil { + config.AddShellCommand(*ng.OverrideBootstrapCommand) + } else { + scripts = append(scripts, "bootstrap.al2.sh") + } + if err = addFilesAndScripts(config, files, scripts); err != nil { return "", err } diff --git a/pkg/nodebootstrap/userdata_ubuntu.go b/pkg/nodebootstrap/userdata_ubuntu.go index 8c41433a143..5e241cd8211 100644 --- a/pkg/nodebootstrap/userdata_ubuntu.go +++ b/pkg/nodebootstrap/userdata_ubuntu.go @@ -36,15 +36,19 @@ func makeUbuntu1804Config(spec *api.ClusterConfig, ng *api.NodeGroup) (configFil func NewUserDataForUbuntu1804(spec *api.ClusterConfig, ng *api.NodeGroup) (string, error) { config := cloudconfig.New() - scripts := []string{ - "bootstrap.ubuntu.sh", - } - files, err := makeUbuntu1804Config(spec, ng) if err != nil { return "", err } + scripts := []string{} + + if ng.OverrideBootstrapCommand != nil { + config.AddShellCommand(*ng.OverrideBootstrapCommand) + } else { + scripts = append(scripts, "bootstrap.ubuntu.sh") + } + if err = addFilesAndScripts(config, files, scripts); err != nil { return "", err }