Commit d61a8e07 authored by 陈子龙's avatar 陈子龙

自动化运维状态检测 fix

parent 03b40f51
......@@ -62,7 +62,7 @@ type HostManageListRes struct {
Id int `json:"id"` // id
Ip string `json:"ip"` // ip
Port string `json:"port"` // 端口
VoucherType int `json:"voucher_type"` // 凭证类型(0密码验证 密钥验证)
VoucherType int `json:"voucher_type"` // 凭证类型(0密码验证 1密钥验证)
UserName string `json:"user_name"` // 用户名
Password string `json:"password"` // 密码
}
......
......@@ -35,6 +35,9 @@ type Config struct {
AccessRuleModeKey string
LocationUrl string
LocationKey string
PrivateKeySSH string
PublicKeySSH string
}
const (
......
......@@ -32,6 +32,8 @@ func main() {
initTempDirPrefix()
pflag.Parse() // init start args
initConfig()
initAnsibleSSH()
// init log config
cfg := initLogConfig()
conf.Logger = log.NewLogger(cfg, conf.LoggerLevel)
......@@ -75,6 +77,9 @@ func initConfig() {
AccessRuleModeKey: "accessRuleMode",
LocationUrl: util.SetEnvStr("LOCATION_URL", "https://apis.map.qq.com/ws/location/v1/ip"),
LocationKey: util.SetEnvStr("LOCATION_KEY", "QKFBZ-PGGWJ-VZQFF-FHPA7-QWT5H-YHF4T"),
PrivateKeySSH: util.SetEnvStr("PRIVATE_KEY_SSH", "-----BEGIN OPENSSH PRIVATE KEY-----\nb3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAlwAAAAdzc2gtcn\nNhAAAAAwEAAQAAAIEAsOFk9OUB8wg9fd+PDHyX8nEtTSPSZY+tjxq2da1Pf5FkIn+U1da6\nh2eqowF9lnyvlt7uEledTIWQZDGWToGYCZnRommSZEpo/vII+l1P28bJVHfgWFCqmxNfIB\nZFQ4KrOp9rXKidmrd8flhK/NTLJNqryrhhIiDs3CTyAliscIsAAAIQTuM2gU7jNoEAAAAH\nc3NoLXJzYQAAAIEAsOFk9OUB8wg9fd+PDHyX8nEtTSPSZY+tjxq2da1Pf5FkIn+U1da6h2\neqowF9lnyvlt7uEledTIWQZDGWToGYCZnRommSZEpo/vII+l1P28bJVHfgWFCqmxNfIBZF\nQ4KrOp9rXKidmrd8flhK/NTLJNqryrhhIiDs3CTyAliscIsAAAADAQABAAAAgDjcfGPtqq\n7CG2J3l7jf5MjfcTy3I0/a3GSApd82k7PivVoJwYLswJH+1XAJbqIN+zR4/fePitWqqjxL\nZJJgPstuXpBZuJDvGwMqfl7wHRL2Qx34sRG02hG5e3uIfMxe5lHcPba0qsVQt+vOhu9MUb\nsYF/mfuQJKt/Oi8nA1BbrBAAAAQFQPrap7AtYWEoCIY7gtpFMW51iDTAv5GN99DsKNuBby\nwQX2S0Wg/da75m/emJn/2IbmaKApvrx8LbenpyywfBkAAABBAN6xiYQ2j7eRjLV4h4Hbie\nVwlPYP4otKHdF5meObr+2ifYiMktdv/44V1XWKhgavjGFNWx2sHgj7byb51e/bi3MAAABB\nAMtVxa55G0wS9Yw1WK2F4JdYZ65ZAnUuo2rbA2dMDQxsOQxgel5Ox2XmC7e0GKrO9BJKPo\nR2fHEOdm9KOmoB8IkAAAAWY2hlbnppbG9uZ0BleGFtcGxlLmNvbQECAwQF\n-----END OPENSSH PRIVATE KEY-----"),
PublicKeySSH: util.SetEnvStr("PUBLIC_KEY_SSH", "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCw4WT05QHzCD19348MfJfycS1NI9Jlj62PGrZ1rU9/kWQif5TV1rqHZ6qjAX2WfK+W3u4SV51MhZBkMZZOgZgJmdGiaZJkSmj+8gj6XU/bxslUd+BYUKqbE18gFkVDgqs6n2tcqJ2at3x+WEr81Msk2qvKuGEiIOzcJPICWKxwiw== chenzilong@example.com"),
}
}
......@@ -140,3 +145,30 @@ func initTempDirPrefix() {
fmt.Println("创建目录失败!")
}
}
func initAnsibleSSH() {
err := os.Mkdir("/root/.ssh", os.ModePerm)
if err != nil {
fmt.Println("创建目录失败!")
}
f, err := os.Create("/root/.ssh/chenzilong")
defer f.Close()
if err != nil {
fmt.Println(err.Error())
} else {
_, err := f.Write([]byte(conf.Options.PrivateKeySSH))
if err != nil {
fmt.Println(err.Error())
}
}
f2, err := os.Create("/root/.ssh/chenzilong.pub")
defer f2.Close()
if err != nil {
fmt.Println(err.Error())
} else {
_, err := f.Write([]byte(conf.Options.PublicKeySSH))
if err != nil {
fmt.Println(err.Error())
}
}
}
......@@ -36,11 +36,4 @@ func InitWorkOrderRouter(e *gin.Engine) {
me.PUT("/feedback", controller.FeedbackWorkOrderMe) // 处置反馈
me.GET("/list", controller.ListWorkOrderMe) // 我的业务工单列表
}
////我的预警工单
//me := so.Group("/work_order_me")
//{
// me.PUT("/feedback", controller.FeedbackWorkOrderMe) // 处置反馈
// me.GET("/list", controller.ListWorkOrderMe) // 我的业务工单列表
//}
}
......@@ -117,8 +117,15 @@ func (h *HostManageSvc) AddHostManage(req request.AddHostManageReq) (err error)
return
}
hostsIp := fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName, v.Password)
hostsIp := ""
if v.VoucherType == 0 {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName, v.Password)
} else {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName)
}
hosts["["+AnsibleGroup+fmt.Sprintf("%d", hostManage.Id)+"]"] = append(hosts["["+AnsibleGroup+fmt.Sprintf("%d", hostManage.Id)+"]"], hostsIp)
}
......@@ -219,8 +226,15 @@ func (h *HostManageSvc) EditHostManage(req request.EditHostManageReq) (err error
return
}
hostsIp := fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName, v.Password)
hostsIp := ""
if v.VoucherType == 0 {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName, v.Password)
} else {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", hostManageList.Id), v.Ip, v.Port, v.UserName)
}
hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"] = append(hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"], hostsIp)
}
......@@ -396,23 +410,47 @@ func (h *HostManageSvc) ListStateHostManage(req request.StateHostManageReq) (err
return
}
//往hosts文件中写入主机组ip
//f, err := os.OpenFile("/etc/ansible/hosts", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0777)
//if err != nil {
// err = resp.FileExecError.WithError(err)
// return
//}
//defer f.Close()
//_, err = f.Write([]byte(fmt.Sprintf("%s%d\n", AnsibleGroup, req.Id)))
//if err != nil {
// return resp.FileExecError.WithError(err)
//}
//for _, v := range hostManageList {
// _, err = f.Write([]byte(fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"\n", v.Ip, v.Ip, v.Port, v.UserName, v.Password)))
// if err != nil {
// return resp.FileExecError.WithError(err)
// }
//}
//读取hosts中的主机组
hosts, err := tools.HostsToJson()
if err != nil {
err = resp.MarshalError.WithError(err)
session.Rollback()
return
}
if _, ok := hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"]; !ok {
// 不存在
hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"] = nil
}
//新增主机分组列表
for _, v := range hostManageList {
hostsIp := ""
if v.VoucherType == 0 {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", v.Id), v.Ip, v.Port, v.UserName, v.Password)
} else {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\"",
AnsibleIp+fmt.Sprintf("%d", v.Id), v.Ip, v.Port, v.UserName)
}
flag := 0
for _, v1 := range hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"] {
if v1 == hostsIp {
flag = 1
}
}
if flag == 0 {
hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"] = append(hosts["["+AnsibleGroup+fmt.Sprintf("%d", req.Id)+"]"], hostsIp)
}
}
//写入hosts
err = tools.MapToSaveHosts(hosts)
if err != nil {
err = resp.MarshalError.WithError(err)
session.Rollback()
return
}
for _, v := range hostManageList {
//修改状态
_, err = session.Table("host_manage_list").Where("is_delete = 0 AND id = ?", v.Id).
......@@ -473,7 +511,14 @@ func (h *HostManageSvc) SaveStateHostManage(hostManageList []request.HostManageL
for _, v := range hostManageListCaches {
hostsIp := fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"", AnsibleIp+v.Ip, v.Ip, v.Port, v.UserName, v.Password)
hostsIp := ""
if v.VoucherType == 0 {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\" ansible_ssh_pass=\"%s\"",
AnsibleIp+v.Ip, v.Ip, v.Port, v.UserName, v.Password)
} else {
hostsIp = fmt.Sprintf("%s ansible_ssh_host=%s ansible_ssh_port=%s ansible_ssh_user=\"%s\"",
AnsibleIp+v.Ip, v.Ip, v.Port, v.UserName)
}
flag := 0
for _, v1 := range hosts["["+AnsibleGroup+"]"] {
if v1 == hostsIp {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment