更新时间:2024-10-25 GMT+08:00

向CodeArts Deploy主机集群添加目标主机

本章节介绍向CodeArts Deploy主机集群添加目标主机的相关准备。在您将主机添加到已创建的主机集群之前,需要对机器进行以下配置操作。

前提条件

  • 已有主机集群,并在集群中拥有添加主机的权限。
  • 已拥有满足以下条件的主机(如果没有,请参考购买弹性云服务器完成购买)。
    • 已绑定公网IP。
    • 已完成系统主机配置。
    • 如果需要对主机做监控,那么需要对主机做委托。操作步骤参考创建委托

华为云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安装工具时,请确保已配置可用的源。

  • 主机开启SELinux机制并安装“libselinux-python”模块:
    1. 查看SELinux状态,命令如下:
      /usr/sbin/sestatus

      “SELinux”状态参数值所对应的模式:

      SELinux=disabled:未开启。

      SELinux=enforcing:强制模式,表示所有违反安全策略的行为都将被禁止。

      SELinux=permissive:宽容模式,表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。

    2. 若SELinux=disabled,则主机未开启该机制,需修改SELinux状态,步骤如下:
      1. 编辑SELinux的config文件,执行命令:
        vi /etc/selinux/config
      2. 根据实际情况选择修改SELinux参数为参数:

        SELinux=enforcing:强制模式,表示所有违反安全策略的行为都将被禁止。

        SELinux=permissive:宽容模式,表示所有违反安全策略的行为不被禁止,但是会在日志中作记录。

      3. 修改完成按键盘“Esc键”,退出编辑模式,执行下面的命令,保存并退出文件。
        wq
      4. 在根目录下创建隐藏文件.autorelabel,执行下面的命令后,重启Linux主机。
        touch /.autorelabel
    3. 在主机上安装“libselinux-python”模块,各系统安装命令如下:
      • Ubuntu系统
        sudo apt install libselinux-python
      • Centos或Euler系统
        sudo yum install libselinux-python

Windows系统主机配置

为确保Windows系统主机连通性验证成功,目标主机需要满足以下条件,下面分别以Windows2012主机为例进行介绍,配置方式分为自动化脚本配置手动配置等两种。

Windows10、Windows2016或Windows2019作为目标主机的自动化脚本配置方法,请参考Windows2012配置方法,脚本获取请参考win2016自动化配置脚本

Windows7作为目标主机的自动化脚本配置方法,请参考Windows2012配置方法,脚本获取请参考win2012自动化配置脚本。

  • 自动化脚本配置

自动化脚本配置具体步骤如下:

  1. 配置前请检查是否已经进行安全配置,否则会出现连通性验证失败的情况。
  2. 获取自动化配置脚本。

    1. 下载win2012自动化配置脚本。
    2. 手动解压“Windows2012ConfigureRemotingForAnsible.zip”,得到“Windows2012ConfigureRemotingForAnsible.ps1”脚本。

  3. 配置主机。

    进入主机,打开powershell,进入“Windows2012ConfigureRemotingForAnsible.ps1”脚本所在目录,输入如下命令:

    .\Windows2012ConfigureRemotingForAnsible.ps1

    执行“Windows2012ConfigureRemotingForAnsible.ps1”脚本,如下图所示。

    如果提示“无法加载文件,需要进行数字签名”,如下图所示。

    该错误是因为主机powershell默认模式禁止执行脚本,需要在powershell中执行如下命令:

    set-executionpolicy unrestricted

    将策略更改为unrestricted,执行命令后提示是否确认更改,输入“Y”即可,如下图所示。

  4. 查看配置。

    在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`"}"

  • 手动配置

手动配置具体步骤如下:

  1. 修改Powershell,将powershell策略更改为unrestricted。

    管理员用户打开Powershell,执行如下命令:

    set-executionpolicy unrestricted

    更改powershell策略,如下图所示。

    执行命令后提示是否确认更改,输入“Y”即可。

  2. 配置Windows远端管理(WinRM)。

    1. 在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"}'
    2. 校验是否配置成功,命令如下:
      winrm get winrm/config/service/auth

      执行命令后如果“Basic”“Kerberos”“CredSSP”均为true则表示配置成功,如下图所示。

  3. 安装证书。

    1. 打开服务器管理器,启动IIS。
    2. 单击添加角色和功能 > 下一步,如下图所示。

    3. 进入“安装类型”页面,选择第一个选项,单击“下一步”,如下图所示。

    4. 进入“服务器角色”页面,勾选“Web服务器(IIS)”。

    5. 进入“功能”页面,仅勾选“.NET Framework 4.5 功能”选项,单击下一步
    6. 进入“角色服务”页面,勾选“IIS管理脚本及工具”“管理服务”,单击下一步,完成安装。

  4. 添加证书。

    1. 同时按“Windows键+R”打开运行框,输入打开iis管理窗口的命令“inetmgr”,单击“确定”
    2. 打开IIS 管理器,双击服务器证书,如下图所示。

    3. 进入“服务器证书”界面,单击“创建自签名证书”,如下图所示。

    4. 进入“指定友好名称”界面,自定义输入自验证证书名称,单击“确认”,如下图所示。

    5. 在Powershell中查看证书,输入如下命令:
      ls Cert:\LocalMachine\My

      出现如下图所示两列数据即表示证书添加成功。

    6. 通过证书监听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
    7. 在Powershell中校验是否监听成功,输入如下命令:
      winrm e winrm/config/listener

      若出现HTTPS则表示监听成功,即完成了所有配置,如下图所示。

  5. 进行连通性验证前请检查是否已经进行安全配置,否则会出现验证失败的情况。