From 83b73bf63fa76fd8d65cf1c3923bcf8b16028d4b Mon Sep 17 00:00:00 2001 From: rainzm Date: Wed, 21 Jul 2021 19:45:02 +0800 Subject: [PATCH] feat: support install monitor agent in baremetal --- build/docker/Dockerfile.ansibleserver | 4 ++-- pkg/devtool/tasks/apply_script_task.go | 17 +++++------------ pkg/devtool/utils/influxdb_url.go | 5 ++++- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/build/docker/Dockerfile.ansibleserver b/build/docker/Dockerfile.ansibleserver index 710cb58990..bfbec0f43f 100644 --- a/build/docker/Dockerfile.ansibleserver +++ b/build/docker/Dockerfile.ansibleserver @@ -1,7 +1,7 @@ FROM registry.cn-beijing.aliyuncs.com/yunionio/ansibleserver-base:v1.0.3 # install playbook and telegraf install pkg -COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.0 /opt/yunion/playbook /opt/yunion/playbook -COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.0 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg +COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.1 /opt/yunion/playbook /opt/yunion/playbook +COPY --from=registry.cn-beijing.aliyuncs.com/yunionio/file-repo:v0.2.1 /opt/yunion/ansible-install-pkg /opt/yunion/ansible-install-pkg ADD ./_output/alpine-build/bin/ansibleserver /opt/yunion/bin/ansibleserver diff --git a/pkg/devtool/tasks/apply_script_task.go b/pkg/devtool/tasks/apply_script_task.go index e91b42be6e..682214df4a 100644 --- a/pkg/devtool/tasks/apply_script_task.go +++ b/pkg/devtool/tasks/apply_script_task.go @@ -251,14 +251,13 @@ type sSSHable struct { port int } -// func (self *ApplyScriptTask) ansibleHost(session modules.SS) func (self *ApplyScriptTask) checkSshableForYunionCloud(session *mcclient.ClientSession, serverDetail *comapi.ServerDetails) (sSSHable, error) { if serverDetail.IPs == "" { return sSSHable{}, fmt.Errorf("empty ips for server %s", serverDetail.Id) } ips := strings.Split(serverDetail.IPs, ",") ip := strings.TrimSpace(ips[0]) - if serverDetail.VpcId == "" || serverDetail.VpcId == comapi.DEFAULT_VPC_ID { + if serverDetail.Hypervisor == comapi.HYPERVISOR_BAREMETAL || serverDetail.VpcId == "" || serverDetail.VpcId == comapi.DEFAULT_VPC_ID { return sSSHable{ ok: true, user: "cloudroot", @@ -319,7 +318,7 @@ func (self *ApplyScriptTask) checkSshableForYunionCloud(session *mcclient.Client } func (self *ApplyScriptTask) checkSshable(session *mcclient.ClientSession, serverDetail *comapi.ServerDetails) (sSSHable, error) { - if serverDetail.Hypervisor == comapi.HYPERVISOR_KVM { + if serverDetail.Hypervisor == comapi.HYPERVISOR_KVM || serverDetail.Hypervisor == comapi.HYPERVISOR_BAREMETAL { return self.checkSshableForYunionCloud(session, serverDetail) } return self.checkSshableForOtherCloud(session, serverDetail.Id) @@ -422,19 +421,13 @@ func (self *ApplyScriptTask) OnAnsiblePlaybookComplete(ctx context.Context, obj } func (self *ApplyScriptTask) OnAnsiblePlaybookCompleteFailed(ctx context.Context, obj db.IStandaloneModel, body jsonutils.JSONObject) { - // try to delete local forward - session := auth.GetAdminSession(ctx, "", "") - forwardId, _ := self.Params.GetString("proxy_forward_id") - _, err := cloudproxy.Forwards.Delete(session, forwardId, nil) - if err != nil { - log.Errorf("unable to delete proxy forward %s: %v", forwardId, err) - } sa := obj.(*models.SScriptApply) sarId, _ := self.Params.GetString("script_apply_record_id") osar, err := models.ScriptApplyRecordManager.FetchById(sarId) if err != nil { log.Errorf("unable to fetch script apply record %s: %v", sarId, err) - self.taskSuccess(ctx, sa, nil) + self.taskFailed(ctx, sa, nil, errors.Error(body.String())) + } else { + self.taskFailed(ctx, sa, osar.(*models.SScriptApplyRecord), errors.Error(body.String())) } - self.taskFailed(ctx, sa, osar.(*models.SScriptApplyRecord), errors.Error(body.String())) } diff --git a/pkg/devtool/utils/influxdb_url.go b/pkg/devtool/utils/influxdb_url.go index c97bf0a3b8..b25d6bfd12 100644 --- a/pkg/devtool/utils/influxdb_url.go +++ b/pkg/devtool/utils/influxdb_url.go @@ -262,7 +262,7 @@ func influxdbUrlDirect(ctx context.Context, influxdbUrl, proxyEndpointId string, func findValidInfluxdbUrl(ctx context.Context, influxdbUrl, proxyEndpointId string, info sServerInfo, host *ansible_api.AnsibleHost) (string, error) { findFuncs := []func(ctx context.Context, influxdbUrl, proxyEndpointId string, info sServerInfo, host *ansible_api.AnsibleHost) (string, error){} - if info.serverDetails.Hypervisor == comapi.HYPERVISOR_KVM { + if info.serverDetails.Hypervisor == comapi.HYPERVISOR_KVM || info.serverDetails.Hypervisor == comapi.HYPERVISOR_BAREMETAL { findFuncs = append(findFuncs, influxdbUrlDirect, influxdbUrlViaProxyEndpoint) } else { findFuncs = append(findFuncs, influxdbUrlViaProxyEndpoint, influxdbUrlDirect) @@ -420,5 +420,8 @@ func GetArgs(ctx context.Context, serverId, proxyEndpointId string, others inter "influxdb_name": "telegraf", "telegraf_global_tags": telegrafTags, } + if info.serverDetails.Hypervisor == comapi.HYPERVISOR_BAREMETAL { + ret["server_type"] = "baremetal" + } return ret, nil }