Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Repository files navigation

kayobe-automation

Scripts and tools for automating Kayobe operations. Intended for use in CI/CD pipelines.

Installation

kayobe-automation is typically installed as a Git submodule within a Kayobe configuration repository. This allows the version of kayobe-automation in use to be controlled.

Check out your kayobe-config repository and add the submodule.

cd <kayobe-config-repository>
git submodule add https://github.com/stackhpc/kayobe-automation.git .automation
cd .automation
git checkout 0.0.1
cd ..
git add .automation
git add .gitmodules
git commit -m "Add kayobe-automation"

Where 0.0.1 is the tag of the release you want to use. The submodule will act like a separate git repository, so if you make any changes you will need to change into .automation directory and commit those separately.

You can change the branch at a later date with:

cd .automation
git checkout <new-tag>
cd ..
git add .automation
git commit -m "Update kayobe-automation"

Configuration

Configuration for kayobe-automation is typically provided via files in a .automation.conf directory at the root of the kayobe-config repository. The following files are supported:

  • config.sh: Mandatory bash script that will be sourced by kayobe-automation scripts. Typically it will export environment variables necessary to configure kayobe-automation.

Use the examples in examples/* for inspiration.

Environment variables

KAYOBE_URI: Deprecated Kayobe source repository URI. It is preferred to install Kayobe via a requirements.txt file in kayobe-config.

KAYOBE_BRANCH: Deprecated Kayobe source repository branch name. It is preferred to install Kayobe via a requirements.txt file in kayobe-config.

KAYOBE_ENVIRONMENT: Optional Kayobe environment name.

KAYOBE_AUTOMATION_CONFIG_PATH: Path to kayobe-automation configuration directory. Defaults to .automation.conf in the kayobe-config root directory.

KAYOBE_AUTOMATION_SSH_PRIVATE_KEY: Private key used to login to kayobe-managed hosts

KAYOBE_AUTOMATION_SSH_PRIVATE_KEY_NAME Name of private key used to login to kayobe-managed hosts. Defaults to id_rsa.

KAYOBE_AUTOMATION_LOG_LEVEL: Verbosity of logging. Choose one of: debug, info, warn, error

KAYOBE_VAULT_PASSWORD: Kayobe vault password.

KAYOBE_AUTOMATION_PR_AUTH_TOKEN: (Required when KAYOBE_AUTOMATION_PR_TYPE is set) Auth token to use when submitting pull-requests. Typically you need to create a service account and generate a personal access token.

TEMPEST_OPENRC: OpenRC file content to use when running Tempest

Pipeline scripts

kayobe-automation provides various pipeline scripts in the pipeline directory. Many of these are wrappers around Kayobe commands.

Container images

Kayobe

kayobe-automation provides a Dockerfile to build a container image for running commands in docker/kayobe/.

Building the image requires the use of Docker buildkit.

On Ubuntu, you may need to do the following:

sudo apt install golang-docker-credential-helpers

To build, from the root of the kayobe-config repository:

DOCKER_BUILDKIT=1 docker build --file .automation/docker/kayobe/Dockerfile --tag kayobe:latest .

To use the image to run one of the pipeline scripts, from the root of the kayobe-config repository:

docker run -it --rm -v $(pwd):/stack/kayobe-config kayobe:latest /stack/kayobe-config/.automation/pipeline/overcloud-host-configure.sh

It may be necessary to provide certain environment variables at runtime, e.g. KAYOBE_ENVIRONMENT or KAYOBE_VAULT_PASSWORD. This may be done via docker run -e ENV_VAR=value ....

gitlab

You need to customise /etc/gitlab-runner/config.toml to add support for docker in docker:

[[runners]]
  name = "seed"
  url = "https://gitlab.com/"
  token = "redacted"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "centos:8"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/certs/client", "/cache", "/opt/kayobe/images"]
    shm_size = 0

This also uses a volume so that IPA images can be shared between pipelines.

Formatting

Dependencies: go

Install the git hooks:

[stack@seed .automation]$ python3 -m venv ~/will/venv/pre-commit
[stack@seed .automation]$ source ~/will/venv/pre-commit/bin/activate
(pre-commit) [stack@seed .automation]$ pip install pre-commit
(pre-commit) [stack@seed .automation]$ pre-commit install

This will run the formatter on commit.

To run manually:

(pre-commit) [stack@seed .automation]$ pre-commit run --all-files

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.