向主机集群添加目标主机
为了更好地满足实际业务需求、保障系统稳定运行并提升整体部署效率,需向主机集群中添加单个或多个目标主机实现部署任务。
本章节将介绍向CodeArts Deploy主机集群添加目标主机的相关操作。
前提条件
- 已有主机集群,并在集群中拥有添加主机的权限。
- 已拥有满足以下条件的主机(如果没有,请参考购买弹性云服务器完成购买)。
- 已绑定公网IP。
- 已完成系统主机配置,参见Linux系统主机配置或Windows系统主机配置。
(华为云ECS(Linux系统)默认已完成该配置,无需再次配置,但Windows系统主机需要进行配置。)
- 如果需要对主机做监控,那么需要对主机做委托。操作步骤参考创建主机委托。
添加目标主机
- 进入软件开发生产线首页,单击目标项目名称,进入项目。
- 单击菜单“持续交付 > 部署”,进入项目下部署服务界面。
- 在“基础资源管理”界面,单击已创建的集群名称,进入该集群页面的“目标主机”页签。
- 单击“添加或导入主机”,添加方式选择“通过IP手动添加”。
- 当主机集群的主机连通方式为“直连模式”时,只需新增目标主机即可。填写以下信息后,单击“确定”,完成目标主机的创建。
表1 Linux系统目标主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的目标主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
IP
是
请输入目标主机所绑定的公网IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
请参见Linux系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
请根据实际情况选择密码或密钥进行认证。
- 密码:页面显示“用户名”与“密码”。以ECS为例,输入的是ECS的用户名及密码。
- 密钥:页面显示“用户名”与“密钥”。密钥的生成与获取方式请参考获取Linux密钥。
SSH端口
是
推荐使用22端口,支持自定义端口。
安装AOM-ICAgent复选框
否
若勾选该选项,可免费在主机上安装并使用AOM-ICAgent,实现指标监控、日志查询、告警功能。其中,ICAgent仅限华为云Linux主机,安装前请参照创建/使用委托配置委托。
表2 Windows系统目标主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的目标主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
IP
是
请输入目标主机所绑定的公网IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
请参见Windows系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
Windows系统代理机仅支持密码认证。以ECS为例,输入的是ECS的用户名及密码。
winrm端口
是
推荐使用5986端口,支持自定义端口。
- 当主机集群的主机连通方式为“代理模式”时,需要先新增代理主机再增加目标主机。填写以下信息后,单击“确定”,完成代理主机和目标主机的创建。
- 新增代理主机。
表3 Linux系统代理主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的代理主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
IP
是
请输入代理主机所绑定的公网IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
请参见Linux系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
请根据实际情况选择密码或密钥进行认证。
- 密码:页面显示“用户名”与“密码”。以ECS为例,输入的是ECS的用户名及密码。
- 密钥:页面显示“用户名”与“密钥”。密钥的生成与获取方式请参考获取Linux密钥。
SSH端口
是
推荐使用22端口,支持自定义端口。
安装AOM-ICAgent复选框
否
若勾选该选项,可免费在主机上安装并使用AOM-ICAgent,实现指标监控、日志查询、告警功能。其中,ICAgent仅限华为云Linux主机,安装前请参照创建/使用委托配置委托。
表4 Windows系统代理主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的代理主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
IP
是
请输入代理主机所绑定的公网IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
请参见Windows系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
Windows系统代理机仅支持密码认证。以ECS为例,输入的是ECS的用户名及密码。
winrm端口
是
推荐使用5986端口,支持自定义端口。
- 新增目标主机。
表5 Linux系统目标主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的目标主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
代理主机
是
请选择目标代理主机为无法连接公网的目标主机进行网络代理。
IP
是
请输入目标主机IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
请参见Linux系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
请根据实际情况选择密码或密钥进行认证。
- 密码:页面显示“用户名”与“密码”。以ECS为例,输入的是ECS的用户名及密码。
- 密钥:页面显示“用户名”与“密钥”。密钥的生成与获取方式请参考获取Linux密钥。
SSH端口
是
推荐使用22端口,支持自定义端口。
安装AOM-ICAgent复选框
否
若勾选该选项,可免费在主机上安装并使用AOM-ICAgent,实现指标监控、日志查询、告警功能。其中,ICAgent仅限华为云Linux主机,安装前请参照创建/使用委托配置委托。
表6 Windows系统目标主机参数说明 参数项
是否必填
说明
主机名
是
请输入自定义的目标主机名称。
仅支持3-128位数字、中文、英文字母或-_.符号。
代理主机
是
请选择目标代理主机为无法连接公网的目标主机进行网络代理。
IP
是
请输入目标主机的IP地址。支持IPv4或IPv6格式。
操作系统
是
不可更改,默认为当前主机集群的操作系统。
Windows系统:请参见Windows系统主机配置对目标主机进行配置,避免连通性认证失败。
认证方式
是
Windows系统代理机仅支持密码认证。以ECS为例,输入的是ECS的用户名及密码。
代理机转发端口
是
该端口为进行Windows代理机配置时的监听端口,推荐使用54端口,支持自定义端口。
- 新增代理主机。
- 您也可单击“添加或导入主机”,添加方式选择“导入已购ECS”,将自申请的华为云弹性云服务器作为目标主机或代理主机。
使用导入已购ECS功能时,导入成功的前提条件:
- 实例正在运行中。
- 实例与主机集群操作系统一致。
- 在默认资源池的代理场景下,代理主机必须为公网IP。
- 实例已导入为目标主机,不能导入为代理主机。
- 在代理机场景下,需要先配置代理主机才能正常使用目标主机。
- 进行主机连通性验证。
主机添加成功后开始自动进行连通性验证,如果主机连通性验证失败,请单击“失败”,根据弹框中显示的失败原因或单击“查看解决方案”进行排查故障。
更多连通性验证问题,请参考主机管理常见问题排查。
为确保Linux系统主机连通性验证成功,Linux主机需确保安装Python并开启SELinux机制,目标主机需要满足以下条件。
- 目标主机安装Python:
需安装Python2.6及以上版本,如果已安装Python2.6以下版本,需要在主机上安装以下模块,各系统安装命令如下:
- Ubuntu系统
sudo apt install python-minimal python-simplejson
- Centos或Euler系统
sudo yum install python-minimal python-simplejson ln -s /usr/bin/python2 /usr/bin/python
采用Apt或者Yum安装工具时,请确保已配置可用的源。
- Ubuntu系统
- 主机开启SELinux机制并安装“libselinux-python”模块:
- 查看SELinux状态,命令如下:
/usr/sbin/sestatus
“SELinux”状态参数值所对应的模式:
SELinux=disabled:未开启。
SELinux=enforcing:强制模式,表示所有违反安全策略的行为都将被禁止。
SELinux=permissive:宽容模式,表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。
- 若SELinux=disabled,则主机未开启该机制,需修改SELinux状态,步骤如下:
- 在主机上安装“libselinux-python”模块,各系统安装命令如下:
- Ubuntu系统
sudo apt install libselinux-python
- Centos或Euler系统
sudo yum install libselinux-python
- Ubuntu系统
- 查看SELinux状态,命令如下:

Windows10、Windows2016或Windows2019作为目标主机的自动化脚本配置方法,请参考Windows2012配置方法,脚本获取请参考win2016自动化配置脚本。
Windows7作为目标主机的自动化脚本配置方法,请参考Windows2012配置方法,脚本获取请参考win2012自动化配置脚本。
自动化脚本配置具体步骤如下:
- 配置前请检查是否已经进行安全配置,否则会出现连通性验证失败的情况。
- 获取自动化配置脚本。
- 下载win2012自动化配置脚本。
- 手动解压“Windows2012ConfigureRemotingForAnsible.zip”,得到“Windows2012ConfigureRemotingForAnsible.ps1”脚本。
- 配置主机。
进入主机,打开powershell,进入“Windows2012ConfigureRemotingForAnsible.ps1”脚本所在目录,输入如下命令:
.\Windows2012ConfigureRemotingForAnsible.ps1
执行“Windows2012ConfigureRemotingForAnsible.ps1”脚本,如下图所示。
如果提示“无法加载文件,需要进行数字签名”,如下图所示。
该错误是因为主机powershell默认模式禁止执行脚本,需要在powershell中执行如下命令:
set-executionpolicy unrestricted
将策略更改为unrestricted,执行命令后提示是否确认更改,输入“Y”即可,如下图所示。
- 查看配置。
在powershell内执行如下命令:
winrm e winrm/config/listener
- 若出现HTTPS且Hostname不为空,则表示监听成功,即Windows2012部署环境自动化配置成功,如下图所示。
- 如果监听命令的返回结果中,Hostname为空,则是因为您的主机无IIS服务和签名证书等信息,需要执行以下脚本。
#配置WinRM远端管理 winrm enumerate winrm/config/listener winrm quickconfig winrm set winrm/config/service/auth '@{Basic="true"}' winrm set winrm/config/service/auth '@{CredSSP="true"}' winrm set winrm/config/service '@{AllowUnencrypted="true"}' #安装IIS服务 Import-Module servermanager Add-windowsfeature Web-Server,Web-WebServer,Web-Common-Http,Web-Static-Content,Web-Default-Doc,Web-Dir-Browsing,Web-Http-Errors,Web-App-Dev,Web-ASP,Web-ISAPI-Ext,Web-Health,Web-Http-Logging,Web-Log-Libraries,Web-Request-Monitor,Web-Security,Web-Filtering,Web-Stat-Compression,Web-Mgmt-Tools #新建自签名证书 New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My\ -DnsName 'windows-deploy-connect' #查看自签名证书 ls Cert:\LocalMachine\My #通过新增的自签名证书添加安全连接 $windows_test_key=(Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match "windows-deploy-connect"}).Thumbprint cmd /c "winrm set winrm/config/Listener?Address=*+Transport=HTTPS @{Enabled=`"true`";Port=`"5986`";Hostname=`"windows-deploy-connect`";CertificateThumbprint=`"$windows_test_key`"}"
手动配置具体步骤如下:
- 修改Powershell,将powershell策略更改为unrestricted。
管理员用户打开Powershell,执行如下命令:
set-executionpolicy unrestricted
更改powershell策略,如下图所示。
执行命令后提示是否确认更改,输入“Y”即可。
- 配置Windows远端管理(WinRM)。
- 在Powershell中依次输入如下五条命令:
winrm enumerate winrm/config/listener winrm quickconfig winrm set winrm/config/service/auth '@{Basic="true"}' winrm set winrm/config/service/auth '@{CredSSP="true"}' winrm set winrm/config/service '@{AllowUnencrypted="true"}'
- 校验是否配置成功,命令如下:
winrm get winrm/config/service/auth
执行命令后如果“Basic”、“Kerberos”、“CredSSP”均为true则表示配置成功,如下图所示。
- 在Powershell中依次输入如下五条命令:
- 安装证书。
- 打开服务器管理器,启动IIS。
- 单击
- 进入“安装类型”页面,选择第一个选项,单击“下一步”,如下图所示。
- 进入“服务器角色”页面,勾选“Web服务器(IIS)”。
- 进入“功能”页面,仅勾选“.NET Framework 4.5 功能”选项,单击 。
- 进入“角色服务”页面,勾选“IIS管理脚本及工具”和“管理服务”,单击 ,完成安装。
- 添加证书。
- 同时按“Windows键+R”打开运行框,输入打开IIS管理窗口的命令“inetmgr”,单击“确定”。
- 打开IIS 管理器,双击
- 进入“服务器证书”界面,单击“创建自签名证书”,如下图所示。
- 进入“指定友好名称”界面,自定义输入自验证证书名称,单击“确定”,如下图所示。
- 在Powershell中查看证书,输入如下命令:
ls Cert:\LocalMachine\My
出现如下图所示两列数据即表示证书添加成功。
- 通过证书监听HTTPS端口,配置安全连接。
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Port="自定义端口号,默认5986";Hostname="证书域名";CertificateThumbprint="证书key值"}
- “Hostname”为上一步“Subject”列对应的值。
- “CertificateThumbprint”为上一步“Thumbprint”列对应值中“CN=”后边的内容,每两个字母以空格分开。
在CMD命令行中输入如下命令,如下图所示。
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Port="5986";Hostname="XXXXXXXXXXXXXXXX";CertificateThumbprint="DF D7 02 1D F6 AB E2 78 C2 0D 87 4C FC 15 5F 16 D3 33 24 2A"}
请务必在CMD命令行中执行该命令,且“Thumbprint”列对应的值,每两个字母必须以空格分开,否则后导致连通性验证失败。一旦未以空格分开,请务必删除签名重新添加。
若提示“服务无法创建该资源,因为它已存在。”请执行以下命令删除该资源后,重新执行该步骤。
winrm delete winrm/config/Listener?Address=*+Transport=HTTPS
- 在Powershell中校验是否监听成功,输入如下命令:
winrm e winrm/config/listener
若出现HTTPS则表示监听成功,即完成了所有配置,如下图所示。
- 进行连通性验证前请检查是否已经进行安全配置,否则会出现验证失败的情况。
获取Linux密钥
- 检查主机中是否存在密钥。
登录主机,执行以下命令,切换至root账号。
sudo su root
执行以下命令,查询密钥文件。
ls ~/.ssh
- 生成密钥。
- 检查生成的密钥信息。
执行以下命令。
cat ~/.ssh/id_rsa
- 若密钥前缀为“-----BEGIN RSA PRIVATE KEY-----”,说明密钥正确。复制该密钥,保存至本地,在添加主机/代理机时输入“密钥”框中。
- 若密钥前缀为“-----BEGIN OPENSSH PRIVATE KEY-----”,说明密钥错误。执行以下命令重新生成密钥。
ssh-keygen -m PEM -t rsa
- 密钥授权。
执行以下命令,将公钥追加到主机authorized_keys文件。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 操作authorized_keys文件时,需要您至少有操作id_rsa、id_rsa.pub文件的权限。
- 在使用密钥进行连通性验证时,用户名必须为操作authorized_keys文件的用户名。
- 手动复制私钥时不要复制多余的空格,否则可能连通性验证不成功。
创建主机委托
- 登录华为云控制台。
- 鼠标悬停于右上角的用户名称,如下图所示,选择并单击“统一身份认证”。
- 单击左侧目录树的“委托”,进入委托页面。
- 单击右上角“创建委托”,进入创建委托页面。
- 参考表7 创建委托的参数说明设置创建委托的参数。
- 单击“完成”,进入授权页面。
- 在右上角搜索框中输入“APM”,在查找结果中勾选“APM Administrator”。
- 单击页面下方的“确定”,委托关系创建成功。
委托生效
- 在目录树左侧选择“服务列表 > 弹性云服务器”,如下图所示。
- 单击要启用AOM监控的弹性云服务器名称,进入弹性云服务器参数配置页面,例如下图所示。搜索框默认按照名称搜索、过滤。
- 单击需要委托的委托名称ID,例如下图所示。
- 单击
,确认后即可生效,如下图所示。