Mentions légales du service

Skip to content
Snippets Groups Projects
Commit c11f9f52 authored by Doug Szumski's avatar Doug Szumski Committed by Mark Goddard
Browse files

Support deploying the Monasca API


Deploys the Monasca API with mod_wsgi + Apache.

Co-Authored-By: default avatarMark Goddard <mark@stackhpc.com>

Partially-Implements: blueprint monasca-roles
Change-Id: I3e03762217fbef1fb0cbff6239abb109cbec226b
parent 6647ed81
No related branches found
No related tags found
No related merge requests found
Showing
with 318 additions and 4 deletions
...@@ -235,6 +235,8 @@ memcached_port: "11211" ...@@ -235,6 +235,8 @@ memcached_port: "11211"
mistral_api_port: "8989" mistral_api_port: "8989"
monasca_api_port: "8070"
mongodb_port: "27017" mongodb_port: "27017"
mongodb_web_port: "28017" mongodb_web_port: "28017"
...@@ -438,12 +440,12 @@ enable_horizon_vitrage: "{{ enable_vitrage | bool }}" ...@@ -438,12 +440,12 @@ enable_horizon_vitrage: "{{ enable_vitrage | bool }}"
enable_horizon_watcher: "{{ enable_watcher | bool }}" enable_horizon_watcher: "{{ enable_watcher | bool }}"
enable_horizon_zun: "{{ enable_zun | bool }}" enable_horizon_zun: "{{ enable_zun | bool }}"
enable_hyperv: "no" enable_hyperv: "no"
enable_influxdb: "no" enable_influxdb: "{{ enable_monasca | bool }}"
enable_ironic: "no" enable_ironic: "no"
enable_ironic_pxe_uefi: "no" enable_ironic_pxe_uefi: "no"
enable_iscsid: "{{ (enable_cinder | bool and enable_cinder_backend_iscsi | bool) or enable_ironic | bool }}" enable_iscsid: "{{ (enable_cinder | bool and enable_cinder_backend_iscsi | bool) or enable_ironic | bool }}"
enable_karbor: "no" enable_karbor: "no"
enable_kafka: "no" enable_kafka: "{{ enable_monasca | bool }}"
enable_kuryr: "no" enable_kuryr: "no"
enable_magnum: "no" enable_magnum: "no"
enable_manila: "no" enable_manila: "no"
...@@ -452,6 +454,7 @@ enable_manila_backend_hnas: "no" ...@@ -452,6 +454,7 @@ enable_manila_backend_hnas: "no"
enable_manila_backend_cephfs_native: "no" enable_manila_backend_cephfs_native: "no"
enable_manila_backend_cephfs_nfs: "no" enable_manila_backend_cephfs_nfs: "no"
enable_mistral: "no" enable_mistral: "no"
enable_monasca: "no"
enable_mongodb: "no" enable_mongodb: "no"
enable_multipathd: "no" enable_multipathd: "no"
enable_murano: "no" enable_murano: "no"
......
...@@ -100,6 +100,9 @@ control ...@@ -100,6 +100,9 @@ control
[qdrouterd:children] [qdrouterd:children]
control control
[monasca:children]
monitoring
[mongodb:children] [mongodb:children]
control control
...@@ -433,6 +436,10 @@ murano ...@@ -433,6 +436,10 @@ murano
[murano-engine:children] [murano-engine:children]
murano murano
# Monasca
[monasca-api:children]
monasca
# Ironic # Ironic
[ironic-api:children] [ironic-api:children]
ironic ironic
......
...@@ -122,6 +122,9 @@ control ...@@ -122,6 +122,9 @@ control
[qdrouterd:children] [qdrouterd:children]
control control
[monasca:children]
monitoring
[mongodb:children] [mongodb:children]
control control
...@@ -442,6 +445,10 @@ murano ...@@ -442,6 +445,10 @@ murano
[murano-engine:children] [murano-engine:children]
murano murano
# Monasca
[monasca-api:children]
monasca
# Ironic # Ironic
[ironic-api:children] [ironic-api:children]
ironic ironic
......
...@@ -204,6 +204,7 @@ ...@@ -204,6 +204,7 @@
- { name: "manila", enabled: "{{ enable_manila }}" } - { name: "manila", enabled: "{{ enable_manila }}" }
- { name: "mariadb", enabled: "{{ enable_mariadb }}" } - { name: "mariadb", enabled: "{{ enable_mariadb }}" }
- { name: "mistral", enabled: "{{ enable_mistral }}" } - { name: "mistral", enabled: "{{ enable_mistral }}" }
- { name: "monasca", enabled: "{{ enable_monasca }}" }
- { name: "mongodb", enabled: "{{ enable_mongodb }}" } - { name: "mongodb", enabled: "{{ enable_mongodb }}" }
- { name: "murano", enabled: "{{ enable_murano }}" } - { name: "murano", enabled: "{{ enable_murano }}" }
- { name: "neutron", enabled: "{{ enable_neutron }}" } - { name: "neutron", enabled: "{{ enable_neutron }}" }
......
<match kolla.var.log.kolla.*.*.log> <match kolla.var.log.kolla.*.*.log>
@type rewrite_tag_filter @type rewrite_tag_filter
capitalize_regex_backreference yes capitalize_regex_backreference yes
rewriterule1 programname ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|placement-api-access|panko-api-access)$ apache_access rewriterule1 programname ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|placement-api-access|panko-api-access)$ apache_access
rewriterule2 programname ^(aodh_wsgi_access|barbican-api|zun_api_wsgi_access|vitrage_wsgi_access)$ wsgi_access rewriterule2 programname ^(aodh_wsgi_access|barbican-api|zun_api_wsgi_access|vitrage_wsgi_access)$ wsgi_access
rewriterule3 programname ^(nova-api|nova-compute|nova-compute-ironic|nova-conductor|nova-consoleauth|nova-manage|nova-novncproxy|nova-scheduler|nova-placement-api|placement-api|privsep-helper)$ openstack_python rewriterule3 programname ^(nova-api|nova-compute|nova-compute-ironic|nova-conductor|nova-consoleauth|nova-manage|nova-novncproxy|nova-scheduler|nova-placement-api|placement-api|privsep-helper)$ openstack_python
rewriterule4 programname ^(sahara-api|sahara-engine)$ openstack_python rewriterule4 programname ^(sahara-api|sahara-engine)$ openstack_python
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
capitalize_regex_backreference yes capitalize_regex_backreference yes
<rule> <rule>
key programname key programname
pattern ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|placement-api-access|panko-api-access)$ pattern ^(cinder-api-access|cloudkitty-api-access|gnocchi-api-access|horizon-access|keystone-apache-admin-access|keystone-apache-public-access|monasca-api-access|placement-api-access|panko-api-access)$
tag apache_access tag apache_access
</rule> </rule>
<rule> <rule>
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
( 'magnum', enable_magnum ), ( 'magnum', enable_magnum ),
( 'manila', enable_manila ), ( 'manila', enable_manila ),
( 'mistral', enable_mistral ), ( 'mistral', enable_mistral ),
( 'monasca', enable_monasca ),
( 'mongodb', enable_mongodb ), ( 'mongodb', enable_mongodb ),
( 'murano', enable_murano ), ( 'murano', enable_murano ),
( 'neutron', enable_neutron ), ( 'neutron', enable_neutron ),
......
"/var/log/kolla/monasca/*.log"
{
}
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
( 'manila', enable_manila ), ( 'manila', enable_manila ),
( 'mariadb', enable_mariadb ), ( 'mariadb', enable_mariadb ),
( 'mistral', enable_mistral ), ( 'mistral', enable_mistral ),
( 'monasca', enable_monasca ),
( 'mongodb', enable_mongodb ), ( 'mongodb', enable_mongodb ),
( 'murano', enable_murano ), ( 'murano', enable_murano ),
( 'neutron', enable_neutron ), ( 'neutron', enable_neutron ),
......
...@@ -167,6 +167,25 @@ listen influxdb_http ...@@ -167,6 +167,25 @@ listen influxdb_http
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% if enable_monasca | bool %}
listen monasca_api_internal
bind {{ kolla_internal_vip_address }}:{{ monasca_api_port }}
http-request del-header X-Forwarded-Proto if { ssl_fc }
{% for host in groups['monasca-api'] %}
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ monasca_api_port }} check inter 2000 rise 2 fall 5
{% endfor %}
{% if haproxy_enable_external_vip | bool %}
listen monasca_api_external
bind {{ kolla_external_vip_address }}:{{ monasca_api_port }} {{ tls_bind_info }}
http-request del-header X-Forwarded-Proto if { ssl_fc }
http-request set-header X-Forwarded-Proto https if { ssl_fc }
{% for host in groups['monasca-api'] %}
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ monasca_api_port }} check inter 2000 rise 2 fall 5
{% endfor %}
{% endif %}
{% endif %}
{% if enable_nova | bool %} {% if enable_nova | bool %}
listen nova_api listen nova_api
bind {{ kolla_internal_vip_address }}:{{ nova_api_port }} bind {{ kolla_internal_vip_address }}:{{ nova_api_port }}
......
---
monasca_services:
monasca-api:
container_name: monasca_api
group: monasca-api
enabled: true
image: "{{ monasca_api_image_full }}"
volumes:
- "{{ node_config_directory }}/monasca-api/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "kolla_logs:/var/log/kolla"
####################
# Databases
####################
monasca_database_name: "monasca"
monasca_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}monasca{% endif %}"
monasca_database_address: "{{ database_address }}:{{ database_port }}"
monasca_influxdb_name: "monasca"
monasca_influxdb_address: "{{ kolla_internal_fqdn }}"
monasca_influxdb_http_port: "{{ influxdb_http_port }}"
####################
# Monasca
####################
monasca_kafka: "{% for host in groups['kafka'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ kafka_port }}{% if not loop.last %},{% endif %}{% endfor %}"
monasca_memcached_servers: "{% for host in groups['memcached'] %}{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}"
####################
# Docker
####################
monasca_install_type: "{{ kolla_install_type }}"
monasca_tag: "{{ openstack_release }}"
monasca_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ monasca_install_type }}-monasca-api"
monasca_api_tag: "{{ monasca_tag }}"
monasca_api_image_full: "{{ monasca_api_image }}:{{ monasca_api_tag }}"
####################
# OpenStack
####################
monasca_openstack_auth: "{{ openstack_auth }}"
monasca_keystone_user: "monasca"
monasca_default_authorized_roles:
- admin
monasca_read_only_authorized_roles:
- monasca-read-only-user
monasca_agent_authorized_roles:
- agent
monasca_delegate_authorized_roles:
- admin
monasca_api_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_api_port }}/v2.0"
monasca_api_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ monasca_api_port }}/v2.0"
monasca_api_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn }}:{{ monasca_api_port }}/v2.0"
monasca_logging_debug: "{{ openstack_logging_debug }}"
---
- name: Restart monasca-api container
vars:
service_name: "monasca-api"
service: "{{ monasca_services[service_name] }}"
config_json: "{{ monasca_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
monasca_api_container: "{{ check_monasca_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
kolla_docker:
action: "recreate_or_restart_container"
common_options: "{{ docker_common_options }}"
name: "{{ service.container_name }}"
image: "{{ service.image }}"
volumes: "{{ service.volumes }}"
when:
- kolla_action != "config"
- inventory_hostname in groups[service.group]
- service.enabled | bool
- config_json.changed | bool
or monasca_api_confs.changed | bool
or monasca_api_wsgi_confs.changed | bool
or monasca_api_container.changed | bool
---
dependencies:
- { role: common }
---
- name: Creating monasca database
kolla_toolbox:
module_name: mysql_db
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ monasca_database_name }}"
register: database
run_once: True
delegate_to: "{{ groups['monasca-api'][0] }}"
when:
- not use_preconfigured_databases | bool
- name: Creating monasca database user and setting permissions
kolla_toolbox:
module_name: mysql_user
module_args:
login_host: "{{ database_address }}"
login_port: "{{ database_port }}"
login_user: "{{ database_user }}"
login_password: "{{ database_password }}"
name: "{{ monasca_database_user }}"
password: "{{ monasca_database_password }}"
host: "%"
priv: "{{ monasca_database_name }}.*:ALL"
append_privs: "yes"
run_once: True
delegate_to: "{{ groups['monasca-api'][0] }}"
when:
- not use_preconfigured_databases | bool
- database.changed
- include: bootstrap_service.yml
when: database.changed or use_preconfigured_databases | bool
- name: Creating monasca influxdb database
kolla_toolbox:
module_name: influxdb_database
module_args:
hostname: "{{ monasca_influxdb_address }}"
port: "{{ monasca_influxdb_http_port }}"
database_name: "{{ monasca_influxdb_name }}"
run_once: True
delegate_to: "{{ groups['monasca-api'][0] }}"
# NOTE(dszumski): The Monasca APIs write logs and messages to Kafka. Since
# Kafka has automatic topic generation enabled by default we don't need to
# create topics here.
---
- name: Running monasca bootstrap container
vars:
monasca_api: "{{ monasca_services['monasca-api'] }}"
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
detach: False
environment:
KOLLA_BOOTSTRAP:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
MONASCA_DATABASE_ADDRESS: "{{ database_address }}"
MONASCA_DATABASE_PORT: "{{ database_port }}"
MONASCA_DATABASE_USER: "{{ monasca_database_user }}"
MONASCA_DATABASE_PASSWORD: "{{ monasca_database_password }}"
MONASCA_DATABASE_NAME: "{{ monasca_database_name }}"
image: "{{ monasca_api.image }}"
labels:
BOOTSTRAP:
name: "bootstrap_monasca"
restart_policy: "never"
volumes: "{{ monasca_api.volumes }}"
run_once: True
delegate_to: "{{ groups[monasca_api.group][0] }}"
---
---
- name: Ensuring config directories exist
file:
path: "{{ node_config_directory }}/{{ item.key }}"
state: "directory"
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
recurse: yes
become: true
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ monasca_services }}"
- name: Copying over config.json files for services
template:
src: "{{ item.key }}/{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
become: true
register: monasca_config_jsons
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ monasca_services }}"
notify:
- Restart monasca-api container
- name: Copying over monasca-api config
vars:
service: "{{ monasca_services['monasca-api'] }}"
merge_configs:
sources:
- "{{ role_path }}/templates/monasca-api/{{ item }}.j2"
- "{{ node_custom_config }}/monasca/{{ item }}"
- "{{ node_custom_config }}/monasca/{{ inventory_hostname }}/{{ item }}"
dest: "{{ node_config_directory }}/monasca-api/{{ item }}"
mode: "0660"
become: true
register: monasca_api_confs
with_items:
- api-config.conf
- api-config.ini
when:
- inventory_hostname in groups[service['group']]
- service.enabled | bool
notify:
- Restart monasca-api container
- name: Copying over monasca-api wsgi config
vars:
service: "{{ monasca_services['monasca-api'] }}"
template:
src: "{{ role_path }}/templates/monasca-api/wsgi-api.conf.j2"
dest: "{{ node_config_directory }}/monasca-api/wsgi-api.conf"
mode: "0660"
become: true
register: monasca_api_wsgi_confs
when:
- inventory_hostname in groups[service['group']]
- service.enabled | bool
notify:
- Restart monasca-api container
- name: Check monasca containers
kolla_docker:
action: "compare_container"
common_options: "{{ docker_common_options }}"
name: "{{ item.value.container_name }}"
image: "{{ item.value.image }}"
volumes: "{{ item.value.volumes }}"
register: check_monasca_containers
when:
- kolla_action != "config"
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ monasca_services }}"
notify:
- Restart monasca-api container
---
- include: register.yml
when: inventory_hostname in groups['monasca-api']
- include: config.yml
when: inventory_hostname in groups['monasca-api']
- include: bootstrap.yml
when: inventory_hostname in groups['monasca-api']
- name: Flush handlers
meta: flush_handlers
- include: check.yml
when: inventory_hostname in groups['monasca-api']
---
- include: "{{ kolla_action }}.yml"
---
- name: Get container facts
kolla_container_facts:
name: "{{ monasca_services.values()|map(attribute='container_name')|list }}"
register: container_facts
- name: Checking free port for monasca-api
wait_for:
host: "{{ api_interface_address }}"
port: "{{ monasca_api_port }}"
connect_timeout: 1
timeout: 1
state: stopped
when:
- inventory_hostname in groups[monasca_services['monasca-api']['group']]
- container_facts['monasca_api'] is not defined
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment