[ Executor ] exec function - 1
This commit is contained in:
252
agent-go/executor/BaseFunction.go
Normal file
252
agent-go/executor/BaseFunction.go
Normal file
@@ -0,0 +1,252 @@
|
||||
package executor
|
||||
|
||||
import "strings"
|
||||
|
||||
type BaseFunc interface {
|
||||
Exec(baseFuncName string, funcArgs ...string) string
|
||||
}
|
||||
|
||||
type AgentOsOperator struct {
|
||||
InstallCommandPrefix string `json:"install_command_prefix",comment:"apt-get install or yum install"`
|
||||
|
||||
RemoveCommandPrefix string `json:"remove_command_prefix",comment:"apt-get remove or yum remove"`
|
||||
|
||||
CanAccessInternet bool `json:"can_access_internet",comment:"是否可以访问公网"`
|
||||
|
||||
IsOsTypeUbuntu bool `json:"is_os_type_ubuntu",comment:"主机操作系统是否为ubuntu系列"`
|
||||
|
||||
IsAgentInnerWall bool `json:"is_agent_inner_wall", comment:"主机是否身处国内"`
|
||||
}
|
||||
|
||||
// Exec 执行基础功能函数
|
||||
func (op *AgentOsOperator) Exec(baseFuncName string, funcArgs ...string) string {
|
||||
|
||||
var multiLineCommand [][]string
|
||||
|
||||
switch baseFuncName {
|
||||
|
||||
case "shutdownFirewall":
|
||||
multiLineCommand = op.shutdownFirewall()
|
||||
break
|
||||
case "modifyHostname":
|
||||
multiLineCommand = op.modifyHostname(funcArgs)
|
||||
break
|
||||
case "disableSwap":
|
||||
multiLineCommand = op.disableSwap()
|
||||
break
|
||||
case "installDocker":
|
||||
multiLineCommand = op.installDocker(funcArgs)
|
||||
break
|
||||
case "removeDocker":
|
||||
multiLineCommand = op.removeDocker()
|
||||
break
|
||||
case "installDockerCompose":
|
||||
multiLineCommand = op.installDockerCompose()
|
||||
break
|
||||
case "modifyDockerConfig":
|
||||
multiLineCommand = op.modifyDockerConfig()
|
||||
break
|
||||
case "installHelm":
|
||||
multiLineCommand = op.installHelm()
|
||||
break
|
||||
case "installHarbor":
|
||||
multiLineCommand = op.installHarbor(funcArgs)
|
||||
break
|
||||
case "chronyToPublicNTP":
|
||||
multiLineCommand = op.chronyToPublicNTP()
|
||||
break
|
||||
case "chronyToMaster":
|
||||
multiLineCommand = op.chronyToMaster(funcArgs)
|
||||
break
|
||||
case "installZSH":
|
||||
multiLineCommand = op.installZSH()
|
||||
break
|
||||
case "modifySshPort":
|
||||
multiLineCommand = op.modifySshPort(funcArgs)
|
||||
break
|
||||
case "openBBR":
|
||||
multiLineCommand = op.openBBR()
|
||||
break
|
||||
default:
|
||||
multiLineCommand = op.ok(funcArgs)
|
||||
|
||||
}
|
||||
|
||||
// exec the command here
|
||||
result, _ := MultiLineCommandExecutor(multiLineCommand)
|
||||
|
||||
// 归一化处理
|
||||
return strings.Join(result, "")
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) shutdownFirewall() [][]string {
|
||||
|
||||
shutdownFunc := [][]string{
|
||||
{"systemctl", "stop", "firewalld"},
|
||||
{"systemctl", "disable", "firewalld"},
|
||||
}
|
||||
|
||||
if !op.IsOsTypeUbuntu {
|
||||
shutdownFunc = append(shutdownFunc,
|
||||
[]string{
|
||||
"sed",
|
||||
"-i",
|
||||
"s/SELINUX=enforcing/SELINUX=disabled/g",
|
||||
"/etc/selinux/config",
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
return shutdownFunc
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifyHostname(args []string) [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) disableSwap() [][]string {
|
||||
|
||||
disableSwapFunc := [][]string{
|
||||
{
|
||||
"swapoff",
|
||||
"-a",
|
||||
},
|
||||
{
|
||||
"cp",
|
||||
"-f",
|
||||
"/etc/fstab",
|
||||
"/etc/fstab_bak",
|
||||
},
|
||||
{
|
||||
"cat",
|
||||
"/etc/fstab_bak",
|
||||
"|",
|
||||
"grep",
|
||||
"-v",
|
||||
"swap",
|
||||
">",
|
||||
"/etc/fstab",
|
||||
},
|
||||
}
|
||||
|
||||
return disableSwapFunc
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) removeDocker() [][]string {
|
||||
|
||||
removeDockerFunc := [][]string{
|
||||
{
|
||||
op.RemoveCommandPrefix,
|
||||
"docker",
|
||||
"docker-client",
|
||||
"docker-client-latest",
|
||||
"docker-ce-cli",
|
||||
"docker-common",
|
||||
"docker-latest",
|
||||
"docker-latest-logrotate",
|
||||
"docker-logrotate",
|
||||
"docker-selinux",
|
||||
"docker-engine-selinux",
|
||||
"docker-engine",
|
||||
"kubelet",
|
||||
"kubeadm",
|
||||
"kubectl",
|
||||
},
|
||||
}
|
||||
|
||||
return removeDockerFunc
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installDocker(args []string) [][]string {
|
||||
|
||||
// remove docker all staff
|
||||
installDockerFunc := op.removeDocker()
|
||||
|
||||
if op.IsOsTypeUbuntu {
|
||||
installDockerFunc = append(installDockerFunc, [][]string{
|
||||
{
|
||||
op.InstallCommandPrefix,
|
||||
"apt-transport-https ca-certificates curl gnupg-agent software-properties-common",
|
||||
},
|
||||
{
|
||||
"apt-key",
|
||||
"add",
|
||||
"-",
|
||||
"$(curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg)",
|
||||
},
|
||||
}...)
|
||||
} else {
|
||||
installDockerFunc = append(installDockerFunc, [][]string{
|
||||
{
|
||||
op.InstallCommandPrefix,
|
||||
"yum-utils device-mapper-persistent-data lvm2",
|
||||
},
|
||||
{
|
||||
"yum-config-manager",
|
||||
"--add-repo",
|
||||
"https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo",
|
||||
},
|
||||
{
|
||||
"sed ",
|
||||
"-i ",
|
||||
"'s/download.docker.com/mirrors.ustc.edu.cn\\/docker-ce/g' ",
|
||||
"/etc/yum.repos.d/docker-ce.repo",
|
||||
},
|
||||
{},
|
||||
}...)
|
||||
}
|
||||
|
||||
return installDockerFunc
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installDockerCompose() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installHelm() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifyDockerConfig() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installHarbor(args []string) [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) chronyToPublicNTP() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) chronyToMaster(args []string) [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installZSH() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifySshPort(args []string) [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) openBBR() [][]string {
|
||||
|
||||
return [][]string{}
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) ok(args []string) [][]string {
|
||||
return [][]string{
|
||||
{"base function is ok , args are => " + strings.Join(args, " ")},
|
||||
}
|
||||
}
|
||||
21
agent-go/executor/BaseFunction_test.go
Normal file
21
agent-go/executor/BaseFunction_test.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package executor
|
||||
|
||||
import "testing"
|
||||
|
||||
var agentOP = AgentOsOperator{
|
||||
InstallCommandPrefix: "apt-get install",
|
||||
RemoveCommandPrefix: "apt-get remove",
|
||||
CanAccessInternet: true,
|
||||
IsOsTypeUbuntu: true,
|
||||
IsAgentInnerWall: true,
|
||||
}
|
||||
|
||||
func TestBaseFunc(t *testing.T) {
|
||||
|
||||
agentOP.Exec("shutdownFirewall")
|
||||
agentOP.Exec("modifyHostname")
|
||||
agentOP.Exec("disableSwap")
|
||||
agentOP.Exec("installDocker")
|
||||
agentOP.Exec("removeDocker")
|
||||
|
||||
}
|
||||
@@ -1,136 +0,0 @@
|
||||
package function
|
||||
|
||||
import "strings"
|
||||
|
||||
type BaseFunc interface {
|
||||
Exec(baseFuncName string, funcArgs ...string) string
|
||||
}
|
||||
|
||||
type AgentOsOperator struct {
|
||||
execCommandPrefix string `json:"exec_command_prefix",comment:"apt-get or yum or zapper"`
|
||||
|
||||
canAccessInternet bool `json:"can_access_internet",comment:"是否可以访问公网"`
|
||||
}
|
||||
|
||||
// Exec 执行基础功能函数
|
||||
func (op *AgentOsOperator) Exec(baseFuncName string, funcArgs ...string) string {
|
||||
|
||||
result := ""
|
||||
|
||||
switch baseFuncName {
|
||||
|
||||
case "shutdownFirewall":
|
||||
result = op.shutdownFirewall()
|
||||
break
|
||||
case "modifyHostname":
|
||||
result = op.modifyHostname(funcArgs)
|
||||
break
|
||||
case "disableSwap":
|
||||
result = op.disableSwap()
|
||||
break
|
||||
case "installDocker":
|
||||
result = op.installDocker(funcArgs)
|
||||
break
|
||||
case "installDockerCompose":
|
||||
result = op.installDockerCompose()
|
||||
break
|
||||
case "modifyDockerConfig":
|
||||
result = op.modifyDockerConfig()
|
||||
break
|
||||
case "installHelm":
|
||||
result = op.installHelm()
|
||||
break
|
||||
case "installHarbor":
|
||||
result = op.installHarbor(funcArgs)
|
||||
break
|
||||
case "chronyToPublicNTP":
|
||||
result = op.chronyToPublicNTP()
|
||||
break
|
||||
case "chronyToMaster":
|
||||
result = op.chronyToMaster(funcArgs)
|
||||
break
|
||||
case "installZSH":
|
||||
result = op.installZSH()
|
||||
break
|
||||
case "modifySshPort":
|
||||
result = op.modifySshPort(funcArgs)
|
||||
break
|
||||
case "openBBR":
|
||||
result = op.openBBR()
|
||||
break
|
||||
default:
|
||||
result = op.ok(funcArgs)
|
||||
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) shutdownFirewall() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifyHostname(args []string) string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) disableSwap() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installDocker(args []string) string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installDockerCompose() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installHelm() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifyDockerConfig() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installHarbor(args []string) string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) chronyToPublicNTP() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) chronyToMaster(args []string) string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) installZSH() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) modifySshPort(args []string) string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) openBBR() string {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
func (op *AgentOsOperator) ok(args []string) string {
|
||||
return "base function is ok , args are => " + strings.Join(args, " ")
|
||||
}
|
||||
2
agent-go/executor/script/shutdownFirewall.txt
Normal file
2
agent-go/executor/script/shutdownFirewall.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
systemctl stop firewalld
|
||||
systemctl disable firewalld
|
||||
Reference in New Issue
Block a user