[ 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