45a4f9c075
Deploys a bifrost container using kolla-ansible bifrost-deploy. IPA and disk images are downloaded rather than built to improve reliability. Currently only minimal testing of the deployment is performed, creating and deleting an ironic node. Ideally we would perform a bare metal node deployment. The job is based on CentOS, as Ubuntu bifrost deployment is currently failing with a python-MySQLdb error. Change-Id: Ic45094594c21116b5b0d6a606f568fc7954175e3
146 lines
4.9 KiB
YAML
146 lines
4.9 KiB
YAML
---
|
|
- hosts: all
|
|
vars:
|
|
kolla_ansible_src_dir: "src/{{ zuul.project.canonical_hostname }}/openstack/kolla-ansible"
|
|
kolla_ansible_full_src_dir: "{{ zuul.executor.work_root }}/{{ kolla_ansible_src_dir }}"
|
|
tasks:
|
|
- name: Prepare ceph disks
|
|
script: "{{ kolla_ansible_full_src_dir }}/tests/setup_ceph_disks.sh"
|
|
when: scenario == "ceph"
|
|
become: true
|
|
|
|
- hosts: primary
|
|
vars:
|
|
kolla_inventory_path: "/etc/kolla/inventory"
|
|
logs_dir: "/tmp/logs"
|
|
kolla_ansible_src_dir: "src/{{ zuul.project.canonical_hostname }}/openstack/kolla-ansible"
|
|
kolla_ansible_full_src_dir: "{{ zuul.executor.work_root }}/{{ kolla_ansible_src_dir }}"
|
|
need_build_image: false
|
|
tasks:
|
|
- name: ensure /etc/kolla exists
|
|
file:
|
|
path: "/etc/kolla"
|
|
state: "directory"
|
|
mode: 0777
|
|
become: true
|
|
|
|
- name: copy default ansible kolla-ansible inventory
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/inventory.j2"
|
|
dest: "{{ kolla_inventory_path }}"
|
|
delegate_to: "primary"
|
|
|
|
# FIXME: in multi node env, api_interface may be different on each node.
|
|
- name: detect api_interface_name variable
|
|
vars:
|
|
ansible_interface_name: "ansible_{{ item.replace('-', '_') }}"
|
|
api_interface_address: "{{ hostvars[inventory_hostname]['nodepool']['private_ipv4'] }}"
|
|
set_fact:
|
|
api_interface_name: "{{ item }}"
|
|
api_interface_address: "{{ api_interface_address }}"
|
|
when:
|
|
- hostvars[inventory_hostname][ansible_interface_name]['ipv4'] is defined
|
|
- hostvars[inventory_hostname][ansible_interface_name]['ipv4']['address'] == api_interface_address
|
|
with_items: "{{ ansible_interfaces }}"
|
|
delegate_to: "primary"
|
|
|
|
- name: detect whether need build images
|
|
set_fact:
|
|
need_build_image: true
|
|
when:
|
|
- item.project.short_name == "kolla"
|
|
with_items: "{{ zuul['items'] }}"
|
|
|
|
- name: generate global.yml file
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/globals-default.j2"
|
|
dest: /etc/kolla/globals.yml
|
|
delegate_to: "primary"
|
|
|
|
- name: ensure nova conf overrides dir exists
|
|
file:
|
|
path: "/etc/kolla/config/nova"
|
|
state: "directory"
|
|
mode: 0777
|
|
when: scenario != "bifrost"
|
|
become: true
|
|
delegate_to: "primary"
|
|
|
|
- name: generate nova config overrides
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/nova-compute-overrides.j2"
|
|
dest: /etc/kolla/config/nova/nova-compute.conf
|
|
when: scenario != "bifrost"
|
|
delegate_to: "primary"
|
|
|
|
- name: ensure bifrost conf overrides dir exists
|
|
file:
|
|
path: "/etc/kolla/config/bifrost"
|
|
state: "directory"
|
|
mode: 0777
|
|
when: scenario == "bifrost"
|
|
become: true
|
|
delegate_to: "primary"
|
|
|
|
- name: generate bifrost DIB config overrides
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/bifrost-dib-overrides.j2"
|
|
dest: /etc/kolla/config/bifrost/dib.yml
|
|
when: scenario == "bifrost"
|
|
delegate_to: "primary"
|
|
|
|
- name: copy passwords.yml file
|
|
copy:
|
|
src: "{{ kolla_ansible_full_src_dir }}/etc/kolla/passwords.yml"
|
|
dest: /etc/kolla/passwords.yml
|
|
delegate_to: "primary"
|
|
|
|
- name: ensure /etc/docker exists
|
|
file:
|
|
path: "/etc/docker"
|
|
state: "directory"
|
|
mode: 0777
|
|
become: true
|
|
|
|
- name: create deamon.json for nodepool cache
|
|
vars:
|
|
infra_dockerhub_mirror: "http://{{ zuul_site_mirror_fqdn }}:8081/registry-1.docker/"
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/docker_daemon.json.j2"
|
|
dest: "/etc/docker/daemon.json"
|
|
become: true
|
|
|
|
|
|
- name: install kolla-ansible requirements
|
|
pip:
|
|
requirements: "{{ ansible_env.HOME }}/{{ kolla_ansible_src_dir }}/requirements.txt"
|
|
become: true
|
|
|
|
- name: generate passwords
|
|
shell: "{{ kolla_ansible_src_dir }}/tools/generate_passwords.py"
|
|
delegate_to: "primary"
|
|
|
|
- name: generate ceph config overrides
|
|
template:
|
|
src: "{{ kolla_ansible_full_src_dir }}/tests/templates/ceph-overrides.j2"
|
|
dest: /etc/kolla/config/ceph.conf
|
|
when: scenario == "ceph"
|
|
delegate_to: "primary"
|
|
|
|
- shell:
|
|
cmd: |
|
|
set -e
|
|
set -x
|
|
export BASE_DISTRO={{ base_distro }}
|
|
export INSTALL_TYPE={{ install_type }}
|
|
export NODEPOOL_TARBALLS_MIRROR=http://{{ zuul_site_mirror_fqdn }}:8080/tarballs
|
|
export BUILD_IMAGE={{ need_build_image }}
|
|
export KOLLA_SRC_DIR={{ ansible_env.HOME }}/src/git.openstack.org/openstack/kolla
|
|
export ACTION={{ scenario }}
|
|
|
|
tools/setup_gate.sh
|
|
executable: /bin/bash
|
|
chdir: "{{ kolla_ansible_src_dir }}"
|
|
delegate_to: "primary"
|
|
environment: '{{ zuul | zuul_legacy_vars }}'
|