Add support for Ubuntu bionic base image

Added support to buid shipyard and airflow images using either a xenial
or Ubuntu bionic base image.
The default base image is set to bionic.

Change-Id: I6ad4d42dede081586b3ccea87a42e250979ac106
This commit is contained in:
Ahmad Mahmoudi 2020-01-17 13:43:46 -06:00
parent 72ca47e5c9
commit 24f6a01e0b
16 changed files with 405 additions and 153 deletions

View File

@ -25,18 +25,21 @@
- airship-shipyard-chart-build-latest-htk - airship-shipyard-chart-build-latest-htk
- airship-shipyard-whitespace-lint-gate - airship-shipyard-whitespace-lint-gate
- airship-shipyard-airskiff-deployment - airship-shipyard-airskiff-deployment
- airship-shipyard-image-gate-ubuntu - airship-shipyard-image-gate-ubuntu_xenial
- airship-shipyard-image-gate-ubuntu_bionic
- airship-shipyard-image-gate-opensuse - airship-shipyard-image-gate-opensuse
gate: gate:
jobs: jobs:
- openstack-tox-pep8 - openstack-tox-pep8
- airship-shipyard-chart-build-gate - airship-shipyard-chart-build-gate
- airship-shipyard-whitespace-lint-gate - airship-shipyard-whitespace-lint-gate
- airship-shipyard-image-gate-ubuntu - airship-shipyard-image-gate-ubuntu_xenial
- airship-shipyard-image-gate-ubuntu_bionic
- airship-shipyard-image-gate-opensuse - airship-shipyard-image-gate-opensuse
post: post:
jobs: jobs:
- airship-shipyard-docker-build-post-ubuntu - airship-shipyard-docker-build-post-ubuntu_xenial
- airship-shipyard-docker-build-post-ubuntu_bionic
- airship-shipyard-docker-build-post-opensuse - airship-shipyard-docker-build-post-opensuse
- shipyard-upload-git-mirror - shipyard-upload-git-mirror
@ -44,7 +47,7 @@
name: airship-shipyard-single-node name: airship-shipyard-single-node
nodes: nodes:
- name: primary - name: primary
label: ubuntu-xenial label: ubuntu-bionic
- job: - job:
name: airship-shipyard-chart-build-gate name: airship-shipyard-chart-build-gate
@ -83,9 +86,9 @@
- ^releasenotes/.*$ - ^releasenotes/.*$
- job: - job:
name: airship-shipyard-image-gate-ubuntu name: airship-shipyard-image-gate-ubuntu_xenial
description: | description: |
Run shipyard-image build for ubuntu. Run shipyard-image build for ubuntu_xenial.
parent: airship-shipyard-image-base parent: airship-shipyard-image-base
vars: vars:
publish: false publish: false
@ -94,6 +97,18 @@
dynamic: dynamic:
patch_set: true patch_set: true
- job:
name: airship-shipyard-image-gate-ubuntu_bionic
description: |
Run shipyard-image build for ubuntu_bionic.
parent: airship-shipyard-image-base
vars:
publish: false
distro: ubuntu_bionic
tags:
dynamic:
patch_set: true
- job: - job:
name: airship-shipyard-airskiff-deployment name: airship-shipyard-airskiff-deployment
nodeset: airship-shipyard-single-node nodeset: airship-shipyard-single-node
@ -110,7 +125,7 @@
- airship/treasuremap - airship/treasuremap
vars: vars:
CLONE_SHIPYARD: false CLONE_SHIPYARD: false
irrelevant-files: irrelevant-files: &irrelevant-files
- ^.*\.rst$ - ^.*\.rst$
- ^doc/.*$ - ^doc/.*$
- ^releasenotes/.*$ - ^releasenotes/.*$
@ -128,14 +143,11 @@
patch_set: true patch_set: true
- job: - job:
name: airship-shipyard-docker-build-post-ubuntu name: airship-shipyard-docker-build-post-ubuntu_xenial
timeout: 1800 timeout: 1800
run: tools/gate/playbooks/run-image.yaml run: tools/gate/playbooks/run-image.yaml
nodeset: airship-shipyard-single-node nodeset: airship-shipyard-single-node
irrelevant-files: irrelevant-files: *irrelevant-files
- ^.*\.rst$
- ^doc/.*$
- ^releasenotes/.*$
secrets: secrets:
- airship_shipyard_quay_creds - airship_shipyard_quay_creds
vars: vars:
@ -148,6 +160,24 @@
static: static:
- latest - latest
- job:
name: airship-shipyard-docker-build-post-ubuntu_bionic
timeout: 1800
run: tools/gate/playbooks/run-image.yaml
nodeset: airship-shipyard-single-node
irrelevant-files: *irrelevant-files
secrets:
- airship_shipyard_quay_creds
vars:
publish: true
distro: ubuntu_bionic
tags:
dynamic:
branch: true
commit: true
static:
- latest
- job: - job:
name: airship-shipyard-docker-build-post-opensuse name: airship-shipyard-docker-build-post-opensuse
timeout: 1800 timeout: 1800

View File

@ -34,7 +34,7 @@ USE_PROXY ?= false
AIRFLOW_SRC ?= AIRFLOW_SRC ?=
AIRFLOW_HOME ?= AIRFLOW_HOME ?=
DISTRO_BASE_IMAGE ?= DISTRO_BASE_IMAGE ?=
DISTRO ?= ubuntu_xenial DISTRO ?= ubuntu_bionic
IMAGE:=${DOCKER_REGISTRY}/${IMAGE_PREFIX}/$(IMAGE_NAME):${IMAGE_TAG}-${DISTRO} IMAGE:=${DOCKER_REGISTRY}/${IMAGE_PREFIX}/$(IMAGE_NAME):${IMAGE_TAG}-${DISTRO}
IMAGE_DIR:=images/$(IMAGE_NAME) IMAGE_DIR:=images/$(IMAGE_NAME)

View File

@ -31,15 +31,15 @@ labels:
images: images:
tags: tags:
airflow: quay.io/airshipit/airflow:latest-ubuntu_xenial airflow: quay.io/airshipit/airflow:latest-ubuntu_bionic
shipyard: quay.io/airshipit/shipyard:latest-ubuntu_xenial shipyard: quay.io/airshipit/shipyard:latest-ubuntu_bionic
dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1 dep_check: quay.io/stackanetes/kubernetes-entrypoint:v0.3.1
shipyard_db_init: docker.io/postgres:9.5 shipyard_db_init: docker.io/postgres:9.5
shipyard_db_auxiliary: docker.io/postgres:9.5 shipyard_db_auxiliary: docker.io/postgres:9.5
shipyard_db_sync: quay.io/airshipit/shipyard:latest-ubuntu_xenial shipyard_db_sync: quay.io/airshipit/shipyard:latest-ubuntu_bionic
airflow_db_init: docker.io/postgres:9.5 airflow_db_init: docker.io/postgres:9.5
rabbit_init: docker.io/rabbitmq:3.7-management rabbit_init: docker.io/rabbitmq:3.7-management
airflow_db_sync: quay.io/airshipit/airflow:latest-ubuntu_xenial airflow_db_sync: quay.io/airshipit/airflow:latest-ubuntu_bionic
ks_user: docker.io/openstackhelm/heat:ocata ks_user: docker.io/openstackhelm/heat:ocata
ks_service: docker.io/openstackhelm/heat:ocata ks_service: docker.io/openstackhelm/heat:ocata
ks_endpoints: docker.io/openstackhelm/heat:ocata ks_endpoints: docker.io/openstackhelm/heat:ocata

View File

@ -184,7 +184,7 @@ command. In this example we will execute the ``get actions`` command::
-e 'OS_PASSWORD=password' -e 'OS_PROJECT_DOMAIN_NAME=default' \ -e 'OS_PASSWORD=password' -e 'OS_PROJECT_DOMAIN_NAME=default' \
-e 'OS_PROJECT_NAME=service' -e 'OS_USERNAME=shipyard' \ -e 'OS_PROJECT_NAME=service' -e 'OS_USERNAME=shipyard' \
-e 'OS_USER_DOMAIN_NAME=default' -e 'OS_IDENTITY_API_VERSION=3' \ -e 'OS_USER_DOMAIN_NAME=default' -e 'OS_IDENTITY_API_VERSION=3' \
--rm --net=host airshipit/shipyard:latest-ubuntu_xenial get actions --rm --net=host airshipit/shipyard:latest-ubuntu_bionic get actions
The output will resemble the following:: The output will resemble the following::
@ -208,7 +208,7 @@ Definition
Preparation Preparation
The site is assembled, racking, and wiring is completed, and the hardware is The site is assembled, racking, and wiring is completed, and the hardware is
readied for operation. The ``Genesis Node`` is preinstalled with an readied for operation. The ``Genesis Node`` is preinstalled with an
(Ubuntu 16.04) image. Airship is deployed; See (Ubuntu 18.04) image. Airship is deployed; See
:ref:`shipyard_deployment_guide` :ref:`shipyard_deployment_guide`
At this point, Airship is ready for use. This is when the Shipyard API is At this point, Airship is ready for use. This is when the Shipyard API is

View File

@ -45,7 +45,7 @@ Following parameters need to be passed as environment/shell variable to make
command: command:
DISTRO DISTRO
parameter to identify distro specific Dockerfile, ubuntu_xenial (Default) parameter to identify distro specific Dockerfile, ubuntu_bionic (Default)
DISTRO_BASE_IMAGE DISTRO_BASE_IMAGE
parameter to use different base image other than what's used in DISTRO parameter to use different base image other than what's used in DISTRO

View File

@ -0,0 +1,142 @@
# Copyright 2018 AT&T Intellectual Property. All other rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Docker image to run Airflow on Kubernetes
ARG FROM=ubuntu:18.04
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
org.opencontainers.image.url='https://airshipit.org' \
org.opencontainers.image.documentation='https://airship-shipyard.readthedocs.org' \
org.opencontainers.image.source='https://opendev.org/airship/shipyard' \
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
# Do not prompt user for choices on installation/configuration of packages
# Set port 8080 for Airflow Web
# Set port 5555 for Airflow Flower
# Set port 8793 for Airflow Worker
ENV container docker
ENV WEB_PORT 8080
ENV FLOWER_PORT 5555
ENV WORKER_PORT 8793
ENV SLUGIFY_USES_TEXT_UNIDECODE yes
# Expose port for applications
EXPOSE $WEB_PORT
EXPOSE $FLOWER_PORT
EXPOSE $WORKER_PORT
# Set ARG for usage during build
ARG AIRFLOW_HOME=/usr/local/airflow
ARG AIRFLOW_SRC="apache-airflow[crypto,celery,postgres,hive,hdfs,jdbc]==1.10.4"
ARG DEBIAN_FRONTEND=noninteractive
ARG ctx_base=src/bin
# Kubectl version
ARG KUBECTL_VERSION=1.16.2
# Needed from apache-airflow 1.10.2, since core.airflow_home config is deprecated
ENV AIRFLOW_HOME=${AIRFLOW_HOME}
RUN set -ex && \
apt-get -qq update && \
apt-get -y install \
ca-certificates \
curl \
git \
g++ \
libffi-dev \
libssl-dev \
libpq-dev \
locales \
netcat \
netbase \
python3 \
python3-setuptools \
python3-pip \
python3-dev \
python3-dateutil \
make \
--no-install-recommends \
&& python3 -m pip install -U pip \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
# Things that change mostly infrequently
RUN useradd -ms /bin/bash -d ${AIRFLOW_HOME} airflow \
&& curl -L -o /usr/local/bin/kubectl \
https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl \
&& chmod +x /usr/local/bin/kubectl
# Dependency requirements
# Note - removing snakebite (python 2 vs. 3). See:
# https://github.com/puckel/docker-airflow/issues/77
# Install Airflow directly to allow overriding source
COPY images/airflow/requirements.txt /tmp/
RUN pip3 install -r /tmp/requirements.txt --no-cache-dir \
&& pip3 install $AIRFLOW_SRC --no-cache-dir \
&& pip3 uninstall -y snakebite || true
# Copy scripts used in the container:
COPY images/airflow/script/*.sh ${AIRFLOW_HOME}/
# Copy configuration (e.g. logging config for Airflow):
COPY images/airflow/config/*.py ${AIRFLOW_HOME}/config/
# Change permissions
RUN chown -R airflow: ${AIRFLOW_HOME}
# Setting the version explicitly for PBR
ENV PBR_VERSION 0.1a1
# Shipyard
#
# Shipyard provides core functionality used by the Airflow plugins/operators
# Since Shipyard and Airflow are built together as images, this should prevent
# stale or out-of-date code between these parts.
# Shipyard requirements, source and installation
COPY ${ctx_base}/shipyard_airflow/requirements.txt /tmp/api_requirements.txt
RUN pip3 install -r /tmp/api_requirements.txt --no-cache-dir
COPY ${ctx_base}/shipyard_airflow /tmp/shipyard/
RUN cd /tmp/shipyard \
&& python3 setup.py install
# Note: The value for the dags and plugins directories that are sourced
# from the values.yaml of the Shipyard Helm chart need to align with these
# directories. If they do not, airflow will not find the intended dags and
# plugins.
#
# Note: In the case of building images using the provided Makefile, a test is
# run against the built-in dags provided with Airflow. Since there is no Helm
# chart to reconfigure the airflow.cfg with these directories, these dags and
# plugins are not known to Airflow during the image test.
#
# Copy the plugins and dags that will be used by this Airflow image:
COPY ${ctx_base}/shipyard_airflow/shipyard_airflow/plugins ${AIRFLOW_HOME}/plugins/
COPY ${ctx_base}/shipyard_airflow/shipyard_airflow/dags ${AIRFLOW_HOME}/dags/
# Set work directory
USER airflow
WORKDIR ${AIRFLOW_HOME}
# Execute entrypoint
ENTRYPOINT ["./entrypoint.sh"]

View File

@ -0,0 +1,107 @@
# Copyright 2017 AT&T Intellectual Property. All other rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
ARG FROM=ubuntu:18.04
FROM ${FROM}
LABEL org.opencontainers.image.authors='airship-discuss@lists.airshipit.org, irc://#airshipit@freenode' \
org.opencontainers.image.url='https://airshipit.org' \
org.opencontainers.image.documentation='https://airship-shipyard.readthedocs.org' \
org.opencontainers.image.source='https://opendev.org/airship/shipyard' \
org.opencontainers.image.vendor='The Airship Authors' \
org.opencontainers.image.licenses='Apache-2.0'
ENV container docker
ENV PORT 9000
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
# Setting the version explicitly for PBR
ENV PBR_VERSION 0.1a1
ARG DEBIAN_FRONTEND=noninteractive
ARG ctx_base=src/bin
# Expose port 9000 for application
EXPOSE $PORT
RUN set -ex && \
apt-get -qq update && \
apt-get -y install \
ca-certificates \
curl \
netbase \
python3-dev \
python3-setuptools \
--no-install-recommends \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
# Create shipyard user
RUN useradd -ms /bin/bash shipyard \
&& mkdir -p /home/shipyard/shipyard \
&& mkdir -p /home/shipyard/shipyard_client
# Copy entrypoint.sh to /home/shipyard
COPY ${ctx_base}/shipyard_airflow/entrypoint.sh /home/shipyard/entrypoint.sh
# Change permissions and set up directories
RUN chown -R shipyard: /home/shipyard \
&& chmod +x /home/shipyard/entrypoint.sh
# Requirements and Shipyard source
COPY ${ctx_base}/shipyard_airflow/requirements.txt /home/shipyard/api_requirements.txt
COPY ${ctx_base}/shipyard_client/requirements.txt /home/shipyard/client_requirements.txt
COPY ${ctx_base}/shipyard_client /home/shipyard/shipyard_client/
COPY ${ctx_base}/shipyard_airflow /home/shipyard/shipyard/
# Build
RUN set -ex \
&& buildDeps=' \
gcc \
git \
libssl-dev \
make \
python3-pip \
' \
&& apt-get -qq update \
&& apt-get -y install -y $buildDeps --no-install-recommends \
&& python3 -m pip install -U pip \
&& pip3 install -r /home/shipyard/client_requirements.txt --no-cache-dir \
&& cd /home/shipyard/shipyard_client \
&& python3 setup.py install \
&& pip3 install -r /home/shipyard/api_requirements.txt --no-cache-dir \
&& cd /home/shipyard/shipyard \
&& python3 setup.py install \
&& apt-get purge -y --auto-remove $buildDeps \
&& apt-get autoremove -yqq --purge \
&& apt-get clean \
&& rm -rf \
/var/lib/apt/lists/* \
/tmp/* \
/var/tmp/* \
/usr/share/man \
/usr/share/doc \
/usr/share/doc-base
# Entrypoint
ENTRYPOINT ["/home/shipyard/entrypoint.sh"]
CMD ["server"]
# Set user to shipyard
USER shipyard

View File

@ -1,73 +0,0 @@
# Shipyard
Shipyard is the directed acyclic graph controller for Kubernetes and
OpenStack control plane life cycle management, and a component of the
Airship Undercloud Platform (UCP).
Shipyard provides the entrypoint for the following aspects of the
control plane established by the Airship:
<dl>
<dt>
Designs and Secrets
</dt>
<dd>
Site designs, including the configuration of bare metal host
nodes, network design, operating systems, Kubernetes nodes,
Armada manifests, Helm charts, and any other descriptors that
define the build out of a group of servers enter the Airship via
Shipyard. Secrets, such as passwords and certificates use the
same mechanism. <br />
The designs and secrets are stored in Airship's Deckhand,
providing for version history and secure storage among other
document-based conveniences.
</dd>
<dt>
Actions
</dt>
<dd>
Interaction with the site's control plane is done via
invocation of actions in Shipyard. Each action is backed by
a workflow implemented as a directed acyclic graph (DAG) that
runs using Apache Airflow. Shipyard provides a mechanism to
monitor and control the execution of the workflow.
</dd>
</dl>
Find more documentation for Shipyard on
[Read the Docs](https://airship-shipyard.readthedocs.io)
## Integration Points:
[OpenStack Identity (Keystone)](https://github.com/openstack/keystone)
provides authentication and support for role based authorization
\
[Apache Airflow](https://airflow.incubator.apache.org/) provides the
framework and automation of workflows provided by Shipyard
\
[PostgreSQL](https://www.postgresql.org/) is used to persist
information to correlate workflows with users and history of workflow
commands
\
[Deckhand](https://github.com/openstack/airship-deckhand) supplies storage
and management of site designs and secrets
\
[Drydock](https://github.com/openstack/airship-drydock) is orchestrated by
Shipyard to perform bare metal node provisioning
\
[Promenade](https://github.com/openstack/airship-promenade) is indirectly
orchestrated by Shipyard to configure and join Kubernetes nodes
\
[Armada](https://github.com/openstack/airship-armada) is orchestrated by
Shipyard to deploy and test Kubernetes workloads
## Getting Started:
[Shipyard @ Openstack Gerrit](https://review.openstack.org/#/q/project:openstack/airship-shipyard)
\
[Helm chart](https://github.com/openstack/airship-shipyard/tree/master/charts/shipyard)
## See also:
[Airship in a Bottle](https://github.com/openstack/airship-in-a-bottle)

View File

@ -0,0 +1,82 @@
Shipyard
========
Shipyard is the directed acyclic graph controller for Kubernetes and
OpenStack control plane life cycle management, and a component of the
Airship Undercloud Platform (UCP).
Shipyard provides the entrypoint for the following aspects of the
control plane established by the Airship:
.. raw:: html
<dl>
::
<dt>
Designs and Secrets
</dt>
<dd>
Site designs, including the configuration of bare metal host
nodes, network design, operating systems, Kubernetes nodes,
Armada manifests, Helm charts, and any other descriptors that
define the build out of a group of servers enter the Airship via
Shipyard. Secrets, such as passwords and certificates use the
same mechanism. <br />
The designs and secrets are stored in Airship's Deckhand,
providing for version history and secure storage among other
document-based conveniences.
</dd>
<dt>
Actions
</dt>
<dd>
Interaction with the site's control plane is done via
invocation of actions in Shipyard. Each action is backed by
a workflow implemented as a directed acyclic graph (DAG) that
runs using Apache Airflow. Shipyard provides a mechanism to
monitor and control the execution of the workflow.
</dd>
.. raw:: html
</dl>
Find more documentation for Shipyard on `Read the
Docs <https://airship-shipyard.readthedocs.io>`__
Integration Points:
-------------------
| `OpenStack Identity
(Keystone) <https://github.com/openstack/keystone>`__ provides
authentication and support for role based authorization
| `Apache Airflow <https://airflow.incubator.apache.org/>`__ provides
the framework and automation of workflows provided by Shipyard
| `PostgreSQL <https://www.postgresql.org/>`__ is used to persist
information to correlate workflows with users and history of workflow
commands
| `Deckhand <https://github.com/openstack/airship-deckhand>`__ supplies
storage and management of site designs and secrets
| `Drydock <https://github.com/openstack/airship-drydock>`__ is
orchestrated by Shipyard to perform bare metal node provisioning
| `Promenade <https://github.com/openstack/airship-promenade>`__ is
indirectly orchestrated by Shipyard to configure and join Kubernetes
nodes
| `Armada <https://github.com/openstack/airship-armada>`__ is
orchestrated by Shipyard to deploy and test Kubernetes workloads
Getting Started:
----------------
| `Shipyard @ Openstack
Gerrit <https://review.openstack.org/#/q/project:openstack/airship-shipyard>`__
| `Helm
chart <https://github.com/openstack/airship-shipyard/tree/master/charts/shipyard>`__
See also:
---------
`Airship in a
Bottle <https://github.com/openstack/airship-in-a-bottle>`__

View File

@ -1,7 +1,7 @@
[metadata] [metadata]
name = shipyard_airflow name = shipyard_airflow
summary = Directed acyclic graph controller for Kubernetes and OpenStack control plane life cycle management summary = Directed acyclic graph controller for Kubernetes and OpenStack control plane life cycle management
description-file = README.md description-file = README.rst
author = The Airship Authors author = The Airship Authors
home-page = https://airship-shipyard.readthedocs.io/ home-page = https://airship-shipyard.readthedocs.io/

View File

@ -1,54 +0,0 @@
# -*- coding: utf-8 -*-
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
### Airflow Task State Sample Dag
"""
import airflow
from airflow import DAG
from airflow.operators import TaskStateOperator
from airflow.operators.bash_operator import BashOperator
from datetime import timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': airflow.utils.dates.days_ago(2),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=1),
}
dag = DAG('airflow_task_state',
default_args=default_args,
schedule_interval=None)
# Get Task State
t1 = TaskStateOperator(
task_id='airflow_task_state',
airflow_dag_id='openstack_cli',
airflow_task_id='endpoint_list_task',
airflow_execution_date='2017-07-02T21:30:33.519582',
dag=dag)
# Use XCOM to Retrieve Task State
t2 = BashOperator(
task_id='pull',
bash_command=("echo {{ ti.xcom_pull(task_ids='airflow_task_state',"
" key='task_state') }}"),
xcom_push=True,
dag=dag)
t2.set_upstream(t1)

View File

@ -1,5 +1,5 @@
# Testing # Testing
amqp==2.5.1 amqp==2.5.2
pytest==3.5.0 pytest==3.5.0
pytest-cov==2.5.1 pytest-cov==2.5.1
responses==0.10.2 responses==0.10.2

View File

@ -12,8 +12,18 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- hosts: primary - hosts: ubuntu-bionic
tasks: tasks:
# Stop systemd-resolved service before starting docker.
- name: stop systemd-resolved service
systemd:
state: stopped
enabled: no
masked: yes
daemon_reload: yes
name: systemd-resolved
become: yes
- name: Clone Required Repositories - name: Clone Required Repositories
shell: | shell: |
export CLONE_SHIPYARD={{ CLONE_SHIPYARD }} export CLONE_SHIPYARD={{ CLONE_SHIPYARD }}
@ -27,6 +37,12 @@
args: args:
chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}" chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}"
- name: Setup AppArmor
shell: |
./tools/deployment/airskiff/developer/015-setup-apparmor.sh
args:
chdir: "{{ zuul.projects['opendev.org/airship/treasuremap'].src_dir }}"
- name: Build Shipyard and Airflow with submitted changes - name: Build Shipyard and Airflow with submitted changes
shell: | shell: |
make make

View File

@ -63,7 +63,7 @@
- apt_key: - apt_key:
url: https://download.docker.com/linux/ubuntu/gpg url: https://download.docker.com/linux/ubuntu/gpg
- apt_repository: - apt_repository:
repo: deb http://{{ zuul_site_mirror_fqdn }}/deb-docker xenial stable repo: "deb http://{{ zuul_site_mirror_fqdn }}/deb-docker {% if distro.startswith('ubuntu_') %} {{ distro | regex_replace('ubuntu_') }} {% else %} xenial {% endif %} stable"
- apt: - apt:
name: "{{ item }}" name: "{{ item }}"
allow_unauthenticated: True allow_unauthenticated: True

View File

@ -38,7 +38,8 @@ set -e
# Source Base Docker Command # Source Base Docker Command
SHIPYARD_HOSTPATH=${SHIPYARD_HOSTPATH:-"/target"} SHIPYARD_HOSTPATH=${SHIPYARD_HOSTPATH:-"/target"}
NAMESPACE="${NAMESPACE:-ucp}" NAMESPACE="${NAMESPACE:-ucp}"
SHIPYARD_IMAGE="${SHIPYARD_IMAGE:-quay.io/airshipit/shipyard:master-ubuntu_xenial}" DISTRO="${DISTRO:-ubuntu_bionic}"
SHIPYARD_IMAGE="${SHIPYARD_IMAGE:-quay.io/airshipit/shipyard:master-${DISTRO}}"
# set default value for OS_PASSWORD if it's not set # set default value for OS_PASSWORD if it's not set
# this doesn't actually get exported to environment # this doesn't actually get exported to environment
# unless the script is sourced # unless the script is sourced

View File

@ -19,7 +19,8 @@
# before executing this script if they differ from the default values. # before executing this script if they differ from the default values.
# #
NAMESPACE="${NAMESPACE:-ucp}" NAMESPACE="${NAMESPACE:-ucp}"
SHIPYARD_IMAGE="${SHIPYARD_IMAGE:-quay.io/airshipit/shipyard:master-ubuntu_xenial}" DISTRO="${DISTRO:-ubuntu_bionic}"
SHIPYARD_IMAGE="${SHIPYARD_IMAGE:-quay.io/airshipit/shipyard:master-${DISTRO}}"
# Define Base Docker Command # Define Base Docker Command
base_docker_command=$(cat << EndOfCommand base_docker_command=$(cat << EndOfCommand