向CodeArts Deploy主机集群添加目标主机
本章节介绍向CodeArts Deploy主机集群添加目标主机的相关准备。在您将主机添加到已创建的主机集群之前,需要对机器进行以下配置操作。
前提条件
华为云ECS(Linux系统)默认已完成该配置,无需再次配置,但Windows系统主机需要进行配置。
Linux系统主机配置
为确保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状态,命令如下:
Windows系统主机配置
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则表示监听成功,即完成了所有配置,如下图所示。
- 进行连通性验证前请检查是否已经进行安全配置,否则会出现验证失败的情况。