[ Agent ] [ BASE ] - add default ssh key install
This commit is contained in:
@@ -115,13 +115,28 @@ func (op *AgentOsOperator) deployRke(funcArgs []string) (bool, []string) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return false, resultLog
|
return false, resultLog
|
||||||
}
|
}
|
||||||
ok, resultLog = BasicDownloadFile(op.OssOfflinePrefix+"rke-cluster-template.yaml", "/root/wdd/rke-cluster.yml")
|
ok, resultLog = BasicDownloadFile(op.OssOfflinePrefix+"rke-cluster-template.yaml", "/root/wdd/cluster.yml")
|
||||||
if !ok {
|
if !ok {
|
||||||
return false, resultLog
|
return false, resultLog
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AllCompleteExecutor([][]string{
|
||||||
|
{
|
||||||
|
"chmod",
|
||||||
|
"+x",
|
||||||
|
"/usr/local/bin/rke",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"chmod",
|
||||||
|
"+x",
|
||||||
|
"/usr/local/bin/kubectl",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
// replace ip addr
|
// replace ip addr
|
||||||
parseIP := net.ParseIP(funcArgs[1])
|
parseIP := net.ParseIP(funcArgs[0])
|
||||||
if parseIP == nil {
|
if parseIP == nil {
|
||||||
return false, []string{
|
return false, []string{
|
||||||
"[deployRke] - ip args error !",
|
"[deployRke] - ip args error !",
|
||||||
@@ -159,7 +174,7 @@ func (op *AgentOsOperator) deployK8sDashboard(funcArgs []string) (bool, []string
|
|||||||
// kubectl
|
// kubectl
|
||||||
|
|
||||||
// replace
|
// replace
|
||||||
parseIP := net.ParseIP(funcArgs[1])
|
parseIP := net.ParseIP(funcArgs[0])
|
||||||
if parseIP == nil {
|
if parseIP == nil {
|
||||||
return false, []string{
|
return false, []string{
|
||||||
"[deployK8sDashboard] - ip args error !",
|
"[deployK8sDashboard] - ip args error !",
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ func (op *AgentOsOperator) Exec(baseFuncName string, funcArgs ...string) (bool,
|
|||||||
case "installDockerCompose":
|
case "installDockerCompose":
|
||||||
resultOk, errorLog = op.installDockerComposeExec()
|
resultOk, errorLog = op.installDockerComposeExec()
|
||||||
break
|
break
|
||||||
|
case "installDefaultSSHKey":
|
||||||
|
resultOk, errorLog = op.installDefaultSSHKeyExec(funcArgs)
|
||||||
|
break
|
||||||
case "modifyDockerConfig":
|
case "modifyDockerConfig":
|
||||||
resultOk, errorLog = op.modifyDockerConfigExec(funcArgs)
|
resultOk, errorLog = op.modifyDockerConfigExec(funcArgs)
|
||||||
break
|
break
|
||||||
@@ -316,6 +319,46 @@ func (op *AgentOsOperator) disableSwapExec() (bool, []string) {
|
|||||||
return true, resultLog
|
return true, resultLog
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (op *AgentOsOperator) installDefaultSSHKeyExec(funcArgs []string) (bool, []string) {
|
||||||
|
|
||||||
|
// ssh-keygen -t ed25519 -C "wdd@cmii.com" -N "octopus_standard_phrase"
|
||||||
|
|
||||||
|
// check key exists
|
||||||
|
if BasicFileExistAndNotNull("/root/.ssh/id_ed25519") {
|
||||||
|
if BasicFileExistAndNotNull("/root/.ssh/id_ed25519.pub") {
|
||||||
|
if BasicGrepItemInFile("wdd@cmii.com", "/root/.ssh/authorized_keys") {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// download standard private and public key
|
||||||
|
ok, resultLog := BasicDownloadFile(op.OssOfflinePrefix+"id_ed25519_private_key", "/root/.ssh/id_ed25519")
|
||||||
|
if !ok {
|
||||||
|
return false, resultLog
|
||||||
|
}
|
||||||
|
ok, resultLog = BasicDownloadFile(op.OssOfflinePrefix+"id_ed25519_public_key.pub", "/root/.ssh/id_ed25519.pub")
|
||||||
|
if !ok {
|
||||||
|
return false, resultLog
|
||||||
|
}
|
||||||
|
|
||||||
|
// write into authorized_keys
|
||||||
|
if !BasicAppendSourceToFile("/root/.ssh/id_ed25519.pub", "/root/.ssh/authorized_keys") {
|
||||||
|
return false, []string{
|
||||||
|
"[installDefaultSSHKeyExec] - error appending ssh key to authorized_keys !",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check
|
||||||
|
if BasicGrepItemInFile("wdd@cmii.com", "/root/.ssh/authorized_keys") {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, []string{
|
||||||
|
"[installDefaultSSHKeyExec] - authorized_keys don't contain the ssh-pub key !",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (op *AgentOsOperator) removeDocker() [][]string {
|
func (op *AgentOsOperator) removeDocker() [][]string {
|
||||||
|
|
||||||
removeDockerLine := append(op.RemoveCommandPrefix, []string{
|
removeDockerLine := append(op.RemoveCommandPrefix, []string{
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package executor
|
|||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@@ -87,6 +89,32 @@ func BasicFileExistInFolder(fileName string, folderList ...string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BasicGrepItemInFile(item string, fileName string) bool {
|
||||||
|
|
||||||
|
if !BasicFileExistAndNotNull(fileName) {
|
||||||
|
log.ErrorF("[BasicGrepItemInFile] - fileName [ %s ] not exits !", fileName)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
ok, _ := PipelineCommandExecutor([][]string{
|
||||||
|
{
|
||||||
|
"cat",
|
||||||
|
fileName,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"grep",
|
||||||
|
"-q",
|
||||||
|
item,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// BasicReplace 基础替换命令
|
// BasicReplace 基础替换命令
|
||||||
func BasicReplace(filename string, origin string, replace string) bool {
|
func BasicReplace(filename string, origin string, replace string) bool {
|
||||||
|
|
||||||
@@ -340,3 +368,31 @@ func BasicDownloadFile(downloadUrl, desFile string) (downloadOk bool, resultLog
|
|||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BasicAppendSourceToFile 将源文件的内容添加到目标文件,使用golang标准库完成,跨平台、安全性更强
|
||||||
|
func BasicAppendSourceToFile(sourceFile, targetFile string) bool {
|
||||||
|
// 打开源文件
|
||||||
|
source, err := os.Open(sourceFile)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[BasicAppendSourceToFile] - error open source file => %s", sourceFile)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer source.Close()
|
||||||
|
|
||||||
|
// 打开目标文件,如果不存在则创建,如果存在则在末尾追加
|
||||||
|
target, err := os.OpenFile(targetFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[BasicAppendSourceToFile] - error open target file => %s", sourceFile)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
defer target.Close()
|
||||||
|
|
||||||
|
// 将源文件内容复制到目标文件
|
||||||
|
_, err = io.Copy(target, source)
|
||||||
|
if err != nil {
|
||||||
|
log.ErrorF("[BasicAppendSourceToFile] - Error appending to target file: %s", err.Error())
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public enum BaseFunctionEnum {
|
|||||||
),
|
),
|
||||||
|
|
||||||
INSTALL_DEFAULT_SSH_KEY(
|
INSTALL_DEFAULT_SSH_KEY(
|
||||||
"installDefaultSSHKey ",
|
"installDefaultSSHKey",
|
||||||
"安装默认SSH-Key"
|
"安装默认SSH-Key"
|
||||||
),
|
),
|
||||||
|
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ public class AppFuncScheduler {
|
|||||||
);
|
);
|
||||||
|
|
||||||
List<AppFunctionEnum> appFunctionEnumList = List.of(
|
List<AppFunctionEnum> appFunctionEnumList = List.of(
|
||||||
AppFunctionEnum.DEPLOY_RKE,
|
AppFunctionEnum.DEPLOY_RKE
|
||||||
AppFunctionEnum.DEPLOY_K8S_DASHBOARD
|
// AppFunctionEnum.DEPLOY_K8S_DASHBOARD
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user