- 概述
- 要求
- 安装
- 安装后
- 集群管理
- 监控和警示
- 迁移和升级
- 特定于产品的配置
- 最佳实践和维护
- 故障排除
使用 uipathctl.sh
uipathctl.sh
脚本提供了一种自动化方法,用于将集群升级到较新版本、配置备份、还原集群等,方法是在一个节点上运行。 这些任务的自动化是通过 IT 自动化工具 Ansible 完成的。
参数 |
描述 |
---|---|
|
升级集群。 |
|
生成表示用于启用 SSO 的 Dex 连接器的示例文件。 |
|
生成示例 ArgoCD RBAC 文件。 |
|
使用 SSO 为 ArgoCD 和 Dex 部署生成 Kustomize 覆盖。 在调试中很有用。 |
|
使用 SSO 为 ArgoCD 和 Dex 生成并应用 Kustomize 覆盖。 |
|
仅当您使用
upgrade 命令时,才会显示此标志。
要在升级操作期间运行的步骤。 默认为
all 。
|
|
安装类型。 升级和还原所必需的。 |
|
cluster_config.json 文件的路径。 如果未指定,则生成配置文件。
|
|
允许连接到集群的 Kubeconfig 文件的路径。 默认为
/etc/rancher/rke2/rke2.yaml 。
|
|
描述集群的有效 Ansible 清单的路径。 如果未指定,则生成清单。 |
|
Ansible 用于连接到集群节点的用户名。 默认为当前用户。 |
|
提供与集群节点的连接的 SSH 私钥。 如果未指定,则系统将提示一组密码。 |
|
要求 Ansible 请求为 SSH 连接和提升设置密码。 |
|
指定要使用的自定义
ansible.cfg 的路径。
|
|
as-infra.tar.gz 文件的路径。 离线升级所必需的。
|
|
不执行 CNI 升级。 |
|
sso-generate-connector 的连接器类型。
|
|
包含用于 SSO 集成的 Dex 连接器的文件的路径。 |
|
包含用于 SSO 集成的 Dex 连接器的文件的路径。 |
Ansible 使用 SSH 机制登录到任何主机节点或计算机以执行任务。
uipathctl.sh
脚本之前,您必须执行以下步骤:
- 识别 Ansible 主机节点。
- 将节点的 SSH 签名添加到已知主机。
- 设置 SSH 身份验证方法。
- 安装 Ansible 和其他必备工具。
您必须确保在 Ansible 主机节点上安装以下工具:
ansible
(v2.8+)ansible-playbook
sshpass
– 仅在将密码与 --ansible-ask-password 参数一起使用进行身份验证时才需要。.zip
有关说明,请参阅以下部分。
Ansible 主机节点是安装 Ansible 的计算机。 此计算机必须是服务器节点,以便具有执行集群中所有自动化所需的权限。
在在线安装中,Ansible 主机节点可以是任何服务器节点。
/uipath
位置装载 UiPath 捆绑包磁盘的主服务器节点。 如果没有附加 UiPath 捆绑包磁盘的服务器节点,您只需将其他磁盘挂载到任何现有服务器节点,并将其视为 Ansible 主机节点。
known_hosts
文件中。
<node-private-ip>
替换为集群中每个节点的私有 IP 地址。
ssh-keyscan -H <node-private-ip> >> ~/.ssh/known_hosts
ssh-keyscan -H <node-private-ip> >> ~/.ssh/known_hosts
Ansible 支持两种 SSH 机制:
- 选项 1:基于密钥的 SSH 身份验证 – 推荐。 它使用私钥和公钥。
- 选项 2:基于密码的 SSH 身份验证
步骤 1:设置 SSH 密钥
SSH 密钥身份验证机制使用私钥和公钥的组合。
确保通过复制所有其他节点上的 Ansible 主机节点的公钥来授予访问权限。
ssh-keygen
命令生成一个。
生成 SSH 密钥
ssh-keygen
命令生成新的 SSH 密钥。 要生成新的 SSH 密钥,只需运行 ssh-keygen 命令并按照说明进行操作。
要生成新的 SSH 密钥,请执行以下步骤:
- 使用
ssh-keygen
命令生成新的 SSH 密钥。 -
记下密钥的位置。 默认值为:
- 公钥:
~/.ssh/id_rsa.pub
- 私钥:
~/.ssh/id_rsa
- 公钥:
- 通过复制,授予对所有其他节点上 Ansible 主机节点公钥的访问权限。
授予对每个节点上公钥的访问权限
ssh-copy-id
命令将其复制到集群中的所有节点(包括当前节点)。 如果 SSH 公钥的路径不是~/.ssh/id_rsa.pub
,请确保进行相应的替换。
ssh-copy-id -i ~/.ssh/id_rsa.pub username@node-private-ip
ssh-copy-id -i ~/.ssh/id_rsa.pub username@node-private-ip
步骤 2:提供对 Ansible 的 SSH 密钥访问权限
Ansible 使用 SSH 机制登录主机并执行所需的安装。 因此,您必须提供对 Ansible 的 SSH 密钥访问权限。
在以下方法中进行选择:
ssh-agent
(推荐)
ssh-agent
来获取对节点的访问权限。 有关 ssh-agent 的更多信息,请参阅 ssh-agent 手册。
ssh-agent
添加新密钥,请运行以下命令:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
选项 2:使用不受保护的私钥
--ansible-private-key
参数添加到uipathctl.sh
脚本中。 该参数采用私钥的绝对路径并将其用于身份验证。
您必须确保在先前选择的 Ansible 主机节点上安装 Ansible 和以下其他支持工具。
-
ansible
(v2.8+)要检查是否已安装ansible
,请运行:ansible --version &>/dev/null || echo "Error: Ansible is not installed"
ansible --version &>/dev/null || echo "Error: Ansible is not installed" -
ansible-playbook
要检查是否已安装ansible-playbook
,请运行:ansible-playbook --version &>/dev/null || echo "Error: Ansible Playbook is not installed"
ansible-playbook --version &>/dev/null || echo "Error: Ansible Playbook is not installed" -
sshpass
– 仅在将密码与--ansible-ask-password
参数一起使用进行身份验证时才需要。要检查是否已安装sshpass
,请运行:sshpass -V &>/dev/null || echo "Error: sshpass is not installed"
sshpass -V &>/dev/null || echo "Error: sshpass is not installed" -
zip
要检查是否已安装zip
,请运行:zip --version &>/dev/null || echo "Error: zip is not installed"
zip --version &>/dev/null || echo "Error: zip is not installed"重要提示:如果上述任何命令出错,则表示您的计算机上未安装目标包。请确保已安装所需的工具。
yaml
输出:
export ANSIBLE_STDOUT_CALLBACK=yaml
export ANSIBLE_STDOUT_CALLBACK=yaml
此功能是在 Ansible 2.9 中引入的,对于某些安装,必须通过运行以下命令来启用此功能:
ansible-galaxy collection install community.general
ansible-galaxy collection install community.general
community.general
集合后仍遇到ERROR! Invalid callback for stdout specified: yaml
消息,则可以通过运行以下命令来禁用yaml
输出:
unset ANSIBLE_STDOUT_CALLBACK
unset ANSIBLE_STDOUT_CALLBACK
inventory.ini
文件。 但是,在少数情况下,您必须构建inventory.ini
文件并将其提供给 Ansible。 例如:
- 从备份数据还原集群时。 这是因为在还原时,没有运行状况良好的集群可派生
inventory.ini
。 - 当您要提供特定于每个节点的高级配置(例如用户名和 SSH 密钥)时。
有关更多详细信息,请参阅 如何构建自己的清单。
uipathctl.sh
脚本可以识别的清单模板。
[FIRST_SERVER]
'10.0.1.1'
[SECONDARY_SERVERS]
'10.0.1.2'
'10.0.1.3'
[AGENTS]
'10.0.1.4'
'10.0.1.5'
[TASKMINING]
'10.0.1.6'
[GPU]
'10.0.1.7'
[ASROBOTS]
'10.0.1.8'
[all:vars]
ansible_connection=ssh
ansible_timeout=10
ansible_user=admin
[FIRST_SERVER]
'10.0.1.1'
[SECONDARY_SERVERS]
'10.0.1.2'
'10.0.1.3'
[AGENTS]
'10.0.1.4'
'10.0.1.5'
[TASKMINING]
'10.0.1.6'
[GPU]
'10.0.1.7'
[ASROBOTS]
'10.0.1.8'
[all:vars]
ansible_connection=ssh
ansible_timeout=10
ansible_user=admin
组 |
值 |
---|---|
|
运行
uipathctl.sh 脚本的起点。 这也称为 Ansible 主机节点。
您必须提供此节点的专用 IP 地址。 |
|
集群中其他服务器节点的组。 您必须提供所有其他服务器节点的专用 IP 地址。 |
|
集群中的代理节点组。 您必须提供所有代理节点的私有 IP 地址。 |
|
集群中 Task Mining 节点的组。 您必须提供所有 Task Mining 节点的私有 IP 地址。 |
|
集群中 GPU 节点的组。 您必须提供所有 GPU 节点的私有 IP 地址。 |
|
集群中的 Automation Suite Robot 节点组。 您必须提供所有 Automation Suite Robot 节点的专用 IP 地址。 |
|
应用于所有先前定义的主机组的变量组。
您可以按组或按主机节点提供变量。 有关详细信息,请参阅 将变量分配给多台计算机:组变量。 |
Yaml
文件中定义,并提供给 Ansible。
--ansible-variables-file
将其提供给uipathctl.sh
}。
#Path where installer zip is available. By default, uipathctl.sh takes the current folder and compress it to zip before copying it to other nodes.
installer_path: /path/to/installer.zip
# Path where installer will be copied on nodes
target_installer_base_path: /opt/UiPathAutomationSuite/<version>/installer
# Install type - online or offline
install_type: online
# Path on nodes where offline bundles will be copied
target_bundle_base_path: /opt/UiPathAutomationSuite/{version}
# Path on nodes where offline bundles will be extracted
target_tmp_path: /opt/UiPathAutomationSuite/tmp
# Basepath and filname for the various config files and bundles on the local machine
cluster_config_filename: cluster_config.json
cluster_config_basepath: /var/tmp/uipathctl_{version}
backup_config_filename: backup_config.json
backup_config_basepath: /var/tmp/uipathctl_{version}
restore_config_filename: restore.json
restore_config_basepath: /var/tmp/uipathctl_{version}
infra_bundle_filename: as-infra.tar.gz
infra_bundle_basepath: /var/tmp/uipath_upgrade_<version>
#Path where installer zip is available. By default, uipathctl.sh takes the current folder and compress it to zip before copying it to other nodes.
installer_path: /path/to/installer.zip
# Path where installer will be copied on nodes
target_installer_base_path: /opt/UiPathAutomationSuite/<version>/installer
# Install type - online or offline
install_type: online
# Path on nodes where offline bundles will be copied
target_bundle_base_path: /opt/UiPathAutomationSuite/{version}
# Path on nodes where offline bundles will be extracted
target_tmp_path: /opt/UiPathAutomationSuite/tmp
# Basepath and filname for the various config files and bundles on the local machine
cluster_config_filename: cluster_config.json
cluster_config_basepath: /var/tmp/uipathctl_{version}
backup_config_filename: backup_config.json
backup_config_basepath: /var/tmp/uipathctl_{version}
restore_config_filename: restore.json
restore_config_basepath: /var/tmp/uipathctl_{version}
infra_bundle_filename: as-infra.tar.gz
infra_bundle_basepath: /var/tmp/uipath_upgrade_<version>
变量 |
值 |
---|---|
|
as-installer.zip 的路径。 如果不提供此值, uipathctl.sh 将压缩当前目录并将其作为安装程序 zip 复制到其他节点。
|
|
安装程序将在节点上复制到的路径。 默认值为“/opt/UiPathAutomationSuite/{version |
|
安装方法。 可能的值为:
online 和offline 。
|
|
将在其中复制离线捆绑包的节点上的路径。 默认位置为“/opt/UiPathAutomationSuite/{version |
|
提取捆绑包的节点上的路径。 默认位置为
/opt/UiPathAutomationSuite/tmp 。
|
|
集群配置文件的名称。 默认值为
cluster_config.json 。
|
|
在编排期间,
cluster_config.json 将临时存储在节点上的位置。 默认值为/var/tmp/uipathctl_{version} 。
|
|
备份配置文件的名称。 默认值为
backup.json 。
|
|
在编排期间,
backup.json 将临时存储在节点上的位置。 默认值为/var/tmp/uipathctl_{version} 。
|
|
还原配置文件的名称。 默认值为
restore.json 。
|
|
在编排期间,
restore.json 将临时存储在节点上的位置。 默认值为/var/tmp/uipathctl_{version} 。
|
|
包含基础架构层的捆绑包的名称。 这与您提供给
uipathctl.sh 脚本的内容相同。
|
|
在编排期间,
as-infra.tar.gz 将临时存储在节点上的位置。 这与您提供给uipathctl.sh 脚本的内容相同。
|