Browse Source

Flatcar has read-only /usr

main
Fábio Kaiser Rauber 8 months ago
parent
commit
dfc0af972c
  1. 13
      main.go

13
main.go

@ -14,7 +14,7 @@ import (
"strconv" "strconv"
"strings" "strings"
"unicode" "unicode"
"path/filepath"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
) )
@ -190,6 +190,16 @@ func processUserData(configDriveDir string) error {
//write files //write files
for _, file := range cc.WriteFiles { for _, file := range cc.WriteFiles {
// Replace "/usr/local" with "/opt" in Path, since Flatcar has read-only /usr
file.Path = strings.Replace(file.Path, "/usr/local", "/opt", -1)
// Create directory if it does not exist
dir := filepath.Dir(file.Path)
err := os.MkdirAll(dir, 0755)
if err != nil {
log.Printf("Error creating directory %s: %s", dir, err)
}
perm, err := file.OSPermissions() perm, err := file.OSPermissions()
if err != nil { if err != nil {
log.Printf("Invalid file permissions for %s: %s", file.Path, file.Permissions) log.Printf("Invalid file permissions for %s: %s", file.Path, file.Permissions)
@ -216,6 +226,7 @@ func processUserData(configDriveDir string) error {
// Run commands // Run commands
for _, cmd := range cc.RunCmd { for _, cmd := range cc.RunCmd {
cmdArgs := strings.Fields(cmd) cmdArgs := strings.Fields(cmd)
cmdArgs[0] = strings.Replace(cmdArgs[0], "/usr/local/custom_script", "/opt/custom_script", -1)
output, err := exec.Command(cmdArgs[0], cmdArgs[1:]...).CombinedOutput() output, err := exec.Command(cmdArgs[0], cmdArgs[1:]...).CombinedOutput()
if err != nil { if err != nil {
log.Printf("Error running command '%s': %s\n%s", cmd, err, output) log.Printf("Error running command '%s': %s\n%s", cmd, err, output)

Loading…
Cancel
Save