diff --git a/agent-go/executor/BaseFunction.go b/agent-go/executor/BaseFunction.go index 782bfb1..903ac0b 100644 --- a/agent-go/executor/BaseFunction.go +++ b/agent-go/executor/BaseFunction.go @@ -27,6 +27,8 @@ type AgentOsOperator struct { IsOsTypeCentOS bool `json:"is_os_type_centos",comment:"主机操作系统是否为centos系列"` + IsOsTypeEuler bool `json:"is_os_type_euler",comment:"主机操作系统是否为国产欧拉系列"` + IsAgentInnerWall bool `json:"is_agent_inner_wall",comment:"主机是否身处国内"` AgentArch string `json:"agent_arch",comment:"主机的CPU架构,可选为amd64 arm64"` @@ -353,6 +355,7 @@ func (op *AgentOsOperator) installDefaultSSHKeyExec(funcArgs []string) (bool, [] // ssh-keygen -t ed25519 -C "wdd@cmii.com" // ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa -b 4096 + BasicCreateFolder("/root/.ssh/") // check key exists if BasicFileExistAndNotNull("/root/.ssh/id_ed25519") { @@ -598,6 +601,8 @@ func (op *AgentOsOperator) installDockerExec(args []string) (bool, []string) { BasicCreateFolder("/root/wdd/") + op.removeDockerExec() + if op.IsOsTypeUbuntu { if !op.CanAccessInternet { @@ -777,11 +782,44 @@ func (op *AgentOsOperator) installDockerExec(args []string) (bool, []string) { return false, append(log5, "启动docker.service失败,请查明原因!", "journalctl -u docker -n 100 -f") } } else if op.IsOsTypeCentOS { - if !op.CanAccessInternet { + if !op.CanAccessInternet || op.IsOsTypeEuler { // offline version log.InfoF("[installDockerExec] - centos can not access to internet, installing by offline !") return op.installDockerOfflineExec(args) } + + // download + var dockerRepo string + if op.IsAgentInnerWall { + dockerRepo = "https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo" + } else { + dockerRepo = "https://download.docker.com/linux/centos/docker-ce.repo" + } + + AllCommandExecutor(append(op.InstallCommandPrefix, "yum-utils")) + + ok, resultLog := AllCommandExecutor( + []string{ + "yum-config-manager", + "--add-repo", + dockerRepo, + }, + ) + if !ok { + return false, resultLog + } + + // todo 20 version + resultOk, l := AllCommandExecutor(append(op.InstallCommandPrefix, "docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin")) + + if !resultOk { + return false, l + } + + systemdUp, log2 := BasicSystemdUp("docker") + if !systemdUp { + return false, log2 + } } return true, []string{ @@ -1995,7 +2033,7 @@ func (op *AgentOsOperator) chronyToMasterExec(args []string) (bool, []string) { if op.IsOsTypeCentOS { if !op.CanAccessInternet { - return op.chronyToMasterCentOsOfflineExec(args) + return op.chronyToMasterByDocker(args) } // install ntp @@ -2074,9 +2112,7 @@ func (op *AgentOsOperator) chronyToMasterExec(args []string) (bool, []string) { } } -func (op *AgentOsOperator) chronyToMasterCentOsOfflineExec(args []string) (bool, []string) { - - // todo +func (op *AgentOsOperator) chronyToMasterByDocker(args []string) (bool, []string) { return true, nil } diff --git a/agent-go/executor/BaseFunction_test.go b/agent-go/executor/BaseFunction_test.go index f412891..b97761c 100644 --- a/agent-go/executor/BaseFunction_test.go +++ b/agent-go/executor/BaseFunction_test.go @@ -2,23 +2,26 @@ package executor import ( "testing" + "wdd.io/agent-go/assert" "wdd.io/agent-go/register" ) var agentOP = &AgentOsOperator{ InstallCommandPrefix: []string{ - "apt-get", "install", "-y", + "yum", "install", "-y", }, - RemoveCommandPrefix: []string{"apt", "remove", "-y"}, + RemoveCommandPrefix: []string{"yum", "remove", "-y"}, CanAccessInternet: true, - IsOsTypeUbuntu: true, + IsOsTypeUbuntu: false, + IsOsTypeCentOS: true, + IsOsTypeEuler: true, IsAgentInnerWall: true, AgentArch: "amd64", AgentOSReleaseCode: "focal", AgentServerInfo: ®ister.AgentServerInfo{ ServerName: "", ServerIPPbV4: "", - ServerIPInV4: "192.168.0.8", + ServerIPInV4: "10.250.0.147", ServerIPPbV6: "", ServerIPInV6: "", Location: "", @@ -39,23 +42,39 @@ var agentOP = &AgentOsOperator{ AgentVersion: "", TopicName: "", }, + OssOfflinePrefix: "http://10.250.0.100:9000/octopus/", } func TestBaseFunc(t *testing.T) { - //agentOP.Command("shutdownFirewall") - //agentOP.Command("modifyHostname") - //agentOP.Command("disableSwap") - //agentOP.Command("enableSwap") - //agentOP.Command("removeDocker") - //agentOP.Command("installDocker", "20") - //agentOP.Command("removeDockerCompose") - //agentOP.Command("installDockerCompose") - //agentOP.Command("installHelm") - //agentOP.Command("installHarbor") - //agentOP.Command("chronyToPublicNTP") - //agentOP.Command("chronyToMaster", "192.168.0.8") - //agentOP.Command("installZSH") - agentOP.Command("ok") + //command := "DISABLE_SELINUX" + //command := "installDocker" + //command := "installDockerCompose" + command := "installHarbor" + + funcArgs := []string{ + "10.250.0.147", + "", + "", + "", + } + + //agentOP.Exec("shutdownFirewall") + //agentOP.Exec("modifyHostname") + //agentOP.Exec("disableSwap") + //agentOP.Exec("enableSwap") + //agentOP.Exec("removeDocker") + //agentOP.Exec("installDocker", "20") + //agentOP.Exec("removeDockerCompose") + //agentOP.Exec("installDockerCompose") + //agentOP.Exec("installHelm") + //agentOP.Exec("installHarbor") + //agentOP.Exec("chronyToMaster", "192.168.0.8") + //agentOP.Exec("installZSH") + //agentOP.Exec("ok") + + exec, strings := agentOP.Exec(command, funcArgs...) + assert.Equal(t, exec, true, "exec should be true!") + t.Logf("[%s] exec result are %s", command, strings) } diff --git a/agent-go/executor/InitFunction.go b/agent-go/executor/InitFunction.go index 6fbad86..21da7e4 100644 --- a/agent-go/executor/InitFunction.go +++ b/agent-go/executor/InitFunction.go @@ -17,6 +17,7 @@ func BuildAgentOsOperator(agentInfo *status.AgentInfo, ossOfflinePrefix string) CanAccessInternet: true, IsOsTypeUbuntu: true, IsOsTypeCentOS: false, + IsOsTypeEuler: false, IsAgentInnerWall: false, AgentArch: "amd64", AgentOSReleaseCode: "focal", @@ -42,21 +43,25 @@ func detectByAgentStatusInfo(agentInfo *status.AgentInfo, os *AgentOsOperator) { bytes, _ := json.Marshal(agentInfo) log.DebugF("[detectByAgentStatusInfo] - agent info is => %s", string(bytes)) - if strings.Contains(agentInfo.HostInfo.Platform, "openeuler") || strings.Contains(agentInfo.HostInfo.PlatformFamily, "platformFamily") { + if strings.Contains(agentInfo.HostInfo.Platform, "openeuler") || strings.Contains(agentInfo.HostInfo.PlatformFamily, "rehl") { // centos os.IsOsTypeUbuntu = false os.IsOsTypeCentOS = true + if strings.Contains(agentInfo.HostInfo.Platform, "openeuler") { + os.IsOsTypeEuler = true + } os.InstallCommandPrefix = []string{ "yum", "install", "-y", } os.RemoveCommandPrefix = []string{ - "yum", "remove", + "yum", "remove", "-y", } } else if strings.Contains(agentInfo.HostInfo.PlatformFamily, "debian") { // ubuntu os.IsOsTypeUbuntu = true os.IsOsTypeCentOS = false + os.IsOsTypeEuler = false os.RemoveCommandPrefix = []string{"apt", "remove", "-y"} os.InstallCommandPrefix = []string{ "apt-get", "install", "--allow-downgrades", "-y", diff --git a/agent-go/executor/script/install_golang_on_host.sh b/agent-go/executor/script/install_golang_on_host.sh new file mode 100644 index 0000000..1755d30 --- /dev/null +++ b/agent-go/executor/script/install_golang_on_host.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +rm -rf go1.21.6.linux-amd64.tar.gz +wget http://10.250.0.100:9000/octopus/go1.21.6.linux-amd64.tar.gz -O go1.21.6.linux-amd64.tar.gz + +rm -rf /usr/local/go && tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz +sed -i "$ a export PATH=\$PATH:/usr/local/go/bin" /root/.bashrc +source /root/.bashrc + +go version +go env -w GO111MODULE=on +go env -w GOPROXY=https://goproxy.cn,direct diff --git a/cmii_operator/cqga-backend-app.json b/cmii_operator/cqga-backend-app.json deleted file mode 100644 index f540818..0000000 --- a/cmii_operator/cqga-backend-app.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "cmii-admin-data": "5.2.0", - "cmii-admin-gateway": "5.2.0", - "cmii-admin-user": "5.2.0", - "cmii-app-release": "4.2.0-validation", - "cmii-open-gateway": "5.2.0", - "cmii-suav-supervision": "5.2.0", - "cmii-uav-airspace": "5.2.0", - "cmii-uav-alarm": "5.2.0", - "cmii-uav-autowaypoint": "4.1.6-cm-0828", - "cmii-uav-brain": "5.2.0", - "cmii-uav-cloud-live": "5.2.0", - "cmii-uav-clusters": "5.2.0", - "cmii-uav-cms": "5.2.0", - "cmii-uav-data-post-process": "5.2.0", - "cmii-uav-depotautoreturn": "4.2.0", - "cmii-uav-developer": "5.2.0-25858", - "cmii-uav-device": "5.2.0", - "cmii-uav-emergency": "5.2.0", - "cmii-uav-gateway": "5.2.0", - "cmii-uav-gis-server": "5.2.0", - "cmii-uav-grid-datasource": "5.2.0-24810", - "cmii-uav-grid-engine": "5.1.0", - "cmii-uav-grid-manage": "5.1.0", - "cmii-uav-industrial-portfolio": "5.2.0-25268-12", - "cmii-uav-integration": "5.2.0-25447", - "cmii-uav-kpi-monitor": "5.2.0", - "cmii-uav-logger": "5.2.0", - "cmii-uav-material-warehouse": "5.2.0", - "cmii-uav-mission": "5.2.0-25840", - "cmii-uav-mqtthandler": "5.2.0-25340-1", - "cmii-uav-notice": "5.2.0", - "cmii-uav-oauth": "5.2.0", - "cmii-uav-process": "5.2.0", - "cmii-uav-surveillance": "5.2.0-21794", - "cmii-uav-threedsimulation": "5.2.0", - "cmii-uav-tower": "5.2.0", - "cmii-uav-user": "5.2.0", - "cmii-uav-waypoint": "5.2.0-011102" -} \ No newline at end of file diff --git a/cmii_operator/cqga-frontend-app.json b/cmii_operator/cqga-frontend-app.json deleted file mode 100644 index 803103a..0000000 --- a/cmii_operator/cqga-frontend-app.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "cmii-suav-platform-supervision": "5.2.0", - "cmii-suav-platform-supervisionh5": "5.2.0", - "cmii-uav-platform": "5.2.0", - "cmii-uav-platform-ai-brain": "5.2.0", - "cmii-uav-platform-armypeople": "5.2.0-24538", - "cmii-uav-platform-base": "5.2.0", - "cmii-uav-platform-cms-portal": "5.2.0", - "cmii-uav-platform-detection": "5.2.0", - "cmii-uav-platform-emergency-rescue": "5.2.0", - "cmii-uav-platform-hljtt": "5.2.0", - "cmii-uav-platform-jiangsuwenlv": "4.1.3-jiangsu-0427", - "cmii-uav-platform-logistics": "5.2.0", - "cmii-uav-platform-media": "5.2.0", - "cmii-uav-platform-multiterminal": "5.2.0", - "cmii-uav-platform-mws": "5.2.0", - "cmii-uav-platform-oms": "5.2.0", - "cmii-uav-platform-open": "5.2.0", - "cmii-uav-platform-qingdao": "4.1.6-24238-qingdao", - "cmii-uav-platform-qinghaitourism": "4.1.0-21377-0508", - "cmii-uav-platform-security": "4.1.6", - "cmii-uav-platform-securityh5": "5.2.0", - "cmii-uav-platform-seniclive": "5.2.0", - "cmii-uav-platform-share": "5.2.0", - "cmii-uav-platform-splice": "5.2.0", - "cmii-uav-platform-threedsimulation": "5.2.0-21392", - "cmii-uav-platform-visualization": "5.2.0" -} \ No newline at end of file diff --git a/server/src/main/java/io/wdd/ServerApplication.java b/server/src/main/java/io/wdd/ServerApplication.java index 60a7d5d..74d9edc 100644 --- a/server/src/main/java/io/wdd/ServerApplication.java +++ b/server/src/main/java/io/wdd/ServerApplication.java @@ -8,7 +8,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; @MapperScan("io.wdd.server.mapper") public class ServerApplication { - public static void main(String[] args) { SpringApplication.run( ServerApplication.class, diff --git a/server/src/main/java/io/wdd/func/auto/beans/BaseFunctionEnum.java b/server/src/main/java/io/wdd/func/auto/beans/BaseFunctionEnum.java index 67b96fa..174bbf5 100644 --- a/server/src/main/java/io/wdd/func/auto/beans/BaseFunctionEnum.java +++ b/server/src/main/java/io/wdd/func/auto/beans/BaseFunctionEnum.java @@ -49,7 +49,6 @@ public enum BaseFunctionEnum { ), - INSTALL_NFS_ONLINE( "installNfsOnline", "安装nfs-client online" @@ -65,6 +64,11 @@ public enum BaseFunctionEnum { "安装Chrony服务器, 废弃" ), + INSTALL_CHRONY_DOCKER( + "INSTALL_CHRONY_DOCKER", + "安装Chrony服务器, DOCKER版本" + ), + CHRONY_TO_PUBLIC_NTP_DISCARD( "chronyToPublicNTP", "时间同步至公网NTP服务器" diff --git a/server/src/main/java/io/wdd/func/auto/service/BaseFuncScheduler.java b/server/src/main/java/io/wdd/func/auto/service/BaseFuncScheduler.java index 8130033..fc36cc5 100644 --- a/server/src/main/java/io/wdd/func/auto/service/BaseFuncScheduler.java +++ b/server/src/main/java/io/wdd/func/auto/service/BaseFuncScheduler.java @@ -96,8 +96,8 @@ public class BaseFuncScheduler { List masterNodeProcedureList = List.of( BaseFunctionEnum.DISABLE_SWAP, + BaseFunctionEnum.DISABLE_SELINUX, BaseFunctionEnum.SHUTDOWN_FIREWALL, - BaseFunctionEnum.CHRONY_TO_MASTER, BaseFunctionEnum.INSTALL_DEFAULT_SSH_KEY ); @@ -132,11 +132,11 @@ public class BaseFuncScheduler { } List masterNodeDurationTaskList = List.of( - BaseFunctionEnum.INSTALL_NFS_SERVER_ONLINE, - BaseFunctionEnum.INSTALL_DOCKER, - BaseFunctionEnum.INSTALL_DOCKER_COMPOSE, - BaseFunctionEnum.MODIFY_DOCKER_CONFIG, - BaseFunctionEnum.INSTALL_HARBOR +// BaseFunctionEnum.INSTALL_NFS_SERVER_ONLINE, +// BaseFunctionEnum.INSTALL_DOCKER, +// BaseFunctionEnum.INSTALL_DOCKER_COMPOSE, +// BaseFunctionEnum.MODIFY_DOCKER_CONFIG, +// BaseFunctionEnum.INSTALL_HARBOR ); for (BaseFunctionEnum durationBaseFunc : masterNodeDurationTaskList) { diff --git a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java index 1326cd3..22c092c 100644 --- a/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java +++ b/server/src/test/java/io/wdd/server/func/TestBaseFuncScheduler.java @@ -53,11 +53,11 @@ public class TestBaseFuncScheduler { projectDeployContext.setMasterNode(serverInfoPO); -// baseFuncScheduler.runProcedure(projectDeployContext); + baseFuncScheduler.runProcedure(projectDeployContext); - harborFuncScheduler.runProcedure(projectDeployContext); +// harborFuncScheduler.runProcedure(projectDeployContext); - appFuncScheduler.runProcedure(projectDeployContext); +// appFuncScheduler.runProcedure(projectDeployContext); } }