离线安装

Bifrost 的 Ansible 脚本通过多种方式下载和安装软件,通常假定可以连接到互联网。但是,也可以在没有外部连接的情况下使用 Bifrost。

如果您需要或希望在没有连接到互联网的依赖关系的情况下安装 Bifrost,您需要遵循一些步骤(其中许多步骤可能已经在您的环境中完成)。

这些步骤可以分为两大类;第一类是在您的清单文件中需要执行的步骤,第二类是在您的目标主机上,在 Ansible 之外需要执行的步骤。

Ansible 特定步骤

脚本 scripts/env-setup.sh 将执行 git clone 以创建 /opt/stack/ansible(如果它不存在)。您可以使用环境变量 ANSIBLE_GIT_URLANSIBLE_GIT_BRANCH 来覆盖源 URL 和要拉取的分支名称。

Ansible 使用 Git 子模块,这意味着如果您从非规范位置(GitHub)克隆,您需要提交一个修补的 .gitmodules 到该仓库,以便子模块也从替代位置克隆 - 否则,子模块仍然会尝试从 GitHub 克隆。

Bifrost 特定步骤

通常,Bifrost 脚本引用的任何 URL 都在 playbook/roles/<role>/defaults/main.yml 文件中配置,这意味着所有这些都可以重定向到指向本地副本,方法是在名为 playbooks/host_vars/<hostname>.yml 的文件中重定向适当的变量。

例如,YAML 文件的内容可能如下所示。

ipa_kernel_upstream_url: file:///vagrant/ipa-centos9-master.kernel
ipa_ramdisk_upstream_url: file:///vagrant/ipa-centos9-master.initramfs
custom_deploy_image_upstream_url: file:///vagrant/cirros-0.5.3-x86_64-disk.img
dib_git_url: file:///vagrant/git/diskimage-builder
ironicclient_git_url: file:///vagrant/git/python-ironicclient
ironic_git_url: file:///vagrant/git/ironic

如果此列表变得过时,通过查找上述 playbook/roles/<role>/defaults/main.yml 文件中的任何 URL,很容易找到需要修复的内容。

目前,您可以 grep Bifrost 仓库 中的 defaults/main.yml

对于 kolla-ansible,您还需要 ipa 镜像的 sha256sum

sha256sum /vagrant/ipa-centos8-master.kernel > /vagrant/ipa-centos8-master.kernel.sha256
sha256sum /vagrant/ipa-centos8-master.initramfs > /vagrant/ipa-centos8-master.initramfs.sha256

外部步骤

Bifrost 不会尝试配置 aptyumpip,因此如果您在离线模式下工作,您需要确保这些独立工作。

pip 特别敏感;Bifrost 倾向于使用最新版本的 Python 模块,因此您需要确保您的缓存不是过时的。