diff --git a/ansible-role-requirements.yml b/ansible-role-requirements.yml
index 6629d4fdce..b03ebcd4ed 100644
--- a/ansible-role-requirements.yml
+++ b/ansible-role-requirements.yml
@@ -163,6 +163,11 @@
src: https://git.openstack.org/openstack/openstack-ansible-os_octavia
version: master
trackbranch: master
+- name: os_panko
+ scm: git
+ src: https://git.openstack.org/openstack/openstack-ansible-os_panko
+ version: master
+ trackbranch: master
- name: os_rally
scm: git
src: https://git.openstack.org/openstack/openstack-ansible-os_rally
diff --git a/deploy-guide/source/configure.rst b/deploy-guide/source/configure.rst
index 09ec363c53..d14dc6cddd 100644
--- a/deploy-guide/source/configure.rst
+++ b/deploy-guide/source/configure.rst
@@ -160,6 +160,8 @@ OpenStack service roles
- :role_docs:`os_octavia`
+- :role_docs:`os_panko`
+
- :role_docs:`os_rally`
- :role_docs:`os_sahara`
diff --git a/doc/source/contributor/role-maturity-matrix.html b/doc/source/contributor/role-maturity-matrix.html
index b8ee73dec4..6c427ec04d 100644
--- a/doc/source/contributor/role-maturity-matrix.html
+++ b/doc/source/contributor/role-maturity-matrix.html
@@ -315,6 +315,15 @@
✘ |
✘ |
+
+ os_panko |
+ Rocky |
+ Inclubated |
+ ✔ |
+ ✔ |
+ ✘ |
+ ✘ |
+
os_rally |
Newton |
@@ -475,4 +484,4 @@
pip_lock_down |
Liberty |
Newton |
-
\ No newline at end of file
+
diff --git a/etc/openstack_deploy/conf.d/panko.yml.aio b/etc/openstack_deploy/conf.d/panko.yml.aio
new file mode 100644
index 0000000000..003af0987e
--- /dev/null
+++ b/etc/openstack_deploy/conf.d/panko.yml.aio
@@ -0,0 +1,3 @@
+event-infra_hosts:
+ aio1:
+ ip: 172.29.236.100
diff --git a/etc/openstack_deploy/conf.d/panko.yml.example b/etc/openstack_deploy/conf.d/panko.yml.example
new file mode 100644
index 0000000000..9f4b98a644
--- /dev/null
+++ b/etc/openstack_deploy/conf.d/panko.yml.example
@@ -0,0 +1,8 @@
+# The infra nodes that will be running the event services
+event-infra_hosts:
+ infra1:
+ ip: 172.20.236.111
+ infra2:
+ ip: 172.20.236.112
+ infra3:
+ ip: 172.20.236.113
diff --git a/etc/openstack_deploy/env.d/aio_metal.yml.example b/etc/openstack_deploy/env.d/aio_metal.yml.example
index 67617205ff..dd0d0d07a5 100644
--- a/etc/openstack_deploy/env.d/aio_metal.yml.example
+++ b/etc/openstack_deploy/env.d/aio_metal.yml.example
@@ -90,6 +90,9 @@ container_skel:
octavia_server_container:
properties:
is_metal: true
+ panko_container:
+ properties:
+ is_metal: true
repo_container:
properties:
is_metal: true
diff --git a/etc/openstack_deploy/user_secrets.yml b/etc/openstack_deploy/user_secrets.yml
index a2246f313b..5627756bb7 100644
--- a/etc/openstack_deploy/user_secrets.yml
+++ b/etc/openstack_deploy/user_secrets.yml
@@ -270,3 +270,7 @@ congress_oslomsg_rpc_password:
# your user variables.
#congress_oslomsg_notify_password:
congress_service_password:
+
+## panko passwords
+panko_container_db_password:
+panko_service_password:
diff --git a/inventory/env.d/panko.yml b/inventory/env.d/panko.yml
new file mode 100644
index 0000000000..80e374fe26
--- /dev/null
+++ b/inventory/env.d/panko.yml
@@ -0,0 +1,36 @@
+---
+# 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.
+
+component_skel:
+ panko_api:
+ belongs_to:
+ - panko_all
+
+container_skel:
+ panko_container:
+ belongs_to:
+ - event-infra_containers
+ contains:
+ - panko_api
+ properties:
+ service_name: panko
+
+physical_skel:
+ event-infra_containers:
+ belongs_to:
+ - all_containers
+ event-infra_hosts:
+ belongs_to:
+ - hosts
+
+
diff --git a/inventory/group_vars/all/panko.yml b/inventory/group_vars/all/panko.yml
new file mode 100644
index 0000000000..27157e77d3
--- /dev/null
+++ b/inventory/group_vars/all/panko.yml
@@ -0,0 +1,15 @@
+---
+#
+# 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.
+
+panko_service_region: "{{ service_region }}"
diff --git a/inventory/group_vars/haproxy/haproxy.yml b/inventory/group_vars/haproxy/haproxy.yml
index 14ffa05084..972c6e0cad 100644
--- a/inventory/group_vars/haproxy/haproxy.yml
+++ b/inventory/group_vars/haproxy/haproxy.yml
@@ -401,3 +401,14 @@ haproxy_default_services:
haproxy_backend_options:
- tcpka
haproxy_service_enabled: "{{ (neutron_plugin_type == 'ml2.ovn') and (groups['neutron_ovn_northd'] is defined and groups['neutron_ovn_northd'] | length > 0) }}"
+ - service:
+ haproxy_service_name: panko_api
+ haproxy_backend_nodes: "{{ groups['panko_api'] | default([]) }}"
+ haproxy_ssl: "{{ haproxy_ssl }}"
+ haproxy_port: 8777
+ haproxy_balance_type: http
+ haproxy_backend_options:
+ - "forwardfor"
+ - "httpchk GET / HTTP/1.0\\r\\nUser-agent:\\ osa-haproxy-healthcheck"
+ - "httplog"
+ haproxy_service_enabled: "{{ groups['panko_all'] is defined and groups['panko_all'] | length > 0 }}"
diff --git a/inventory/group_vars/panko_all.yml b/inventory/group_vars/panko_all.yml
new file mode 100644
index 0000000000..185bfcb416
--- /dev/null
+++ b/inventory/group_vars/panko_all.yml
@@ -0,0 +1,24 @@
+---
+#
+# 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.
+
+
+panko_service_in_ldap: "{{ service_ldap_backend_enabled }}"
+panko_service_publicuri: "{{ openstack_service_publicuri_proto|default(panko_service_proto) }}://{{ external_lb_vip_address }}:{{ panko_service_port }}"
+
+# Ensure that the package state matches the global setting
+panko_package_state: "{{ package_state }}"
+
+# venv fetch configuration
+panko_venv_tag: "{{ venv_tag }}"
+panko_venv_download_url: "{{ venv_base_download_url }}/panko-{{ openstack_release }}-{{ ansible_architecture | lower }}.tgz"
diff --git a/inventory/inventory.ini b/inventory/inventory.ini
index 3e913e251a..41e843b15f 100644
--- a/inventory/inventory.ini
+++ b/inventory/inventory.ini
@@ -197,6 +197,9 @@ nova_scheduler
[octavia_all]
+[panko_all:children]
+panko_api
+
[rsyslog_all]
[sahara_all:children]
diff --git a/playbooks/defaults/repo_packages/openstack_services.yml b/playbooks/defaults/repo_packages/openstack_services.yml
index 26628fa21e..2a5fe4f9c8 100644
--- a/playbooks/defaults/repo_packages/openstack_services.yml
+++ b/playbooks/defaults/repo_packages/openstack_services.yml
@@ -288,12 +288,20 @@ octavia_git_project_group: octavia_all
octavia_git_track_branch: master
+## Panko service
+panko_git_repo: https://git.openstack.org/openstack/panko
+panko_git_install_branch: 91f809625560d770f39299f782eff2b56ec84874 # HEAD as of 23.03.2019
+panko_git_project_group: panko_all
+panko_git_track_branch: master
+
+
## Tacker service
tacker_git_repo: https://git.openstack.org/openstack/tacker
tacker_git_install_branch: 1a3c02772442a358baea762e9a67721efdd56595 # HEAD as of 23.03.2019
tacker_git_project_group: tacker_all
tacker_git_track_branch: master
+
## Congress service
congress_git_repo: https://git.openstack.org/openstack/congress
congress_git_install_branch: 030eed8c5519d44a69b3b458cf5169086852ae0d # HEAD as of 23.03.2019
diff --git a/playbooks/os-panko-install.yml b/playbooks/os-panko-install.yml
new file mode 100644
index 0000000000..14ad2f2ba3
--- /dev/null
+++ b/playbooks/os-panko-install.yml
@@ -0,0 +1,42 @@
+---
+#
+# 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.
+
+- name: Install the panko components
+ hosts: panko_all
+ gather_facts: "{{ osa_gather_facts | default(True) }}"
+ user: root
+ environment: "{{ deployment_environment_variables | default({}) }}"
+ vars_files:
+ - "defaults/repo_packages/openstack_services.yml"
+ - "defaults/{{ install_method }}_install.yml"
+ tags:
+ - panko
+ pre_tasks:
+ - include_tasks: "common-tasks/os-{{ container_tech | default('lxc') }}-container-setup.yml"
+ when: not is_metal
+
+ - include_tasks: common-tasks/os-log-dir-setup.yml
+ vars:
+ log_dirs:
+ - src: "/openstack/log/{{ inventory_hostname }}-panko"
+ dest: "/var/log/panko"
+ roles:
+ - role: "os_panko"
+
+ post_tasks:
+ - include_tasks: "common-tasks/rsyslog-client.yml"
+ vars:
+ rsyslog_client_log_rotate_file: panko_log_rotate
+ rsyslog_client_log_dir: "/var/log/panko"
+ rsyslog_client_config_name: "99-panko-rsyslog-client.conf"
diff --git a/playbooks/setup-openstack.yml b/playbooks/setup-openstack.yml
index 4d19711a59..dd859e4e17 100644
--- a/playbooks/setup-openstack.yml
+++ b/playbooks/setup-openstack.yml
@@ -26,6 +26,7 @@
- import_playbook: os-swift-install.yml
- import_playbook: os-ceilometer-install.yml
- import_playbook: os-aodh-install.yml
+- import_playbook: os-panko-install.yml
- import_playbook: os-ironic-install.yml
- import_playbook: os-magnum-install.yml
- import_playbook: os-trove-install.yml
diff --git a/tests/test_inventory.py b/tests/test_inventory.py
index 45d424cb55..b51d60a5fa 100644
--- a/tests/test_inventory.py
+++ b/tests/test_inventory.py
@@ -207,6 +207,9 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
'etcd_container',
'etcd_containers',
'etcd_hosts',
+ 'event-infra_all',
+ 'event-infra_containers',
+ 'event-infra_hosts',
'galera',
'galera_all',
'galera_container',
@@ -308,6 +311,9 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase):
'octavia-health-manager',
'octavia-infra_containers',
'octavia-infra_all',
+ 'panko_all',
+ 'panko_api',
+ 'panko_container',
'policy_all',
'policy_containers',
'policy_hosts',