in projects/aws/bottlerocket-bootstrap/pkg/utils/userdata.go [140:169]
func WriteUserDataFiles(userData *UserData) error {
fmt.Println("Writing userdata write files")
for _, file := range userData.WriteFiles {
if file.Permissions == "" {
file.Permissions = "0640"
}
perm, err := strconv.ParseInt(file.Permissions, 8, 64)
if err != nil {
return errors.Wrap(err, "Error converting string to int for permissions")
}
if err := files.Write(file.Path, []byte(file.Content), fs.FileMode(perm)); err != nil {
return errors.Wrapf(err, "Error writing file: %s", file.Path)
}
// get owner
owners := strings.Split(file.Owner, ":")
owner := owners[0]
userDetails, err := user.Lookup(owner)
if err != nil {
return errors.Wrap(err, "Error getting user/group details ")
}
uid, _ := strconv.Atoi(userDetails.Uid)
gid, _ := strconv.Atoi(userDetails.Gid)
err = syscall.Chown(file.Path, uid, gid)
if err != nil {
return errors.Wrap(err, "Error running chown to set owners/groups")
}
}
return nil
}