StarlingX Ansible Playbooks
311386a353
Add USM prestaging support. This commit introduces support for the --for-sw-deploy and --for-install prestaging options. The --for-install option is the default, and is the equivalent of the previous release prestaging behaviour - the subcloud ostree repo is prestaged in the platform-backup partition. The --for-sw-deploy option is the new prestaging behaviour for USM major and minor releases. This commit focuses on prestaging minor release updates. The --for-sw-deploy option requires synchronization of ostree commits and /opt/software/metadata contents from the system controller to the subcloud. See the header file of playbookconfig/src/playbooks/roles/prestage/ sync-software-metadata/tasks/main.yml for a detailed overview of the algorithm to synchronize the ostree commits and metadata from the system controller onto the subcloud. Notes on --release YY.MM and --release YY.MM.nn handling: - The --release value can either be a major release, in format YY.MM, or a specific minor release, in format YY.MM.nn. - If format is YY.MM, the behaviour is to prestage ALL minor releases present on the system controller to the subcloud. - If format is YY.MM.nn, the behaviour is to prestage ONLY the given minor release - Note: there is no sanity checking for dependent minor updates. If update YY.MM.nn is given but YY.MM.nn-1 is not present, the operation is currently allowed. This will be addressed in a future commit (see TODO below) - TODO: Future commit will expand on this behaviour for YY.MM.nn to prestage all missing commits up to and including the YY.MM.nn commit Unit tests for ostree-metadata-sync.sh: A local BATS unit test script is added to unit test the ostree-metadata-sync.sh script. The unit tests must be run manually - there is no zuul support for BATS testing. See the README.md file in the test directory for information on running the tests for this file. This commit also handles the metadata synchronization when a subcloud is installed. In this case, the /opt/software/metadata is synchronized during the subcloud install, so that when the subcloud pulls from the system controller feed ostree repo, the subcloud is bootstrapped with the correct /opt/software/metadata hierarchy. NOTE: this commit also turns off line-length checking for bashate. We do not enforce line-length for bash scripts in metal, since it arguably makes it more difficult to write bash scripts (due to challenges with quoting, etc.) Test Cases PASS - Verify when --release YY.MM is given, all minor releases are included for synchronizaton to the subcloud - Verify when there is only one release on system controller, the synchronization is skipped (there are no updates to synchronize) - For prestaging a minor release, verify the minor release appears in the correct location/state onthe subcloud: | System Controller state | Subcloud state | Subcloud result | | ----------------------- | -------------- | --------------- | | available | - | available | | deploying | - | available | | deployed | - | available | | deployed | deployed | deployed | | | | | - Verify prestaging --for-install - verify that prestaging works as in previous release: - ostree_repo staged in /opt/platform-backup Story: 2010676 Task: 50325 Signed-off-by: Kyle MacLeod <kyle.macleod@windriver.com> Change-Id: I4c67f03d0cfcf60e1bf78fc4c80ec18271fc49c1 |
||
---|---|---|
examples | ||
playbookconfig | ||
.ansible-lint | ||
.gitignore | ||
.gitreview | ||
.yamllint | ||
.zuul.yaml | ||
centos_build_layer.cfg | ||
centos_iso_image.inc | ||
centos_pkg_dirs | ||
CONTRIBUTORS.wrs | ||
debian_build_layer.cfg | ||
debian_iso_image.inc | ||
debian_pkg_dirs | ||
LICENSE | ||
README.rst | ||
requirements.txt | ||
test-requirements.txt | ||
tox.ini |
stx-ansible-playbooks
StarlingX Bootstrap and Deployment Ansible1 Playbooks
Execution environment
- Unix like OS (recent Linux based distributions, MacOS, Cygwin)
- Python 3.8 and later
Additional Required Packages
In addition to the pakages listed in requirements.txt and test-requirements.txt, the following packages are required to run the playbooks remotely:
- python3-pexpect
- python3-ptyprocess
- sshpass
Supported StarlingX Releases
The playbooks are compatible with StarlingX R8.0 and later.
Executing StarlingX Playbooks
Bootstrap Playbook
For instructions on how to set up and execute the bootstrap playbook
from another host, please refer to the StarlingX Documentation2, at
Installation Guides
, section Configure
controller-0 of the respective system deployment type.
Developer Notes
This repository is not intended to be developed standalone, but rather as part of the StarlingX Source System, which is defined by the StarlingX manifest3.