Skip to content

astack.sh

Adam Spiers edited this page Dec 7, 2017 · 1 revision

How astack.sh deploys a Cloud

The astack.sh script drives a number of other scripts to setup the specified cloud, i.e. the following phases:

Setup

This phase can be skipped on subsequent runs using the --no-setup option to astack.sh

  • Sets up system environment (by running ardana-dev-tools/ansible/dev-env-install.yml playbook).
    • Installs Vagrant
    • Installs & sets up kvm & libvirt
    • Creates an ansible 1.9 based venv to use when running ansible-playbook operations. Make sure to run source ardana-dev-tools/tools/venvs/ansible/bin/activate if you are running playbooks directly.

Build

This phase can be skipped on subsequent runs using the --no-build option to astack.sh

  • Implemented in the ardana-dev-tools/bin/build-venv.sh script
  • Will trigger some of setup operations if needed, on first run
    • Ensures most required artifacts have been downloaded
      • Some may be downloaded later if needed
    • Creates Vagrant boxes for specified platforms
  • Clones (or refreshes) the git repos for the sources backing the venvs
    • Implemented in the ardana-dev-tools/ansible/get-venv-sources.yml playbook
    • Uses a git server corresponding to ARDANA_SITE (see above)
    • NOTE: Can be skipped by setting ARDANA_GIT_UPDATE=no in environment, or by specifying --no-checkout when running build-venv.sh directly.
  • Brings up, using Vagrant, required build VMs to build the venvs needed to deploy a cloud
  • Runs the ardana-dev-tools/ansible/venv-build.yml playbook to build venvs.

Cloud Provision

  • Bring up the specified cloud, using Vagrant
    • Uses the servers.yml file in the associated cloud definition (e.g. ./scratch-master/input-model/ardana-input-model/2.0/hp-ci/deployerincloud-lite/data/servers.yml) to specify the VMs in the cloud
  • During provisioning of the deployer VM (which may not be called deployer) will trigger the creation of the product tarball (FIXME: this isn't part of the Build phase for historical reasons; that technical debt will probably have to be addressed as we move the Build phase into OBS)
    • Contains ansible sources
      • Clones (or refreshes) the ansible sources git repos using ardana-dev-tools/ansible/get-ansible-sources.yml playbook
      • Can be skipped by setting ARDANA_GET_UPDATE=no in environment
    • Contains venv repos for each platform, including manifests descripting venvs
    • Contains generated ardana-init.bash script used to install product tarball bits and setup deployer environment
    • NOTE: Can be skipped by specifying --tarball ${absolute_path_to_deployer_tarball} when running astack.sh
  • Uploads the product tarball to the deployer node and unpacks it to /home/$ARDANAUSER
  • Runs the ardana-init.bash script from the unpacked product tarball
    • Sets up venv repos
    • Sets up ~/openstack git repo and other product areas under the deployment account on the deployer
    • Deletes itself and the other artifacts from the unpacking

Cloud Configure

This phase can be skipped on subsequent runs using the --no-config option to astack.sh.

  • Copies specified cloud model from ardana-input-model/2.0/hp-ci to ~/openstack/my_cloud/definition on deployer and commits it into the ~/openstack git repo.
  • Configures the specified cloud by running the config-processor-run.yml playbook from the ~/openstack/ardana/ansible directory on the deployer to compile the specified cloud definition
  • Sets up deployment scratch area by running the ready-deployment.yml playbook from the ~/openstack/ardana/ansible directory on the deployer to construct ~/scratch/ansible/next/ardana/ansible.
    • The scratch area consists of the ansible sources found under ~/openstack/ardana/ansible and the configuration processor generated hosts/verb_hosts file and host_vars and p_vars` hierarchies.

Cloud Deploy

This phase can be skipped on subsequent runs using the --no-site option to astack.sh.

  • Runs the site.yml playbook from the ~/scratch/ansible/next/ardana/ansible area to deploy the specified cloud.
Clone this wiki locally