package cmds import ( "os" "path/filepath" "github.com/urfave/cli" ) type Agent struct { Token string ServerURL string DataDir string NodeIP string NodeName string ClusterSecret string Docker bool NoFlannel bool Debug bool AgentShared } type AgentShared struct { NodeIP string } var ( appName = filepath.Base(os.Args[0]) AgentConfig Agent NodeIPFlag = cli.StringFlag{ Name: "node-ip,i", Usage: "IP address to advertise for node", Destination: &AgentConfig.NodeIP, } NodeNameFlag = cli.StringFlag{ Name: "node-name", Usage: "Node name", EnvVar: "K3S_NODE_NAME", Destination: &AgentConfig.NodeName, } ) func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command { return cli.Command{ Name: "agent", Usage: "Run node agent", UsageText: appName + " agent [OPTIONS]", Action: action, Flags: []cli.Flag{ cli.StringFlag{ Name: "token,t", Usage: "Token to use for authentication", EnvVar: "K3S_TOKEN", Destination: &AgentConfig.Token, }, cli.StringFlag{ Name: "server,s", Usage: "Server to connect to", EnvVar: "K3S_URL", Destination: &AgentConfig.ServerURL, }, cli.StringFlag{ Name: "data-dir,d", Usage: "Folder to hold state", Destination: &AgentConfig.DataDir, Value: "/var/lib/rancher/k3s", }, cli.BoolFlag{ Name: "docker", Usage: "Use docker instead of containerd", Destination: &AgentConfig.Docker, }, cli.BoolFlag{ Name: "no-flannel", Usage: "Disable embedded flannel", Destination: &AgentConfig.NoFlannel, }, cli.StringFlag{ Name: "cluster-secret", Usage: "Shared secret used to bootstrap a cluster", Destination: &AgentConfig.ClusterSecret, EnvVar: "K3S_CLUSTER_SECRET", }, NodeNameFlag, NodeIPFlag, }, } }