9.2. 使用 Ansible 配置 overcloud
Ansible 是应用 overcloud 配置的主要方法。本章介绍了有关如何与 overcloud Ansible 配置进行交互的信息。
尽管 director 会自动生成 Ansible playbook,您最好熟悉 Ansible 语法。有关使用 Ansible 的更多信息,请参见 https://docs.ansible.com/。
Ansible 还使用了角色这一概念,但这有别于 OpenStack Platform director 中的角色。Ansible 角色形成了 playbook 的可重复使用的组件,而 director 角色包含 OpenStack 服务到节点类型的映射。
9.2.1. 基于 Ansible 的 overcloud 配置 (config-download) 复制链接链接已复制到粘贴板!
config-download 功能是 director 用于配置 overcloud 的方法。director 将 config-download 与 OpenStack Orchestration (heat)一起使用来生成软件配置,并将配置应用到每个 overcloud 节点。尽管 heat 从 SoftwareDeployment 资源创建所有部署数据以执行 overcloud 安装和配置,但 heat 并不应用任何配置。Heat 仅通过 heat API 提供配置数据。
作为结果,在运行 openstack overcloud deploy 命令时后会发生以下操作:
-
director 根据
openstack-tripleo-heat-templates创建新的部署计划,并通过包含环境文件和参数来自定义该计划。 - director 使用 heat 来解释部署计划,并创建 overcloud 堆栈和所有下级资源。这包括使用 OpenStack Bare Metal 服务 (ironic) 置备节点。
- Heat 也会从部署计划创建软件配置。director 从这一软件配置中编译 Ansible playbook。
-
director 在 overcloud 节点上生成一个临时用户 (
tripleo-admin),专门用于进行 Ansible SSH 访问。 - director 下载 heat 软件配置,并使用 heat 输出生成一系列 Ansible playbook。
-
director 通过
ansible-playbook将 Ansible playbook 应用到 overcloud 节点。
9.2.2. config-download 工作目录 复制链接链接已复制到粘贴板!
ansible-playbook 命令创建 Ansible 项目目录,默认名称 ~/config-download/overcloud。此项目目录从 heat 存储下载的软件配置。它包括您需要运行 ansible-playbook 来配置 overcloud 的所有与 Ansible 相关的文件。
目录的内容包括:
-
tripleo-ansible-inventory.yaml - 包含所有 overcloud 节点的
hosts和vars的 Ansible 清单文件。 -
ansible.log - 最近运行的
ansible-playbook中的日志文件。 -
ansible.cfg - 运行
ansible-playbook时使用的配置文件。 -
ansible-playbook-command.sh - 用于重新运行
ansible-playbook的可执行文件脚本。 SSH_PRIVATE_KEY - 用于访问 overcloud 节点的私有 ssh 密钥。
- 重现 ansible-playbook
创建项目目录后,运行 ansible-playbook-command.sh 命令以重现部署。
./ansible-playbook-command.sh
$ ./ansible-playbook-command.sh
您可以使用额外的参数运行脚本,如 check mode --check、限制 hosts --limit,以及覆盖变量 -e。
./ansible-playbook-command.sh --check
$ ./ansible-playbook-command.sh --check
9.2.3. 检查 config-download 日志 复制链接链接已复制到粘贴板!
在 config-download 过程中,Ansible 在 undercloud 上的 /home/stack 目录中创建一个名为 ansible.log 的日志文件。
流程
使用
less命令查看日志:less ~/ansible.log
$ less ~/ansible.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.4. 对工作目录执行 Git 操作 复制链接链接已复制到粘贴板!
config-download 工作目录是本地 Git 软件仓库。每次运行部署操作时,director 会向工作目录添加一个包含相关更改的 Git 提交。可以执行 Git 操作以查看不同阶段部署的配置,并将此配置与不同部署进行比较。
请注意工作目录的限制。例如,如果您使用 Git 恢复到早期版本的 config-download 工作目录,则此操作仅影响工作目录中的配置。不会影响以下配置:
- overcloud 数据架构: 应用上一版本的工作目录软件配置不会撤消数据迁移和架构更改。
- overcloud 的硬件布局:恢复到之前的软件配置不会撤消与 overcloud 硬件相关的更改,如扩展或缩减。
-
heat 堆栈:恢复到以前版本的工作目录不会影响 heat 堆栈中存储的配置。heat 堆栈创建软件配置的新版本,并应用到 overcloud。要对 overcloud 进行永久更改,在重新运行
openstack overcloud deploy之前修改应用到 overcloud 堆栈的环境文件。
完成以下步骤,比较 config-download 工作目录的不同提交项。
流程
更改到 overcloud 的
config-download工作目录,通常称为overcloud:cd ~/config-download/overcloud
$ cd ~/config-download/overcloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
git log命令,以列出工作目录中的提交。您也可以通过格式化日志输出来显示日期:git log --format=format:"%h%x09%cd%x09" a7e9063 Mon Oct 8 21:17:52 2018 +1000 dfb9d12 Fri Oct 5 20:23:44 2018 +1000 d0a910b Wed Oct 3 19:30:16 2018 +1000 ...
$ git log --format=format:"%h%x09%cd%x09" a7e9063 Mon Oct 8 21:17:52 2018 +1000 dfb9d12 Fri Oct 5 20:23:44 2018 +1000 d0a910b Wed Oct 3 19:30:16 2018 +1000 ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,最近的提交显示在前面。
针对两个提交哈希运行
git diff,以查看部署之间的所有变化:git diff a7e9063 dfb9d12
$ git diff a7e9063 dfb9d12Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2.5. 使用 config-download 的部署方法 复制链接链接已复制到粘贴板!
在 overcloud 部署上下文中有四种使用 config-download 的主要方法:
- 标准部署
-
运行
openstack overcloud deploy命令,以在置备阶段后自动运行配置阶段。这是运行openstack overcloud deploy命令时的默认方法。 - 分离置备和配置
-
使用特定选项运行
openstack overcloud deploy命令,以分离置备和配置阶段。 - 部署后运行 ansible-playbook-command.sh 脚本
-
使用结合或分离的置备和配置阶段运行
openstack overcloud deploy命令,然后运行config-download工作目录中提供的ansible-playbook-command.sh脚本,以重新应用配置阶段。 - 置备节点,手动创建 config-download,并运行 Ansible
-
使用特定选项运行
openstack overcloud deploy命令,以置备节点,然后使用deploy_steps_playbook 运行 ansible-playbook 命令。ansible-playbook.yaml
9.2.6. 在标准部署上运行 config-download 复制链接链接已复制到粘贴板!
执行 config-download 的默认方法是运行 openstack overcloud deploy 命令。此方法适合大多数环境。
先决条件
- 成功安装 undercloud。
- overcloud 节点已准备好进行部署。
- 与特定 overcloud 自定义相关的 heat 环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行部署命令。包括 overcloud 所需的任何环境文件:
openstack overcloud deploy \ --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ...
$ openstack overcloud deploy \ --templates \ -e environment-file1.yaml \ -e environment-file2.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待部署过程完成。
在部署过程中,director 在 ~/config-download/overcloud 工作目录中生成 config-download 文件。在部署过程完成后,查看工作目录中的 Ansible playbook,以查看为配置 overcloud 而执行的任务 director。
9.2.7. 使用分离的置备和配置运行 config-download 复制链接链接已复制到粘贴板!
openstack overcloud deploy 命令运行基于 heat 的置备过程,然后运行 config-download 配置过程。您还可以运行该部署命令来单独执行每个过程。使用此方法将 overcloud 节点置备为不同的过程,以便您可以在运行 overcloud 配置过程之前在节点上执行任何手动预配置任务。
先决条件
- 成功安装 undercloud。
- overcloud 节点已准备好进行部署。
- 与特定 overcloud 自定义相关的 heat 环境文件。
步骤
-
以
stack用户身份登录 undercloud 主机。 Source
stackrc文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
--stack-only选项运行部署命令。包括 overcloud 所需的任何环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待置备过程完成。
为
tripleo-admin用户启用从 undercloud 到 overcloud 的 SSH 访问。config-download进程使用tripleo-admin用户来执行基于 Ansible 的配置:openstack overcloud admin authorize
$ openstack overcloud admin authorizeCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
在节点上执行任何手动预配置任务。如果使用 Ansible 进行配置,请使用
tripleo-admin用户来访问节点。 使用
--config-download-only选项运行部署命令。包括 overcloud 所需的环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待配置过程完成。
在配置阶段,director 在 ~/config-download/overcloud 工作目录中生成 config-download 文件。在部署过程完成后,查看工作目录中的 Ansible playbook,以查看为配置 overcloud 而执行的任务 director。
当您使用标准方法或单独的置备和配置过程部署 overcloud 时,director 在 ~/config-download/overcloud 中生成工作目录。此目录包含再次运行配置过程所需的 playbook 和脚本。
有关 config-download 任务和标签的详情,请参考 config-download 任务和标签。
先决条件
使用以下方法之一部署的 overcloud:
- 结合置备和配置过程的标准方法。
- 分隔置备和配置过程。
流程
-
以
stack用户身份登录 undercloud 主机。 运行
ansible-playbook-command.sh脚本。可以将额外的 Ansible 参数传递给该脚本,再将其原封不动地传递给
ansible-playbook命令。这样便可利用 Ansible 功能,如检查模式(--check)、限制主机(--limit)或覆盖变量(-e)。例如:./ansible-playbook-command.sh --limit Controller
$ ./ansible-playbook-command.sh --limit ControllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 警告当
--limit用于大规模部署时,只有执行中包含的主机才会添加到节点的 SSHknown_hosts文件中。因此,一些操作(如实时迁移)可能无法在known_hosts文件中没有工作。注意要确保
/etc/hosts文件在所有节点上是最新的,请以stack用户身份运行以下命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待配置过程完成。
9.2.9. 使用手动创建的 playbook 运行 config-download 复制链接链接已复制到粘贴板!
您可以通过置备节点并单独应用 Ansible 配置,在标准工作流之外创建自己的 config-download 文件。
先决条件
- 成功安装 undercloud
- Overcloud 节点已准备好进行部署
- 与特定 overcloud 自定义相关的 heat 环境文件
步骤
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 置备 overcloud 节点:
openstack overcloud node provision \ --stack <stackname> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision \ --stack <stackname> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <
;stackname> 替换为置备节点的堆栈的名称。默认值为overcloud。 -
将
<deployment_file> 替换为要在部署命令中生成的 heat 环境文件的名称,如/home/stack/templates/overcloud-nodes-deployed.yaml。
-
将 <
使用
--stack-only选项运行部署命令。包括 overcloud 所需的环境文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入包含
config-download文件的目录:cd ~/overcloud-deploy/<stackname>/config-download/<stackname>
$ cd ~/overcloud-deploy/<stackname>/config-download/<stackname>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
~/overcloud-deploy/<stackname>/config-download/<stackname> 文件来添加自定义配置。要执行部署 playbook,请运行ansible-playbook命令:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意针对 overcloud 运行
config-download/overcloudplaybook 时,您可能会收到有关每个主机的 SSH 指纹的消息。要避免这些消息,请在ansible-playbook命令中包含--ssh-common-args="-o StrictHostKeyChecking=no":Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 等待配置过程完成。
9.2.10. config-download 的限制 复制链接链接已复制到粘贴板!
config-download 功能有一些限制:
-
在使用 ansible-playbook CLI 参数(如
--tags、--skip-tags或--start-at-task)时,请勿随意更改部署配置的运行或应用顺序。利用这些 CLI 参数,可以轻松地重新运行先前失败的任务或在初始部署的基础上进行迭代。但是,为了保证部署的一致性,您必须按顺序运行deploy_steps_ansible-playbook.yaml中的所有任务。 您不能将
--start-at-task参数用于在任务名称中使用变量的某些任务。例如,--start-at-task参数不适用于以下 Ansible 任务:- name: Run puppet host configuration for step {{ step }}- name: Run puppet host configuration for step {{ step }}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您的 overcloud 部署包含 director 部署的 Ceph Storage 集群,则在使用
--check选项时您无法跳过step1任务,除非您也跳过external_deploy_steps任务。 -
您可以使用
--forks选项设置并行 Ansible 任务的数量。但是,在 25 个并行任务后config-download操作的性能会下降。因此,--forks选项请勿超过 25。
9.2.11. config-download 顶层文件 复制链接链接已复制到粘贴板!
以下文件是 config-download 工作目录内的重要顶级文件。
Ansible 配置和执行。
以下文件专用于在 config-download 工作目录中配置和执行 Ansible。
- ansible.cfg
-
运行
ansible-playbook时所使用的配置文件。 - ansible.log
-
来自最近一次
ansible-playbook运行的日志文件。 - ansible-errors.json
- 包含任何部署错误的 JSON 结构文件。
- ansible-playbook-command.sh
-
从上次部署操作重新运行
ansible-playbook命令的可执行脚本。 - ssh_private_key
- Ansible 用于访问 overcloud 节点的 SSH 私钥。
- tripleo-ansible-inventory.yaml
- 包含所有 overcloud 节点的主机和变量的 Ansible 清单文件。
- overcloud-config.tar.gz
- 工作目录的存档。
Playbook
下列文件是 config-download 工作目录中的 playbook。
- deploy_steps_ansible-playbook.yaml
- 主要的部署步骤。此 playbook 为您的 overcloud 执行主要的配置操作。
- pre_upgrade_rolling_steps_playbook.yaml
- 主要升级的升级前步骤
- upgrade_steps_playbook.yaml
- 主要升级步骤。
- post_upgrade_steps_playbook.yaml
- 主要升级的升级后步骤。
- update_steps_playbook.yaml
- 次要更新步骤。
- fast_forward_upgrade_playbook.yaml
- 快进升级任务。仅在要从一个长生命版本的 Red Hat OpenStack Platform 升级到下一个版本时使用此 playbook。
9.2.12. config-download 任务和标签 复制链接链接已复制到粘贴板!
config-download 工作目录(如 ~/overcloud-deploy/overcloud/config-download/overcloud/ )包含一个名为 deploy_steps_ansible-playbook.yaml 的 playbook。要查看此 playbook,请运行以下命令:
less deploy_steps_ansible-playbook.yaml
$ less deploy_steps_ansible-playbook.yaml
这个 playbook 会使用工作目录中所含的各种任务文件。某些 playbook 任务文件对所有 Red Hat OpenStack Platform (RHOSP)角色通用,其中一些适用于特定的 RHOSP 角色和服务器。
config-download 工作目录还包含与您在 overcloud roles_data 文件中定义的每个角色对应的子目录。每个 RHOSP 角色目录都包含该角色类型的单独服务器的子目录。这些目录使用可组合角色主机名格式,如 Controller/overcloud-controller-0。
deploy_steps_playbook.yaml 中的 Ansible 任务已标记。要查看完整的标记列表,请在 ansible-playbook 命令中使用 the--list-tags 选项。
ansible-playbook -i ~/tripleo-deploy/<stackname>/tripleo-ansible-inventory.yaml \ --list-tags ~/tripleo-deploy/<stackname>/deploy_steps_ansible-playbook.yaml
$ ansible-playbook -i ~/tripleo-deploy/<stackname>/tripleo-ansible-inventory.yaml \
--list-tags ~/tripleo-deploy/<stackname>/deploy_steps_ansible-playbook.yaml
您可以通过在 ansible-playbook-command.sh 脚本中使用--tags ,--skip -tags , 或--start-at-task 选项来应用标签:
对 overcloud 运行 config-download playbook 时,可能会收到有关每个主机的 SSH 指纹的消息。要避免这些消息,请在运行 ansible-playbook-command.sh 脚本时包含 --ssh-common-args="-o StrictHostKeyChecking=no":
./ansible-playbook-command.sh --tags overcloud --ssh-common-args="-o StrictHostKeyChecking=no"
$ ./ansible-playbook-command.sh --tags overcloud --ssh-common-args="-o StrictHostKeyChecking=no"
以下列表包含有关 deploy_steps_ansible-playbook.yaml 的默认标签的信息:
- facts
- fact 收集操作。
- common_roles
- 适用于所有节点的 Ansible 角色。
- overcloud
- 用于 overcloud 部署的所有 play。
- pre_deploy_steps
-
在
deploy_steps操作之前发生的部署。 - host_prep_steps
- 主机准备步骤。
- deploy_steps
- 部署步骤。
- post_deploy_steps
-
在
deploy_steps操作后进行的步骤。 - external
- 所有外部部署任务。
- external_deploy_steps
- 仅在 undercloud 中运行的外部部署任务。
9.2.13. config-download 部署步骤 复制链接链接已复制到粘贴板!
deploy_steps_ansible-playbook.yaml playbook 配置 overcloud。此 playbook 应用所有必需的软件配置,以基于 overcloud 部署计划部署完整的 overcloud。
本节包含此 playbook 内使用的不同 Ansible play 的总结。本节中的 play 名称是 playbook 中使用的相同名称,也显示在 ansible-playbook 输出中。本节还包含有关在每个 play 上设置的 Ansible 标签的信息。
- 从 undercloud 收集事实
为 undercloud 节点收集的 fact。
标签:
facts- 从 overcloud 收集 fact
为 overcloud 节点收集的 fact。
标签:
facts- 加载全局变量
从
global_vars.yaml加载所有变量。标签:
always- TripleO 服务器的通用角色
将常见 Ansible 角色应用于所有 overcloud 节点,包括用于安装 bootstrap 软件包的 tripleo-bootstrap 和用于配置 ssh 已知主机的 tripleo-ssh-known-hosts。
标签:
common_roles- Overcloud 部署步骤任务 - 步骤 0
从 deploy_steps_tasks 模板接口应用任务。
标签:
overcloud、deploy_steps- 服务器部署
应用特定于服务器的 heat 部署,以进行网络和基础架构数据等配置。包括 NetworkDeployment、<Role>Deployment、<Role>AllNodesDeployment,等等。
标签:
overcloud、pre_deploy_steps- 主机准备步骤
从 host_prep_steps 模板接口应用任务。
标签:
overcloud、host_prep_steps- 外部部署步骤 [1,2,3,4,5]
应用来自 external_deploy_steps_tasks 模板接口的任务。Ansible 仅针对 undercloud 节点运行这些任务。
标签:
external、external_deploy_steps- Overcloud 部署步骤任务 [1,2,3,4,5]
从 deploy_steps_tasks 模板接口应用任务。
标签:
overcloud、deploy_steps- Overcloud 通用部署步骤任务 [1,2,3,4,5]
应用每个步骤执行的常见任务,包括 puppet 主机配置
container-puppet.py和tripleo-container-manage(容器配置和管理)。标签:
overcloud、deploy_steps- 部署后服务器
5 步部署过程后执行的配置应用特定于服务器的 heat 部署。
标签:
overcloud、post_deploy_steps- 部署之后的外部部署任务
应用来自 external_post_deploy_steps_tasks 模板接口的任务。Ansible 仅针对 undercloud 节点运行这些任务。
标签:
external、external_deploy_steps