Skip to content

User-data script has erroneous newline breaking shebang, incompatible with Cloud-init versions on AL2023  #1167

@AdamMcAdamson

Description

@AdamMcAdamson

Summary

The resulting user-data script from cluster up has an erroneous newline which results in an invalid user-data script being sent to the EC2 instance. Older versions of Cloud-init ignored the issue (19-?, seen in AL2), but newer versions (22.2.2, seen in AL2023) correctly parse shell-scripts, causing the provided script to fail.

Description

Bug is here:

joinClusterUserData := `
#!/bin/bash
echo ECS_CLUSTER=%s >> /etc/ecs/ecs.config
`

Golang's MIME multipart writer already inserts a newline, leaving the resulting script with an erroneous newline at the start of the file:
https://github.com/golang/go/blob/master/src/mime/multipart/writer.go#L120

Expected Behavior

/var/lib/cloud/instance/scripts/part-001:

#!/bin/bash
echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config
...

Observed Behavior

/var/lib/cloud/instance/scripts/part-001:


#!/bin/bash
echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions