aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKien Nguyen <kiennt65@viettel.com.vn>2018-11-05 11:24:55 +0700
committerGaƫtan Trellu <gaetan.trellu@incloudus.com>2019-07-11 19:05:13 -0400
commitce74eb0d7b4c01e1fcdb432e5605835caac6c1d0 (patch)
treecdee50613c90fd843585c2060ee34e4a16071000
parent008aa957f27b26caff3be8b18110e71cdaf70772 (diff)
downloadkolla-ce74eb0d7b4c01e1fcdb432e5605835caac6c1d0.tar.gz
kolla-ce74eb0d7b4c01e1fcdb432e5605835caac6c1d0.zip
Add Masakari containers
Masakari provides Instances High Availability Service for OpenStack clouds by automatically recovering failed Instances. Change-Id: I279d6b43f8e4d4e30b39deb607823ceca272a4b8 Implements: blueprint masakari-support
-rw-r--r--README.rst1
-rw-r--r--docker/horizon/extend_start.sh15
-rw-r--r--docker/masakari/masakari-api/Dockerfile.j217
-rwxr-xr-xdocker/masakari/masakari-api/extend_start.sh19
-rw-r--r--docker/masakari/masakari-base/Dockerfile.j272
-rwxr-xr-xdocker/masakari/masakari-base/extend_start.sh10
-rw-r--r--docker/masakari/masakari-engine/Dockerfile.j216
-rw-r--r--docker/masakari/masakari-monitors/Dockerfile.j258
-rw-r--r--docker/masakari/masakari-monitors/masakari_monitors_sudoers2
-rwxr-xr-xkolla/common/config.py17
-rwxr-xr-xkolla/image/build.py1
-rw-r--r--releasenotes/notes/masakari-a047b0387a474186.yaml5
12 files changed, 233 insertions, 0 deletions
diff --git a/README.rst b/README.rst
index 52daa1a76..e6b69946a 100644
--- a/README.rst
+++ b/README.rst
@@ -94,6 +94,7 @@ Kolla provides images to deploy the following OpenStack projects:
- `Kuryr <https://docs.openstack.org/kuryr/latest/>`__
- `Magnum <https://docs.openstack.org/magnum/latest/>`__
- `Manila <https://docs.openstack.org/manila/latest/>`__
+- `Masakari <https://docs.openstack.org/masakari/latest/>`__
- `Mistral <https://docs.openstack.org/mistral/latest/>`__
- `Monasca <https://docs.openstack.org/monasca-api/latest/>`__
- `Murano <https://docs.openstack.org/murano/latest/>`__
diff --git a/docker/horizon/extend_start.sh b/docker/horizon/extend_start.sh
index f7d4c4dea..857bdfdfd 100644
--- a/docker/horizon/extend_start.sh
+++ b/docker/horizon/extend_start.sh
@@ -157,6 +157,20 @@ function config_manila_ui {
done
}
+function config_masakari_dashboard {
+ for file in ${SITE_PACKAGES}/masakaridashboard/local/enabled/_*[^__].py; do
+ config_dashboard "${ENABLE_MASAKARI}" \
+ "${SITE_PACKAGES}/masakaridashboard/local/enabled/${file##*/}" \
+ "${SITE_PACKAGES}/openstack_dashboard/local/enabled/${file##*/}"
+ done
+ config_dashboard "${ENABLE_MASAKARI}"\
+ "${SITE_PACKAGES}/masakaridashboard/conf/masakari_policy.json" \
+ "${SITE_PACKAGES}/openstack_dashboard/conf/masakari_policy.json"
+ config_dashboard "${ENABLE_MASAKARI}"\
+ "${SITE_PACKAGES}/masakaridashboard/local/local_settings.d/_50_masakari.py" \
+ "${SITE_PACKAGES}/openstack_dashboard/local/local_settings.d/_50_masakari.py"
+}
+
function config_murano_dashboard {
for file in ${SITE_PACKAGES}/muranodashboard/local/enabled/_*[^__].py; do
config_dashboard "${ENABLE_MURANO}" \
@@ -325,6 +339,7 @@ config_ironic_dashboard
config_karbor_dashboard
config_magnum_dashboard
config_manila_ui
+config_masakari_dashboard
config_mistral_dashboard
config_murano_dashboard
config_neutron_vpnaas_dashboard
diff --git a/docker/masakari/masakari-api/Dockerfile.j2 b/docker/masakari/masakari-api/Dockerfile.j2
new file mode 100644
index 000000000..28b836e1c
--- /dev/null
+++ b/docker/masakari/masakari-api/Dockerfile.j2
@@ -0,0 +1,17 @@
+FROM {{ namespace }}/{{ image_prefix }}masakari-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block masakari_api_header %}{% endblock %}
+
+{% if install_type == 'binary' %}
+
+RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
+ && /bin/false
+
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_masakari_extend_start
+RUN chmod 755 /usr/local/bin/kolla_masakari_extend_start
+
+{% block masakari_api_footer %}{% endblock %}
+{% block footer %}{% endblock %}
diff --git a/docker/masakari/masakari-api/extend_start.sh b/docker/masakari/masakari-api/extend_start.sh
new file mode 100755
index 000000000..1c372881d
--- /dev/null
+++ b/docker/masakari/masakari-api/extend_start.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+# NOTE(pbourke): httpd will not clean up after itself in some cases which
+# results in the container not being able to restart. (bug #1489676, 1557036)
+if [[ "${KOLLA_BASE_DISTRO}" =~ debian|ubuntu ]]; then
+ # Loading Apache2 ENV variables
+ . /etc/apache2/envvars
+ install -d /var/run/apache2/
+ rm -rf /var/run/apache2/*
+else
+ rm -rf /var/run/httpd/* /run/httpd/* /tmp/httpd*
+fi
+
+# 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
+ masakari-manage db sync
+ exit 0
+fi
diff --git a/docker/masakari/masakari-base/Dockerfile.j2 b/docker/masakari/masakari-base/Dockerfile.j2
new file mode 100644
index 000000000..65b944e6f
--- /dev/null
+++ b/docker/masakari/masakari-base/Dockerfile.j2
@@ -0,0 +1,72 @@
+FROM {{ namespace }}/{{ image_prefix }}openstack-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block masakari_base_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='masakari') }}
+
+{% if install_type == 'binary' %}
+
+RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
+ && /bin/false
+
+{% elif install_type == 'source' %}
+
+ {% if base_package_type == 'rpm' %}
+
+ {% set masakari_base_packages = [
+ 'httpd',
+ 'mod_ssl',
+ ] %}
+ {% if distro_python_version.startswith('3') %}
+ {% set masakari_base_packages = masakari_base_packages + [
+ 'python3-ldappool',
+ 'python3-mod_wsgi'
+ ] %}
+ {% else %}
+ {% set masakari_base_packages = masakari_base_packages + [
+ 'mod_wsgi',
+ 'python2-ldappool'
+ ] %}
+ {% endif %}
+
+{{ macros.install_packages(masakari_base_packages | customizable("packages")) }}
+RUN mkdir -p /var/www/cgi-bin/masakari \
+ && 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_package_type == 'deb' %}
+
+ {% set masakari_base_packages = [
+ 'apache2',
+ 'libapache2-mod-wsgi-py3',
+ 'python3-ldappool'
+ ] %}
+
+{{ macros.install_packages(masakari_base_packages | customizable("packages")) }}
+RUN mkdir -p /var/www/cgi-bin/masakari \
+ && echo > /etc/apache2/ports.conf
+ {% endif %}
+
+ADD masakari-base-archive /masakari-base-source
+
+{% set masakari_base_pip_packages = [
+ '/masakari'
+] %}
+
+RUN ln -s masakari-base-source/* masakari \
+ && {{ macros.install_pip(masakari_base_pip_packages | customizable("pip_packages")) }} \
+ && mkdir -p /etc/masakari /var/www/cgi-bin/masakari \
+ && chown -R masakari: /etc/masakari /var/www/cgi-bin/masakari
+
+{% endif %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+
+RUN touch /usr/local/bin/kolla_masakari_extend_start \
+ && chmod 755 /usr/local/bin/kolla_extend_start /usr/local/bin/kolla_masakari_extend_start \
+ && chmod 755 /var/www/cgi-bin/masakari
+
+{% block masakari_base_footer %}{% endblock %}
diff --git a/docker/masakari/masakari-base/extend_start.sh b/docker/masakari/masakari-base/extend_start.sh
new file mode 100755
index 000000000..d4fdcc86a
--- /dev/null
+++ b/docker/masakari/masakari-base/extend_start.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [[ ! -d "/var/log/kolla/masakari" ]]; then
+ mkdir -p /var/log/kolla/masakari
+fi
+if [[ $(stat -c %a /var/log/kolla/masakari) != "755" ]]; then
+ chmod 755 /var/log/kolla/masakari
+fi
+
+. /usr/local/bin/kolla_masakari_extend_start
diff --git a/docker/masakari/masakari-engine/Dockerfile.j2 b/docker/masakari/masakari-engine/Dockerfile.j2
new file mode 100644
index 000000000..4de51bcf6
--- /dev/null
+++ b/docker/masakari/masakari-engine/Dockerfile.j2
@@ -0,0 +1,16 @@
+FROM {{ namespace }}/{{ image_prefix }}masakari-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block masakari_engine_header %}{% endblock %}
+
+{% if install_type == 'binary' %}
+
+RUN echo '{{ install_type }} not yet available for {{ base_distro }}' \
+ && /bin/false
+
+{% endif %}
+
+{% block masakari_engine_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER masakari
diff --git a/docker/masakari/masakari-monitors/Dockerfile.j2 b/docker/masakari/masakari-monitors/Dockerfile.j2
new file mode 100644
index 000000000..8ed265b17
--- /dev/null
+++ b/docker/masakari/masakari-monitors/Dockerfile.j2
@@ -0,0 +1,58 @@
+FROM {{ namespace }}/{{ image_prefix }}masakari-base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block masakari_monitors_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='masakari') }}
+
+{% 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 masakari_monitors_packages = [
+ 'libvirt-devel',
+ 'pacemaker-cli',
+ 'tcpdump',
+ ] %}
+
+ {% elif base_distro in ['debian', 'ubuntu'] %}
+
+ {% set masakari_monitors_packages = [
+ 'libvirt-dev',
+ 'pacemaker-cli-utils',
+ 'tcpdump',
+ ] %}
+
+ {% endif %}
+
+{{ macros.install_packages(masakari_monitors_packages | customizable("packages")) }}
+
+ADD masakari-monitors-archive /masakari-monitors-source
+
+{% set masakari_monitors_pip_packages = [
+ '/masakari-monitors'
+] %}
+
+RUN ln -s masakari-monitors-source/* masakari-monitors \
+ && {{ macros.install_pip(masakari_monitors_pip_packages | customizable("pip_packages")) }} \
+ && mkdir -p /etc/masakari-monitors \
+ && chown -R masakari: /etc/masakari-monitors
+
+COPY masakari_monitors_sudoers /etc/sudoers.d/kolla_masakari_monitors_sudoers
+
+RUN chmod 750 /etc/sudoers.d \
+ && chmod 640 /etc/sudoers.d/kolla_masakari_monitors_sudoers
+
+{% endif %}
+
+{% block masakari_monitors_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER masakari
diff --git a/docker/masakari/masakari-monitors/masakari_monitors_sudoers b/docker/masakari/masakari-monitors/masakari_monitors_sudoers
new file mode 100644
index 000000000..4778f7e43
--- /dev/null
+++ b/docker/masakari/masakari-monitors/masakari_monitors_sudoers
@@ -0,0 +1,2 @@
+masakari ALL=(root) NOPASSWD: /var/lib/kolla/venv/bin/privsep-helper
+masakari ALL=(root) NOPASSWD: /usr/sbin/tcpdump *
diff --git a/kolla/common/config.py b/kolla/common/config.py
index fdb4655e8..87f976f27 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -109,6 +109,7 @@ _PROFILE_OPTS = [
'kuryr',
'magnum',
'manila',
+ 'masakari',
'mistral',
'monasca',
'murano',
@@ -423,6 +424,10 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/manila-ui/'
'manila-ui-master.tar.gz')},
+ 'horizon-plugin-masakari-dashboard': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/masakari-dashboard/'
+ 'masakari-dashboard-master.tar.gz')},
'horizon-plugin-mistral-dashboard': {
'type': 'url',
'location': ('$tarballs_base/mistral-dashboard/'
@@ -519,6 +524,14 @@ SOURCES = {
'type': 'url',
'location': ('$tarballs_base/manila/'
'manila-master.tar.gz')},
+ 'masakari-base': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/masakari/'
+ 'masakari-master.tar.gz')},
+ 'masakari-monitors': {
+ 'type': 'url',
+ 'location': ('$tarballs_base/masakari-monitors/'
+ 'masakari-monitors-master.tar.gz')},
'mistral-base': {
'type': 'url',
'location': ('$tarballs_base/mistral/'
@@ -1177,6 +1190,10 @@ USERS = {
'qinling-user': {
'uid': 42484,
'gid': 42484,
+ },
+ 'masakari-user': {
+ 'uid': 42485,
+ 'gid': 42485,
}
}
diff --git a/kolla/image/build.py b/kolla/image/build.py
index 33051b31f..aa205709c 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -102,6 +102,7 @@ SKIPPED_IMAGES = {
"freezer-base",
"karbor-base",
"kuryr-base",
+ "masakari-base",
"monasca-base",
"monasca-thresh",
"nova-mksproxy",
diff --git a/releasenotes/notes/masakari-a047b0387a474186.yaml b/releasenotes/notes/masakari-a047b0387a474186.yaml
new file mode 100644
index 000000000..0e334677b
--- /dev/null
+++ b/releasenotes/notes/masakari-a047b0387a474186.yaml
@@ -0,0 +1,5 @@
+---
+features:
+ - Add Masakari images. Masakari provides Instances
+ High Availability Service for OpenStack clouds by
+ automatically recovering failed Instances.