The deploy_kernel* and deploy_ramdisk* variables were confusingly named because they looked similar to deploy_image. I've renamed them to ipa_kernel* and ipa_ramdisk* to reflect that they are the CoreOS kernel and ramdisk from IPA and have updated the documentation. I also cleaned up a minor issue where we defined a path for the local copies of the kernel and ramdisk but didn't use it in the install playbook. I've also removed deploy_image_upstream_url from the offline installation documentation as we no longer use it. Partial-Bug: 1478726 Change-Id: Ia8c865521974e6bdd9e8e6a3ffa4c5f6b1f2f6ad
2.7 KiB
Bifrost Offline Install
The ansible scripts that compose Bifrost download and install software via a number of means, which generally assumes connectivity to the internet.
That connectivity is not required.
If you want or need to install Bifrost without having a dependency on a connection to the internet, there are a number of steps that you will need to follow (many of which may have already been done in your environment anyway).
Those steps can be broken down into two general categories; the first being steps that need to be done in your inventory file, and the second being steps that need to be done on your target host outside of Ansible.
Ansible Specific Steps
The script scripts/env-setup.sh
will do a
git clone
to create /opt/stack/ansible
, if it
doesn't already exist. You can use the environment variables
ANSIBLE_GIT_URL
and ANSIBLE_GIT_BRANCH
to
override the source URL and the branch name to pull from.
Ansible uses Git submodules, which means if you are cloning from
anything other than the canonical location (GitHub), you'll need to
commit a patched .gitmodules
to that repo so that
submodules are also cloned from an alternate location - otherwise, the
submodules will still try to clone from GitHub.
Bifrost Specific Steps
As a general rule, any URL referenced by Bifrost scripts is
configured in a
playbook/roles/<role>/defaults/main.yml
file, which
means that all of those can be redirected to point to a local copy by
creating a file named
playbooks/host_vars/<hostname>.yml
and redirecting
the appropriate variables.
As an example, my current file looks like:
ipa_kernel_upstream_url: file:///vagrant/coreos_production_pxe.vmlinuz
ipa_ramdisk_upstream_url: file:///vagrant/coreos_production_pxe_image-oem.cpio.gz
cirros_deploy_image_upstream_url: file:///vagrant/cirros-0.3.4-x86_64-disk.img
dib_git_url: file:///vagrant/git/diskimage-builder
ironicclient_git_url: file:///vagrant/git/python-ironicclient
shade_git_url: file:///vagrant/git/shade
ironic_git_url: file:///vagrant/git/ironic
If this list becomes out of date, it's simple enough to find the
things that need to be fixed by looking for any URLs in the
playbook/roles/<role>/defaults/main.yml
files, as
noted above.
External Steps
Bifrost doesn't attempt to configure apt
,
yum
, or pip
, so if you are working in an
offline mode, you'll need to make sure those work independently.
pip
in particular will be sensitive; Bifrost tends to
use the most recent version of python modules, so you'll want to make
sure your cache isn't stale.