diff --git a/README.rst b/README.rst index 1e57d460a3..994a44a98f 100644 --- a/README.rst +++ b/README.rst @@ -80,6 +80,7 @@ Kolla provides images to deploy the following OpenStack projects: - `Cinder `__ - `CloudKitty `__ - `Congress `__ +- `Cyborg `__ - `Designate `__ - `Dragonflow `__ - `EC2-API `__ diff --git a/docker/cyborg/cyborg-agent/Dockerfile.j2 b/docker/cyborg/cyborg-agent/Dockerfile.j2 new file mode 100644 index 0000000000..398e6b2983 --- /dev/null +++ b/docker/cyborg/cyborg-agent/Dockerfile.j2 @@ -0,0 +1,46 @@ +FROM {{ namespace }}/{{ image_prefix }}cyborg-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block cyborg_agent_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% elif install_type == 'source' %} + +{% set cyborg_agent_pip_packages = [ + 'cursive' +] %} + +{% endif %} + +RUN {{ macros.install_pip(cyborg_agent_pip_packages | customizable("pip_packages")) }} + +{% if base_package_type == 'rpm' %} + +ENV opae_libs_rpm_url=https://github.com/OPAE/opae-sdk/releases/download/1.1.0-2/opae-libs-1.1.0-2.x86_64.rpm +ENV opae_libs_rpm_sha1sum=3a10f80d64be46bb8d99ba88548646d0e368a06e + +ENV opae_devel_rpm_url=https://github.com/OPAE/opae-sdk/releases/download/1.1.0-2/opae-devel-1.1.0-2.x86_64.rpm +ENV opae_devel_rpm_sha1sum=461356b987b41843f60123d66195620bf1e4e28e + +RUN curl -sSL -o /tmp/opae-libs.rpm ${opae_libs_rpm_url} \ + && echo "${opae_libs_rpm_sha1sum} /tmp/opae-libs.rpm" | sha1sum -c \ + && curl -sSL -o /tmp/opae-devel.rpm ${opae_devel_rpm_url} \ + && echo "${opae_devel_rpm_sha1sum} /tmp/opae-devel.rpm" | sha1sum -c \ + && yum -y install /tmp/opae-libs.rpm /tmp/opae-devel.rpm \ + && rm -f /tmp/opae-libs.rpm /tmp/opae-devel.rpm + +# NOTE(Bai Yongjun) Required packages are only supported Ubuntu16.04 +# Please check the details:https://github.com/OPAE/opae-sdk/releases/tag/1.1.0-2 +{% elif base_package_type == 'deb' %} + +RUN echo 'No supported packages' \ + && /bin/false + +{% endif %} +{% block cyborg_agent_footer %}{% endblock %} +{% block footer %}{% endblock %} diff --git a/docker/cyborg/cyborg-api/Dockerfile.j2 b/docker/cyborg/cyborg-api/Dockerfile.j2 new file mode 100644 index 0000000000..0d18572205 --- /dev/null +++ b/docker/cyborg/cyborg-api/Dockerfile.j2 @@ -0,0 +1,42 @@ +FROM {{ namespace }}/{{ image_prefix }}cyborg-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block cyborg_api_header %}{% endblock %} +{% import "macros.j2" as macros with context %} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% elif install_type == 'source' %} + {% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} + {% set cyborg_api_packages = [ + 'mod_ssl', + 'mod_wsgi' + ] %} + {% elif base_distro in ['debian', 'ubuntu'] %} + {% set cyborg_api_packages = [ + 'apache2', + 'libapache2-mod-wsgi' + ] %} + {% endif %} + +{% endif %} + +{{ macros.install_packages(cyborg_api_packages | customizable("packages")) }} + +{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %} +RUN sed -i -r 's,^(Listen 80),#\1,' /etc/httpd/conf/httpd.conf \ + && sed -i -r 's,^(Listen 443),#\1,' /etc/httpd/conf.d/ssl.conf + +{% elif base_distro in ['debian', 'ubuntu'] %} +RUN echo > /etc/apache2/ports.conf + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_cyborg_extend_start +RUN chmod 755 /usr/local/bin/kolla_cyborg_extend_start + +{% block cyborg_api_footer %}{% endblock %} +{% block footer %}{% endblock %} diff --git a/docker/cyborg/cyborg-api/extend_start.sh b/docker/cyborg/cyborg-api/extend_start.sh new file mode 100644 index 0000000000..a96619d932 --- /dev/null +++ b/docker/cyborg/cyborg-api/extend_start.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases +# of the KOLLA_BOOTSTRAP variable being set, including empty. +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + cyborg-dbsync + exit 0 +fi + +if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then + # Loading Apache2 ENV variables + . /etc/apache2/envvars + rm -rf /var/run/apache2/* +else + rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd* +fi diff --git a/docker/cyborg/cyborg-base/Dockerfile.j2 b/docker/cyborg/cyborg-base/Dockerfile.j2 new file mode 100644 index 0000000000..7e411b535d --- /dev/null +++ b/docker/cyborg/cyborg-base/Dockerfile.j2 @@ -0,0 +1,36 @@ +FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block cyborg_header %}{% endblock %} + +{% import "macros.j2" as macros with context %} + +{{ macros.configure_user(name='cyborg') }} + +{% if install_type == 'binary' %} + +RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \ + && /bin/false + +{% elif install_type == 'source' %} + +ADD cyborg-base-archive /cyborg-base-source + +{% set cyborg_base_pip_packages = [ + '/cyborg' +] %} + +RUN ln -s cyborg-base-source/* cyborg \ + && {{ macros.install_pip(cyborg_base_pip_packages | customizable("pip_packages")) }} + +{% endif %} + +COPY extend_start.sh /usr/local/bin/kolla_extend_start +COPY cyborg_sudoers /etc/sudoers.d/kolla_cyborg_sudoers + +RUN chmod 750 /etc/sudoers.d \ + && touch /usr/local/bin/kolla_cyborg_extend_start \ + && chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_cyborg_extend_start + +{% block cyborg_footer %}{% endblock %} +{% block footer %}{% endblock %} diff --git a/docker/cyborg/cyborg-base/cyborg_sudoers b/docker/cyborg/cyborg-base/cyborg_sudoers new file mode 100644 index 0000000000..63440026de --- /dev/null +++ b/docker/cyborg/cyborg-base/cyborg_sudoers @@ -0,0 +1 @@ +%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R cyborg\: /var/lib/cyborg/, /bin/chown -R cyborg\: /var/lib/cyborg/ diff --git a/docker/cyborg/cyborg-base/extend_start.sh b/docker/cyborg/cyborg-base/extend_start.sh new file mode 100755 index 0000000000..10a58c626b --- /dev/null +++ b/docker/cyborg/cyborg-base/extend_start.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Create log dir for Cyborg logs +CYBORG_LOG_DIR="/var/log/kolla/cyborg" +if [[ ! -d "${CYBORG_LOG_DIR}" ]]; then + mkdir -p ${CYBORG_LOG_DIR} +fi +if [[ $(stat -c %U:%G ${CYBORG_LOG_DIR}) != "cyborg:kolla" ]]; then + chown cyborg:kolla ${CYBORG_LOG_DIR} +fi +if [[ $(stat -c %a ${CYBORG_LOG_DIR}) != "755" ]]; then + chmod 755 ${CYBORG_LOG_DIR} +fi + +. /usr/local/bin/kolla_cyborg_extend_start diff --git a/docker/cyborg/cyborg-conductor/Dockerfile.j2 b/docker/cyborg/cyborg-conductor/Dockerfile.j2 new file mode 100644 index 0000000000..de0211bda5 --- /dev/null +++ b/docker/cyborg/cyborg-conductor/Dockerfile.j2 @@ -0,0 +1,7 @@ +FROM {{ namespace }}/{{ image_prefix }}cyborg-base:{{ tag }} +LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}" + +{% block cyborg_conductor_header %}{% endblock %} + +{% block cyborg_conductor_footer %}{% endblock %} +{% block footer %}{% endblock %} diff --git a/kolla/common/config.py b/kolla/common/config.py index 4f2f250d68..4946e80bae 100755 --- a/kolla/common/config.py +++ b/kolla/common/config.py @@ -338,6 +338,10 @@ SOURCES = { 'type': 'git', 'reference': 'master', 'location': ('https://github.com/pulp/crane.git')}, + 'cyborg-base': { + 'type': 'url', + 'location': ('$tarballs_base/cyborg/' + 'cyborg-master.tar.gz')}, 'designate-base': { 'type': 'url', 'location': ('$tarballs_base/designate/' @@ -1177,6 +1181,10 @@ USERS = { 'placement-user': { 'uid': 42482, 'gid': 42482, + }, + 'cyborg-user': { + 'uid': 42483, + 'gid': 42483, } } diff --git a/kolla/image/build.py b/kolla/image/build.py index 6fbe58408c..7683d7904b 100755 --- a/kolla/image/build.py +++ b/kolla/image/build.py @@ -82,6 +82,7 @@ SKIPPED_IMAGES = { "almanach-base", "bifrost-base", "blazar-base", + "cyborg-base", "dragonflow-base", "freezer-base", "karbor-base", @@ -109,6 +110,7 @@ SKIPPED_IMAGES = { "cloudkitty-base", "congress-base", "crane", + "cyborg-base", "dragonflow-base", "ec2-api", "freezer-base", @@ -136,6 +138,7 @@ SKIPPED_IMAGES = { ], 'ubuntu+source': [ "crane", + "cyborg-base", # There is no qdrouterd package for ubuntu bionic "qdrouterd", "tripleoclient", @@ -150,6 +153,7 @@ SKIPPED_IMAGES = { "cloudkitty-base", "congress-base", "crane", + "cyborg-base", "dragonflow-base", "ec2-api", "freezer-base", @@ -176,6 +180,7 @@ SKIPPED_IMAGES = { ], 'debian+source': [ "crane", + "cyborg-base", "sensu-base", "tripleoclient", "tripleo-ui" @@ -185,6 +190,7 @@ SKIPPED_IMAGES = { "bifrost-base", "blazar-base", "crane", + "cyborg-base", "dragonflow-base", "freezer-base", "karbor-base", diff --git a/releasenotes/notes/add-cyborg-images-cab2b3a24a071c38.yaml b/releasenotes/notes/add-cyborg-images-cab2b3a24a071c38.yaml new file mode 100644 index 0000000000..a1e68103fe --- /dev/null +++ b/releasenotes/notes/add-cyborg-images-cab2b3a24a071c38.yaml @@ -0,0 +1,3 @@ +--- +features: + - Cyborg Docker images are available in Kolla