internal/system/sysctl.go (46 lines of code) (raw):
package system
import (
_ "embed"
"fmt"
"os/exec"
"path"
"github.com/aws/eks-hybrid/internal/api"
"github.com/aws/eks-hybrid/internal/util"
)
const (
sysctlAspectName = "sysctl"
sysctlConfDir = "/etc/sysctl.d"
nodeadmSysctlConfFile = "99-nodeadm.conf"
nodeadmSysctlFilePerm = 0o644
)
var (
//go:embed _assets/99-sysctl.conf
sysctlConfFileData string
nodeadmSysctlConfPath = path.Join(sysctlConfDir, nodeadmSysctlConfFile)
)
type sysctlAspect struct {
nodeConfig *api.NodeConfig
}
var _ SystemAspect = &sysctlAspect{}
func NewSysctlAspect(cfg *api.NodeConfig) SystemAspect {
return &sysctlAspect{nodeConfig: cfg}
}
func (s *sysctlAspect) Name() string {
return sysctlAspectName
}
func (s *sysctlAspect) Setup() error {
if err := writeSysctlConfig(); err != nil {
return err
}
return reloadSysctl()
}
func writeSysctlConfig() error {
return util.WriteFileWithDir(nodeadmSysctlConfPath, []byte(sysctlConfFileData), nodeadmSysctlFilePerm)
}
func reloadSysctl() error {
reloadCmd := exec.Command(sysctlAspectName, "--system")
out, err := reloadCmd.CombinedOutput()
if err != nil {
return fmt.Errorf("running sysctl reload command: %s, error: %v", out, err)
}
return nil
}