Modify the baremetal playbooks to use baseos undercloud
The baremetal deployment should follow OVB closely. Add a baseos undercloud and build/fetch images under the same conditions as OVB. Story: https://tree.taiga.io/project/tripleo-ci-board/task/950 Change-Id: I67439f3497499f30801d185a298e01f112f01fbe
This commit is contained in:
parent
600ed81b04
commit
c86871ab45
@ -35,9 +35,17 @@
|
|||||||
roles:
|
roles:
|
||||||
- environment/setup
|
- environment/setup
|
||||||
|
|
||||||
|
- name: Check whether to build images
|
||||||
|
hosts: virthost
|
||||||
|
gather_facts: true
|
||||||
|
roles:
|
||||||
|
- check-to-build-or-not-to-build
|
||||||
|
|
||||||
- name: Setup undercloud and baremetal vms and networks in libvirt
|
- name: Setup undercloud and baremetal vms and networks in libvirt
|
||||||
hosts: virthost
|
hosts: virthost
|
||||||
gather_facts: true
|
gather_facts: true
|
||||||
|
vars:
|
||||||
|
baseos: true
|
||||||
roles:
|
roles:
|
||||||
- libvirt/setup
|
- libvirt/setup
|
||||||
|
|
||||||
@ -51,31 +59,104 @@
|
|||||||
roles:
|
roles:
|
||||||
- tripleo-inventory
|
- tripleo-inventory
|
||||||
|
|
||||||
|
- name: Setup the undercloud
|
||||||
|
hosts: undercloud
|
||||||
|
gather_facts: true
|
||||||
|
vars:
|
||||||
|
non_root_user_setup: false
|
||||||
|
roles:
|
||||||
|
- undercloud-setup
|
||||||
|
|
||||||
- name: Prepare the host for PXE forwarding
|
- name: Prepare the host for PXE forwarding
|
||||||
hosts: virthost
|
hosts: virthost
|
||||||
gather_facts: false
|
gather_facts: false
|
||||||
roles:
|
roles:
|
||||||
- baremetal-prep-virthost
|
- baremetal-prep-virthost
|
||||||
|
|
||||||
|
- name: Set to_build on undercloud
|
||||||
|
hosts: undercloud
|
||||||
|
gather_facts: true
|
||||||
|
tasks:
|
||||||
|
- name: set_fact for to_build on undercloud
|
||||||
|
set_fact:
|
||||||
|
to_build: "{{ hostvars[groups['virthost'][0]]['to_build'] }}"
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
|
- name: set_fact for image_cache_dir on undercloud
|
||||||
|
set_fact:
|
||||||
|
image_cache_dir: "{{ working_dir }}/images-cache"
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
|
- name: set_fact for libguestfs_mode on undercloud
|
||||||
|
set_fact:
|
||||||
|
libguestfs_mode: false
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
- name: Run DLRN gate role and install repo
|
- name: Run DLRN gate role and install repo
|
||||||
hosts: undercloud
|
hosts: undercloud
|
||||||
gather_facts: true
|
gather_facts: true
|
||||||
become: true
|
become: true
|
||||||
|
vars:
|
||||||
|
artg_compressed_gating_repo: "/home/{{ undercloud_user }}/gating_repo.tar.gz"
|
||||||
|
artg_repos_dir: "{{ repo_clone_dir|default('/opt/stack/new') }}"
|
||||||
|
ib_create_web_repo: "{{ hostvars[groups['virthost'][0]]['to_build'] }}"
|
||||||
tasks:
|
tasks:
|
||||||
|
# Always build images even if running a periodic-* named job
|
||||||
|
# in a check pipeline for testing
|
||||||
|
- name: Always build images in periodic
|
||||||
|
set_fact:
|
||||||
|
to_build: true
|
||||||
|
cacheable: true
|
||||||
|
when: "'periodic' in zuul.job"
|
||||||
|
|
||||||
- include_role:
|
- include_role:
|
||||||
name: build-test-packages
|
name: build-test-packages
|
||||||
vars:
|
vars:
|
||||||
artg_compressed_gating_repo: "/home/{{ undercloud_user }}/gating_repo.tar.gz"
|
artg_compressed_gating_repo: "/home/{{ undercloud_user }}/gating_repo.tar.gz"
|
||||||
|
artg_repos_dir: "{{ repo_clone_dir|default('/opt/stack/new') }}"
|
||||||
|
when: build_test_packages|default(false)|bool
|
||||||
|
|
||||||
- include_role:
|
- include_role:
|
||||||
name: install-built-repo
|
name: install-built-repo
|
||||||
|
vars:
|
||||||
|
ib_create_web_repo: "{{ to_build|bool }}"
|
||||||
when: compressed_gating_repo is defined
|
when: compressed_gating_repo is defined
|
||||||
|
|
||||||
|
- name: Get images for quickstart
|
||||||
|
hosts: undercloud
|
||||||
|
gather_facts: true
|
||||||
|
vars:
|
||||||
|
ib_repo_image_inject: "{{ not to_build|bool }}"
|
||||||
|
ib_repo_run_live: false
|
||||||
|
modify_image_vc_ram: 4096
|
||||||
|
modify_image_vc_cpu: 4
|
||||||
|
modify_image_vc_verbose: true
|
||||||
|
tasks:
|
||||||
|
- include_role:
|
||||||
|
name: fetch-images
|
||||||
|
when: not to_build|bool
|
||||||
|
|
||||||
|
- include_role:
|
||||||
|
name: repo-setup
|
||||||
|
vars:
|
||||||
|
repo_inject_image_path: "/home/{{ undercloud_user }}/overcloud-full.qcow2"
|
||||||
|
repo_run_live: false
|
||||||
|
when: not to_build|bool
|
||||||
|
|
||||||
|
- include_role:
|
||||||
|
name: repo-setup
|
||||||
|
vars:
|
||||||
|
repo_inject_image_path: "/home/{{ undercloud_user }}/ironic-python-agent.initramfs"
|
||||||
|
repo_run_live: false
|
||||||
|
initramfs_image: true
|
||||||
|
libguestfs_mode: false
|
||||||
|
when: not to_build|bool
|
||||||
|
|
||||||
- include_role:
|
- include_role:
|
||||||
name: install-built-repo
|
name: install-built-repo
|
||||||
vars:
|
vars:
|
||||||
ib_repo_image_path: "/home/{{ undercloud_user }}/overcloud-full.qcow2"
|
ib_repo_image_path: "/home/{{ undercloud_user }}/overcloud-full.qcow2"
|
||||||
when: compressed_gating_repo is defined
|
when: compressed_gating_repo is defined and not to_build|bool
|
||||||
|
|
||||||
- include_role:
|
- include_role:
|
||||||
name: install-built-repo
|
name: install-built-repo
|
||||||
@ -83,4 +164,4 @@
|
|||||||
ib_repo_image_path: "/home/{{ undercloud_user }}/ironic-python-agent.initramfs"
|
ib_repo_image_path: "/home/{{ undercloud_user }}/ironic-python-agent.initramfs"
|
||||||
initramfs_image: true
|
initramfs_image: true
|
||||||
libguestfs_mode: false
|
libguestfs_mode: false
|
||||||
when: compressed_gating_repo is defined
|
when: compressed_gating_repo is defined and not to_build|bool
|
||||||
|
@ -1,51 +1,6 @@
|
|||||||
---
|
---
|
||||||
- name: Decide whether we need to build images
|
- name: Decide whether we need to build images
|
||||||
hosts: undercloud
|
hosts: undercloud
|
||||||
vars:
|
|
||||||
# We always want to build images when we have changes in this
|
|
||||||
# list becuase these repos can affect the image building itelf
|
|
||||||
# This list is overridable via the "always_build_list" var if
|
|
||||||
# needed.
|
|
||||||
default_projects_need_build_list:
|
|
||||||
- diskimage-builder
|
|
||||||
- tripleo-image-elements
|
|
||||||
- tripleo-puppet-elements
|
|
||||||
- instack-undercloud
|
|
||||||
- python-tripleoclient
|
|
||||||
- tripleo-common
|
|
||||||
tasks:
|
tasks:
|
||||||
# The next two tasks make the list of ZUUL_CHANGES look like our build list
|
- include_role:
|
||||||
# after we cleanup the extra stuff there, we can just intersect the two
|
name: check-to-build-or-not-to-build
|
||||||
# lists in order to match.
|
|
||||||
- name: Cleanup front of ZUUL_CHANGES
|
|
||||||
set_fact:
|
|
||||||
zuul_changes: "{{ lookup('env', 'ZUUL_CHANGES')|regex_replace('openstack/', '') }}"
|
|
||||||
|
|
||||||
- name: Cleanup end of ZUUL_CHANGES
|
|
||||||
set_fact:
|
|
||||||
zuul_changes: "{{ zuul_changes|regex_replace(':[a-z]*:refs/changes/\\d{2}/\\d+/\\d+','') }}"
|
|
||||||
|
|
||||||
- name: Split zuul_changes to a list
|
|
||||||
set_fact:
|
|
||||||
zuul_changes: "{{ zuul_changes.split('^') }}"
|
|
||||||
|
|
||||||
- name: compare zuul_changes list to our always_build_list
|
|
||||||
set_fact:
|
|
||||||
projects_need_build: "{{ zuul_changes | intersect(projects_need_build_list|default(default_projects_need_build_list)) }}"
|
|
||||||
|
|
||||||
- name: Default to using cached images
|
|
||||||
set_fact:
|
|
||||||
to_build: false
|
|
||||||
cacheable: true
|
|
||||||
|
|
||||||
- name: Build images when we have a change in the always build list
|
|
||||||
set_fact:
|
|
||||||
to_build: true
|
|
||||||
cacheable: true
|
|
||||||
when: projects_need_build != []
|
|
||||||
|
|
||||||
- name: Always build images in the periodic jobs
|
|
||||||
set_fact:
|
|
||||||
to_build: true
|
|
||||||
cacheable: true
|
|
||||||
when: lookup('env', 'PERIODIC')|default('0')|int == 1
|
|
||||||
|
32
roles/check-to-build-or-not-to-build/README.md
Normal file
32
roles/check-to-build-or-not-to-build/README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
check-to-build-or-not-to-build
|
||||||
|
==============================
|
||||||
|
|
||||||
|
An Ansible role created from the original playbook
|
||||||
|
to decide whether we need to build images. The role
|
||||||
|
was created to allow this functionality to run on
|
||||||
|
hosts other than the undercloud.
|
||||||
|
|
||||||
|
This output of this role is a to_build variable,
|
||||||
|
that is set to true or false to make image build and
|
||||||
|
other related workflow decisions in later steps.
|
||||||
|
|
||||||
|
Role Variables:
|
||||||
|
---------------
|
||||||
|
* ` default_projects_need_build_list` -- list of repos can affect the image building itelf
|
||||||
|
|
||||||
|
Example Usage
|
||||||
|
-------------
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
- name: Decide whether we need to build images
|
||||||
|
hosts: undercloud
|
||||||
|
tasks:
|
||||||
|
- include_role:
|
||||||
|
name: check-to-build-or-not-to-build
|
||||||
|
```
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
Apache
|
8
roles/check-to-build-or-not-to-build/defaults/main.yml
Normal file
8
roles/check-to-build-or-not-to-build/defaults/main.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
default_projects_need_build_list:
|
||||||
|
- diskimage-builder
|
||||||
|
- tripleo-image-elements
|
||||||
|
- tripleo-puppet-elements
|
||||||
|
- instack-undercloud
|
||||||
|
- python-tripleoclient
|
||||||
|
- tripleo-common
|
36
roles/check-to-build-or-not-to-build/tasks/main.yml
Normal file
36
roles/check-to-build-or-not-to-build/tasks/main.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
# The next two tasks make the list of ZUUL_CHANGES look like our build list
|
||||||
|
# after we cleanup the extra stuff there, we can just intersect the two
|
||||||
|
# lists in order to match.
|
||||||
|
- name: Cleanup front of ZUUL_CHANGES
|
||||||
|
set_fact:
|
||||||
|
zuul_changes: "{{ lookup('env', 'ZUUL_CHANGES')|regex_replace('openstack/', '') }}"
|
||||||
|
|
||||||
|
- name: Cleanup end of ZUUL_CHANGES
|
||||||
|
set_fact:
|
||||||
|
zuul_changes: "{{ zuul_changes|regex_replace(':[a-z]*:refs/changes/\\d{2}/\\d+/\\d+','') }}"
|
||||||
|
|
||||||
|
- name: Split zuul_changes to a list
|
||||||
|
set_fact:
|
||||||
|
zuul_changes: "{{ zuul_changes.split('^') }}"
|
||||||
|
|
||||||
|
- name: compare zuul_changes list to our always_build_list
|
||||||
|
set_fact:
|
||||||
|
projects_need_build: "{{ zuul_changes | intersect(projects_need_build_list|default(default_projects_need_build_list)) }}"
|
||||||
|
|
||||||
|
- name: Default to using cached images
|
||||||
|
set_fact:
|
||||||
|
to_build: false
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
|
- name: Build images when we have a change in the always build list
|
||||||
|
set_fact:
|
||||||
|
to_build: true
|
||||||
|
cacheable: true
|
||||||
|
when: projects_need_build != []
|
||||||
|
|
||||||
|
- name: Always build images in the periodic jobs
|
||||||
|
set_fact:
|
||||||
|
to_build: true
|
||||||
|
cacheable: true
|
||||||
|
when: lookup('env', 'PERIODIC')|default('0')|int == 1
|
Loading…
Reference in New Issue
Block a user