Merge "Remove retired Qinling support"
This commit is contained in:
commit
525bbf3962
@ -66,7 +66,6 @@ Kolla-Ansible deploys containers for the following OpenStack projects:
|
||||
- `Nova <https://docs.openstack.org/nova/latest/>`__
|
||||
- `Octavia <https://docs.openstack.org/octavia/latest/>`__
|
||||
- `Panko <https://docs.openstack.org/panko/latest/>`__
|
||||
- `Qinling <https://docs.openstack.org/qinling/latest/>`__
|
||||
- `Rally <https://docs.openstack.org/rally/latest/>`__
|
||||
- `Sahara <https://docs.openstack.org/sahara/latest/>`__
|
||||
- `Searchlight <https://docs.openstack.org/searchlight/latest/>`__
|
||||
|
@ -446,8 +446,6 @@ prometheus_blackbox_exporter_port: "9115"
|
||||
|
||||
qdrouterd_port: "31459"
|
||||
|
||||
qinling_api_port: "7070"
|
||||
|
||||
rabbitmq_port: "{{ '5671' if rabbitmq_enable_tls | bool else '5672' }}"
|
||||
rabbitmq_management_port: "15672"
|
||||
rabbitmq_cluster_port: "25672"
|
||||
@ -617,7 +615,6 @@ enable_horizon_monasca: "{{ enable_monasca | bool }}"
|
||||
enable_horizon_murano: "{{ enable_murano | bool }}"
|
||||
enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
|
||||
enable_horizon_octavia: "{{ enable_octavia | bool }}"
|
||||
enable_horizon_qinling: "{{ enable_qinling | bool }}"
|
||||
enable_horizon_sahara: "{{ enable_sahara | bool }}"
|
||||
enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
|
||||
enable_horizon_senlin: "{{ enable_senlin | bool }}"
|
||||
@ -674,7 +671,6 @@ enable_panko: "no"
|
||||
enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
|
||||
enable_prometheus: "no"
|
||||
enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
|
||||
enable_qinling: "no"
|
||||
enable_rally: "no"
|
||||
enable_redis: "no"
|
||||
enable_sahara: "no"
|
||||
@ -1022,12 +1018,6 @@ enable_nova_horizon_policy_file: "{{ enable_nova }}"
|
||||
|
||||
horizon_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ horizon_tls_port if kolla_enable_tls_internal | bool else horizon_port }}"
|
||||
|
||||
#################
|
||||
# Qinling options
|
||||
#################
|
||||
# Configure qinling-engine certificates to authenticate with Kubernetes cluster.
|
||||
qinling_kubernetes_certificates: "no"
|
||||
|
||||
###################
|
||||
# External Ceph options
|
||||
###################
|
||||
|
@ -156,9 +156,6 @@ monitoring
|
||||
[magnum:children]
|
||||
control
|
||||
|
||||
[qinling:children]
|
||||
control
|
||||
|
||||
[sahara:children]
|
||||
control
|
||||
|
||||
@ -496,13 +493,6 @@ magnum
|
||||
[magnum-conductor:children]
|
||||
magnum
|
||||
|
||||
# Qinling
|
||||
[qinling-api:children]
|
||||
qinling
|
||||
|
||||
[qinling-engine:children]
|
||||
qinling
|
||||
|
||||
# Solum
|
||||
[solum-api:children]
|
||||
solum
|
||||
|
@ -177,9 +177,6 @@ control
|
||||
[magnum:children]
|
||||
control
|
||||
|
||||
[qinling:children]
|
||||
control
|
||||
|
||||
[sahara:children]
|
||||
control
|
||||
|
||||
@ -504,13 +501,6 @@ magnum
|
||||
[magnum-conductor:children]
|
||||
magnum
|
||||
|
||||
# Qinling
|
||||
[qinling-api:children]
|
||||
qinling
|
||||
|
||||
[qinling-engine:children]
|
||||
qinling
|
||||
|
||||
# Sahara
|
||||
[sahara-api:children]
|
||||
sahara
|
||||
|
@ -162,8 +162,6 @@ fluentd_input_openstack_services:
|
||||
enabled: "{{ enable_octavia | bool }}"
|
||||
- name: panko
|
||||
enabled: "{{ enable_panko | bool }}"
|
||||
- name: qinling
|
||||
enabled: "{{ enable_qinling | bool }}"
|
||||
- name: rally
|
||||
enabled: "{{ enable_rally | bool }}"
|
||||
- name: sahara
|
||||
|
@ -209,7 +209,6 @@
|
||||
- { name: "octavia", enabled: "{{ enable_octavia | bool }}" }
|
||||
- { name: "outward-rabbitmq", enabled: "{{ enable_outward_rabbitmq | bool }}" }
|
||||
- { name: "panko", enabled: "{{ enable_panko | bool }}" }
|
||||
- { name: "qinling", enabled: "{{ enable_qinling | bool }}" }
|
||||
- { name: "rabbitmq", enabled: "{{ enable_rabbitmq | bool }}" }
|
||||
- { name: "rally", enabled: "{{ enable_rally | bool }}" }
|
||||
- { name: "sahara", enabled: "{{ enable_sahara | bool }}" }
|
||||
|
@ -161,11 +161,6 @@
|
||||
pattern ^(blazar-api|blazar-manager)$
|
||||
tag openstack_python
|
||||
</rule>
|
||||
<rule>
|
||||
key programname
|
||||
pattern ^(qinling-engine|qinling-api)$
|
||||
tag openstack_python
|
||||
</rule>
|
||||
<rule>
|
||||
key programname
|
||||
pattern ^(monasca-api|monasca-notification|monasca-persister|agent-collector|agent-forwarder|agent-statsd)$
|
||||
|
@ -1,3 +0,0 @@
|
||||
"/var/log/kolla/qinling/*.log"
|
||||
{
|
||||
}
|
@ -729,19 +729,6 @@
|
||||
- haproxy_stat.find('panko_api') == -1
|
||||
- haproxy_vip_prechecks
|
||||
|
||||
- name: Checking free port for Qinling API HAProxy
|
||||
wait_for:
|
||||
host: "{{ kolla_internal_vip_address }}"
|
||||
port: "{{ qinling_api_port }}"
|
||||
connect_timeout: 1
|
||||
timeout: 1
|
||||
state: stopped
|
||||
when:
|
||||
- enable_qinling | bool
|
||||
- inventory_hostname in groups['haproxy']
|
||||
- haproxy_stat.find('qinling_api') == -1
|
||||
- haproxy_vip_prechecks
|
||||
|
||||
- name: Checking free port for RabbitMQ Management HAProxy
|
||||
wait_for:
|
||||
host: "{{ kolla_internal_vip_address }}"
|
||||
|
@ -23,7 +23,6 @@ horizon_services:
|
||||
ENABLE_MURANO: "{{ 'yes' if enable_horizon_murano | bool else 'no' }}"
|
||||
ENABLE_NEUTRON_VPNAAS: "{{ 'yes' if enable_horizon_neutron_vpnaas | bool else 'no' }}"
|
||||
ENABLE_OCTAVIA: "{{ 'yes' if enable_horizon_octavia | bool else 'no' }}"
|
||||
ENABLE_QINLING: "{{ 'yes' if enable_horizon_qinling | bool else 'no' }}"
|
||||
ENABLE_SAHARA: "{{ 'yes' if enable_horizon_sahara | bool else 'no' }}"
|
||||
ENABLE_SEARCHLIGHT: "{{ 'yes' if enable_horizon_searchlight | bool else 'no' }}"
|
||||
ENABLE_SENLIN: "{{ 'yes' if enable_horizon_senlin | bool else 'no' }}"
|
||||
|
@ -40,7 +40,6 @@
|
||||
- { name: "neutron", enabled: "{{ enable_neutron_horizon_policy_file }}" }
|
||||
- { name: "nova", enabled: "{{ enable_nova_horizon_policy_file }}" }
|
||||
- { name: "octavia", enabled: "{{ enable_horizon_octavia }}" }
|
||||
- { name: "qinling", enabled: "{{ enable_horizon_qinling }}" }
|
||||
- { name: "sahara", enabled: "{{ enable_horizon_sahara }}" }
|
||||
- { name: "searchlight", enabled: "{{ enable_horizon_searchlight }}" }
|
||||
- { name: "senlin", enabled: "{{ enable_horizon_senlin }}" }
|
||||
|
@ -1,113 +0,0 @@
|
||||
---
|
||||
project_name: "qinling"
|
||||
|
||||
qinling_services:
|
||||
qinling-api:
|
||||
container_name: qinling_api
|
||||
group: qinling-api
|
||||
enabled: true
|
||||
image: "{{ qinling_api_image_full }}"
|
||||
volumes: "{{ qinling_api_default_volumes + qinling_api_extra_volumes }}"
|
||||
dimensions: "{{ qinling_api_dimensions }}"
|
||||
haproxy:
|
||||
qinling_api:
|
||||
enabled: "{{ enable_qinling }}"
|
||||
mode: "http"
|
||||
external: false
|
||||
port: "{{ qinling_api_port }}"
|
||||
qinling_api_external:
|
||||
enabled: "{{ enable_qinling }}"
|
||||
mode: "http"
|
||||
external: true
|
||||
port: "{{ qinling_api_port }}"
|
||||
qinling-engine:
|
||||
container_name: qinling_engine
|
||||
group: qinling-engine
|
||||
enabled: true
|
||||
image: "{{ qinling_engine_image_full }}"
|
||||
volumes: "{{ qinling_engine_default_volumes + qinling_engine_extra_volumes }}"
|
||||
dimensions: "{{ qinling_engine_dimensions }}"
|
||||
|
||||
|
||||
####################
|
||||
# Database
|
||||
####################
|
||||
qinling_database_name: "qinling"
|
||||
qinling_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}qinling{% endif %}"
|
||||
qinling_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}"
|
||||
|
||||
|
||||
####################
|
||||
# Docker
|
||||
####################
|
||||
qinling_install_type: "{{ kolla_install_type }}"
|
||||
qinling_tag: "{{ openstack_tag }}"
|
||||
|
||||
qinling_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ qinling_install_type }}-qinling-api"
|
||||
qinling_api_tag: "{{ qinling_tag }}"
|
||||
qinling_api_image_full: "{{ qinling_api_image }}:{{ qinling_api_tag }}"
|
||||
|
||||
qinling_engine_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ qinling_install_type }}-qinling-engine"
|
||||
qinling_engine_tag: "{{ qinling_tag }}"
|
||||
qinling_engine_image_full: "{{ qinling_engine_image }}:{{ qinling_engine_tag }}"
|
||||
|
||||
qinling_api_dimensions: "{{ default_container_dimensions }}"
|
||||
qinling_engine_dimensions: "{{ default_container_dimensions }}"
|
||||
|
||||
qinling_api_default_volumes:
|
||||
- "{{ node_config_directory }}/qinling-api/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
|
||||
- "{{ kolla_dev_repos_directory ~ '/qinling/qinling:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/qinling' if qinling_dev_mode | bool else '' }}"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
qinling_engine_default_volumes:
|
||||
- "{{ node_config_directory }}/qinling-engine/:{{ container_config_directory }}/:ro"
|
||||
- "/etc/localtime:/etc/localtime:ro"
|
||||
- "{{ '/etc/timezone:/etc/timezone:ro' if ansible_os_family == 'Debian' else '' }}"
|
||||
- "qinling:/var/lib/qinling/"
|
||||
- "{{ kolla_dev_repos_directory ~ '/qinling/qinling:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/qinling' if qinling_dev_mode | bool else '' }}"
|
||||
- "kolla_logs:/var/log/kolla/"
|
||||
|
||||
qinling_extra_volumes: "{{ default_extra_volumes }}"
|
||||
qinling_api_extra_volumes: "{{ qinling_extra_volumes }}"
|
||||
qinling_engine_extra_volumes: "{{ qinling_extra_volumes }}"
|
||||
|
||||
####################
|
||||
# OpenStack
|
||||
####################
|
||||
qinling_admin_endpoint: "{{ admin_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
|
||||
qinling_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
|
||||
qinling_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ qinling_api_port }}"
|
||||
|
||||
qinling_logging_debug: "{{ openstack_logging_debug }}"
|
||||
|
||||
qinling_keystone_user: "qinling"
|
||||
|
||||
openstack_qinling_auth: "{{ openstack_auth }}"
|
||||
|
||||
|
||||
####################
|
||||
# Kolla
|
||||
####################
|
||||
qinling_git_repository: "{{ kolla_dev_repos_git }}/{{ project_name }}"
|
||||
qinling_dev_repos_pull: "{{ kolla_dev_repos_pull }}"
|
||||
qinling_dev_mode: "{{ kolla_dev_mode }}"
|
||||
qinling_source_version: "{{ kolla_source_version }}"
|
||||
|
||||
####################
|
||||
# Keystone
|
||||
####################
|
||||
qinling_ks_services:
|
||||
- name: "qinling"
|
||||
type: "function-engine"
|
||||
description: "Function Service"
|
||||
endpoints:
|
||||
- {'interface': 'admin', 'url': '{{ qinling_admin_endpoint }}'}
|
||||
- {'interface': 'internal', 'url': '{{ qinling_internal_endpoint }}'}
|
||||
- {'interface': 'public', 'url': '{{ qinling_public_endpoint }}'}
|
||||
|
||||
qinling_ks_users:
|
||||
- project: "service"
|
||||
user: "{{ qinling_keystone_user }}"
|
||||
password: "{{ qinling_keystone_password }}"
|
||||
role: "admin"
|
@ -1,30 +0,0 @@
|
||||
---
|
||||
- name: Restart qinling-api container
|
||||
vars:
|
||||
service_name: "qinling-api"
|
||||
service: "{{ qinling_services[service_name] }}"
|
||||
become: true
|
||||
kolla_docker:
|
||||
action: "recreate_or_restart_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ service.container_name }}"
|
||||
image: "{{ service.image }}"
|
||||
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
|
||||
dimensions: "{{ service.dimensions }}"
|
||||
when:
|
||||
- kolla_action != "config"
|
||||
|
||||
- name: Restart qinling-engine container
|
||||
vars:
|
||||
service_name: "qinling-engine"
|
||||
service: "{{ qinling_services[service_name] }}"
|
||||
become: true
|
||||
kolla_docker:
|
||||
action: "recreate_or_restart_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ service.container_name }}"
|
||||
image: "{{ service.image }}"
|
||||
volumes: "{{ service.volumes|reject('equalto', '')|list }}"
|
||||
dimensions: "{{ service.dimensions }}"
|
||||
when:
|
||||
- kolla_action != "config"
|
@ -1,36 +0,0 @@
|
||||
---
|
||||
- name: Creating Qinling database
|
||||
become: true
|
||||
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: "{{ qinling_database_name }}"
|
||||
run_once: True
|
||||
delegate_to: "{{ groups['qinling-api'][0] }}"
|
||||
when:
|
||||
- not use_preconfigured_databases | bool
|
||||
|
||||
- name: Creating Qinling database user and setting permissions
|
||||
become: true
|
||||
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: "{{ qinling_database_user }}"
|
||||
password: "{{ qinling_database_password }}"
|
||||
host: "%"
|
||||
priv: "{{ qinling_database_name }}.*:ALL"
|
||||
append_privs: "yes"
|
||||
run_once: True
|
||||
delegate_to: "{{ groups['qinling-api'][0] }}"
|
||||
when:
|
||||
- not use_preconfigured_databases | bool
|
||||
|
||||
- import_tasks: bootstrap_service.yml
|
@ -1,20 +0,0 @@
|
||||
---
|
||||
- name: Running Qinling bootstrap container
|
||||
vars:
|
||||
qinling_api: "{{ qinling_services['qinling-api'] }}"
|
||||
become: true
|
||||
kolla_docker:
|
||||
action: "start_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
detach: False
|
||||
environment:
|
||||
KOLLA_BOOTSTRAP:
|
||||
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
|
||||
image: "{{ qinling_api.image }}"
|
||||
labels:
|
||||
BOOTSTRAP:
|
||||
name: "bootstrap_qinling"
|
||||
restart_policy: no
|
||||
volumes: "{{ qinling_api.volumes|reject('equalto', '')|list }}"
|
||||
run_once: True
|
||||
delegate_to: "{{ groups[qinling_api.group][0] }}"
|
@ -1,16 +0,0 @@
|
||||
---
|
||||
- name: Check qinling containers
|
||||
become: true
|
||||
kolla_docker:
|
||||
action: "compare_container"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
name: "{{ item.value.container_name }}"
|
||||
image: "{{ item.value.image }}"
|
||||
volumes: "{{ item.value.volumes|reject('equalto', '')|list }}"
|
||||
dimensions: "{{ item.value.dimensions }}"
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
||||
notify:
|
||||
- Restart {{ item.key }} container
|
@ -1 +0,0 @@
|
||||
---
|
@ -1,8 +0,0 @@
|
||||
---
|
||||
- name: Cloning qinling source repository for development
|
||||
become: true
|
||||
git:
|
||||
repo: "{{ qinling_git_repository }}"
|
||||
dest: "{{ kolla_dev_repos_directory }}/{{ project_name }}"
|
||||
update: "{{ qinling_dev_repos_pull }}"
|
||||
version: "{{ qinling_source_version }}"
|
@ -1,102 +0,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"
|
||||
become: true
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
||||
|
||||
- include_tasks: external_kubernetes.yml
|
||||
when:
|
||||
- (enable_qinling | bool) and (qinling_kubernetes_certificates | bool)
|
||||
- inventory_hostname in groups['qinling-engine']
|
||||
|
||||
- name: Check if policies shall be overwritten
|
||||
stat:
|
||||
path: "{{ item }}"
|
||||
delegate_to: localhost
|
||||
run_once: True
|
||||
register: qinling_policy
|
||||
with_first_found:
|
||||
- files: "{{ supported_policy_format_list }}"
|
||||
paths:
|
||||
- "{{ node_custom_config }}/qinling/"
|
||||
skip: true
|
||||
|
||||
- name: Set qinling policy file
|
||||
set_fact:
|
||||
qinling_policy_file: "{{ qinling_policy.results.0.stat.path | basename }}"
|
||||
qinling_policy_file_path: "{{ qinling_policy.results.0.stat.path }}"
|
||||
when:
|
||||
- qinling_policy.results
|
||||
|
||||
- include_tasks: copy-certs.yml
|
||||
when:
|
||||
- kolla_copy_ca_into_containers | bool
|
||||
|
||||
- name: Copying over config.json files for services
|
||||
template:
|
||||
src: "{{ item.key }}.json.j2"
|
||||
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
||||
mode: "0660"
|
||||
become: true
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
||||
notify:
|
||||
- Restart {{ item.key }} container
|
||||
|
||||
- name: Copying over qinling.conf
|
||||
vars:
|
||||
service_name: "{{ item.key }}"
|
||||
merge_configs:
|
||||
sources:
|
||||
- "{{ role_path }}/templates/qinling.conf.j2"
|
||||
- "{{ node_custom_config }}/global.conf"
|
||||
- "{{ node_custom_config }}/qinling.conf"
|
||||
- "{{ node_custom_config }}/qinling/{{ item.key }}.conf"
|
||||
- "{{ node_custom_config }}/qinling/{{ inventory_hostname }}/qinling.conf"
|
||||
dest: "{{ node_config_directory }}/{{ item.key }}/qinling.conf"
|
||||
mode: "0660"
|
||||
become: true
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
||||
notify:
|
||||
- Restart {{ item.key }} container
|
||||
|
||||
- name: Copying over wsgi-qinling files for services
|
||||
vars:
|
||||
service: "{{ qinling_services['qinling-api'] }}"
|
||||
template:
|
||||
src: "wsgi-qinling.conf.j2"
|
||||
dest: "{{ node_config_directory }}/qinling-api/wsgi-qinling.conf"
|
||||
mode: "0660"
|
||||
become: true
|
||||
when:
|
||||
- inventory_hostname in groups[service.group]
|
||||
- service.enabled | bool
|
||||
notify:
|
||||
- Restart qinling-api container
|
||||
|
||||
- name: Copying over existing policy file
|
||||
template:
|
||||
src: "{{ qinling_policy_file_path }}"
|
||||
dest: "{{ node_config_directory }}/{{ item.key }}/{{ qinling_policy_file }}"
|
||||
mode: "0660"
|
||||
become: true
|
||||
when:
|
||||
- qinling_policy_file is defined
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
||||
notify:
|
||||
- Restart {{ item.key }} container
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
- name: "Copy certificates and keys for {{ project_name }}"
|
||||
import_role:
|
||||
role: service-cert-copy
|
||||
vars:
|
||||
project_services: "{{ qinling_services }}"
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
- import_tasks: check-containers.yml
|
@ -1,14 +0,0 @@
|
||||
---
|
||||
- import_tasks: register.yml
|
||||
|
||||
- import_tasks: config.yml
|
||||
|
||||
- import_tasks: check-containers.yml
|
||||
|
||||
- include_tasks: clone.yml
|
||||
when: qinling_dev_mode | bool
|
||||
|
||||
- import_tasks: bootstrap.yml
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
@ -1,19 +0,0 @@
|
||||
---
|
||||
- name: Copy over Kubernetes certificates files for qinling-engine
|
||||
copy:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ node_config_directory }}/qinling-engine/"
|
||||
mode: "0660"
|
||||
owner: "{{ config_owner_user }}"
|
||||
group: "{{ config_owner_group }}"
|
||||
become: true
|
||||
register: qinling_engine_kubernetes_files
|
||||
with_items:
|
||||
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes_ca.crt"
|
||||
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes.crt"
|
||||
- "{{ node_custom_config }}/qinling/qinling-engine/kubernetes.key"
|
||||
when:
|
||||
- qinling_kubernetes_certificates | bool
|
||||
- inventory_hostname in groups['qinling-engine']
|
||||
notify:
|
||||
- Restart qinling-engine container
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
- name: "Configure haproxy for {{ project_name }}"
|
||||
import_role:
|
||||
name: haproxy-config
|
||||
vars:
|
||||
project_services: "{{ qinling_services }}"
|
||||
tags: always
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
- include_tasks: "{{ kolla_action }}.yml"
|
@ -1,24 +0,0 @@
|
||||
---
|
||||
- import_role:
|
||||
name: service-precheck
|
||||
vars:
|
||||
service_precheck_services: "{{ qinling_services }}"
|
||||
service_name: "{{ project_name }}"
|
||||
|
||||
- name: Get container facts
|
||||
become: true
|
||||
kolla_container_facts:
|
||||
name:
|
||||
- qinling_api
|
||||
register: container_facts
|
||||
|
||||
- name: Checking free port for Qinling API
|
||||
wait_for:
|
||||
host: "{{ api_interface_address }}"
|
||||
port: "{{ qinling_api_port }}"
|
||||
connect_timeout: 1
|
||||
timeout: 1
|
||||
state: stopped
|
||||
when:
|
||||
- container_facts['qinling_api'] is not defined
|
||||
- inventory_hostname in groups['qinling-api']
|
@ -1,11 +0,0 @@
|
||||
---
|
||||
- name: Pulling qinling images
|
||||
become: true
|
||||
kolla_docker:
|
||||
action: "pull_image"
|
||||
common_options: "{{ docker_common_options }}"
|
||||
image: "{{ item.value.image }}"
|
||||
when:
|
||||
- inventory_hostname in groups[item.value.group]
|
||||
- item.value.enabled | bool
|
||||
with_dict: "{{ qinling_services }}"
|
@ -1,2 +0,0 @@
|
||||
---
|
||||
- import_tasks: deploy.yml
|
@ -1,7 +0,0 @@
|
||||
---
|
||||
- import_role:
|
||||
name: service-ks-register
|
||||
vars:
|
||||
service_ks_register_auth: "{{ openstack_qinling_auth }}"
|
||||
service_ks_register_services: "{{ qinling_ks_services }}"
|
||||
service_ks_register_users: "{{ qinling_ks_users }}"
|
@ -1,6 +0,0 @@
|
||||
---
|
||||
- import_role:
|
||||
name: service-stop
|
||||
vars:
|
||||
project_services: "{{ qinling_services }}"
|
||||
service_name: "{{ project_name }}"
|
@ -1,9 +0,0 @@
|
||||
---
|
||||
- import_tasks: config.yml
|
||||
|
||||
- import_tasks: check-containers.yml
|
||||
|
||||
- import_tasks: bootstrap_service.yml
|
||||
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
@ -1,32 +0,0 @@
|
||||
{% set qinling_cmd = 'apache2' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd' %}
|
||||
{% set qinling_dir = 'apache2/conf-enabled' if kolla_base_distro in ['ubuntu', 'debian'] else 'httpd/conf.d' %}
|
||||
{
|
||||
"command": "{{ qinling_cmd }} -DFOREGROUND",
|
||||
"config_files": [
|
||||
{
|
||||
"source": "{{ container_config_directory }}/qinling.conf",
|
||||
"dest": "/etc/qinling/qinling.conf",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/wsgi-qinling.conf",
|
||||
"dest": "/etc/{{ qinling_dir }}/wsgi-qinling.conf",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
}{% if qinling_policy_file is defined %},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
|
||||
"dest": "/etc/qinling/{{ qinling_policy_file }}",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
}{% endif %}
|
||||
],
|
||||
"permissions": [
|
||||
{
|
||||
"path": "/var/log/kolla/qinling",
|
||||
"owner": "qinling:qinling",
|
||||
"recurse": true
|
||||
}
|
||||
]
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
{
|
||||
"command": "qinling-engine --config-file /etc/qinling/qinling.conf",
|
||||
"config_files": [
|
||||
{
|
||||
"source": "{{ container_config_directory }}/qinling.conf",
|
||||
"dest": "/etc/qinling/qinling.conf",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
}{% if qinling_policy_file is defined %},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/{{ qinling_policy_file }}",
|
||||
"dest": "/etc/qinling/{{ qinling_policy_file }}",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
}{% endif %}{% if qinling_kubernetes_certificates is defined and qinling_kubernetes_certificates | bool %},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/kubernetes_ca.crt",
|
||||
"dest": "/etc/qinling/pki/kubernetes/ca.crt",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/kubernetes.crt",
|
||||
"dest": "/etc/qinling/pki/kubernetes/qinling.crt",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
},
|
||||
{
|
||||
"source": "{{ container_config_directory }}/kubernetes.key",
|
||||
"dest": "/etc/qinling/pki/kubernetes/qinling.key",
|
||||
"owner": "qinling",
|
||||
"perm": "0600"
|
||||
}{% endif %}
|
||||
],
|
||||
"permissions": [
|
||||
{
|
||||
"path": "/var/lib/qinling",
|
||||
"owner": "qinling:qinling",
|
||||
"recurse": true
|
||||
},
|
||||
{
|
||||
"path": "/var/log/kolla/qinling",
|
||||
"owner": "qinling:qinling",
|
||||
"recurse": true
|
||||
}
|
||||
]
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
[DEFAULT]
|
||||
debug = {{ qinling_logging_debug }}
|
||||
log_dir = /var/log/kolla/qinling
|
||||
transport_url = {{ rpc_transport_url }}
|
||||
|
||||
{% if service_name == 'qinling-api' %}
|
||||
[api]
|
||||
port = {{ qinling_api_port }}
|
||||
host = {{ api_interface_address }}
|
||||
{% endif %}
|
||||
|
||||
{% if service_name == 'qinling-engine' %}
|
||||
[engine]
|
||||
host = {{ api_interface_address }}
|
||||
{% endif %}
|
||||
|
||||
[database]
|
||||
connection = mysql+pymysql://{{ qinling_database_user }}:{{ qinling_database_password }}@{{ qinling_database_address }}/{{ qinling_database_name }}
|
||||
connection_recycle_time = {{ database_connection_recycle_time }}
|
||||
max_pool_size = {{ database_max_pool_size }}
|
||||
max_retries = -1
|
||||
|
||||
[keystone_authtoken]
|
||||
www_authenticate_uri = {{ keystone_internal_url }}/v3
|
||||
auth_url = {{ keystone_admin_url }}
|
||||
auth_type = password
|
||||
project_domain_name = {{ default_project_domain_name }}
|
||||
user_domain_name = {{ default_user_domain_name }}
|
||||
project_name = service
|
||||
username = {{ qinling_keystone_user }}
|
||||
password = {{ qinling_keystone_password }}
|
||||
region_name = {{ openstack_region_name }}
|
||||
cafile = {{ openstack_cacert }}
|
||||
|
||||
memcache_security_strategy = ENCRYPT
|
||||
memcache_secret_key = {{ memcache_secret_key }}
|
||||
memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %}
|
||||
|
||||
[storage]
|
||||
file_system_dir = /var/lib/qinling/package
|
||||
|
||||
[etcd]
|
||||
{% if enable_etcd | bool %}
|
||||
host = {{ api_interface_address }}
|
||||
port = {{ etcd_client_port }}
|
||||
protocol = {{ etcd_protocol }}
|
||||
{% endif %}
|
||||
|
||||
[oslo_messaging_notifications]
|
||||
transport_url = {{ notify_transport_url }}
|
||||
{% if enable_ceilometer | bool %}
|
||||
driver = messagingv2
|
||||
topics = notifications
|
||||
{% else %}
|
||||
driver = noop
|
||||
{% endif %}
|
||||
|
||||
{% if om_enable_rabbitmq_tls | bool %}
|
||||
[oslo_messaging_rabbit]
|
||||
ssl = true
|
||||
ssl_ca_file = {{ om_rabbitmq_cacert }}
|
||||
{% endif %}
|
||||
|
||||
{% if qinling_policy_file is defined %}
|
||||
[oslo_policy]
|
||||
policy_file = {{ qinling_policy_file }}
|
||||
{% endif %}
|
||||
|
||||
[oslo_middleware]
|
||||
enable_proxy_headers_parsing = True
|
@ -1,39 +0,0 @@
|
||||
{% set qinling_log_dir = '/var/log/kolla/qinling' %}
|
||||
|
||||
Listen {{ api_interface_address | put_address_in_context('url') }}:{{ qinling_api_port }}
|
||||
|
||||
ServerSignature Off
|
||||
ServerTokens Prod
|
||||
TraceEnable off
|
||||
KeepAliveTimeout {{ kolla_httpd_keep_alive }}
|
||||
|
||||
ErrorLog "{{ qinling_log_dir }}/apache-error.log"
|
||||
<IfModule log_config_module>
|
||||
CustomLog "{{ qinling_log_dir }}/apache-access.log" common
|
||||
</IfModule>
|
||||
|
||||
{% if qinling_logging_debug | bool %}
|
||||
LogLevel info
|
||||
{% endif %}
|
||||
|
||||
<VirtualHost *:{{ qinling_api_port }}>
|
||||
|
||||
## Vhost docroot
|
||||
DocumentRoot "/var/www/cgi-bin/qinling"
|
||||
|
||||
## Directories, there should at least be a declaration for /var/www/cgi-bin/qinling
|
||||
|
||||
<Directory "/var/www/cgi-bin/qinling">
|
||||
Options Indexes FollowSymLinks MultiViews
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
## Logging
|
||||
ErrorLog "{{ qinling_log_dir }}/qinling_api_wsgi_error.log"
|
||||
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
|
||||
CustomLog "{{ qinling_log_dir }}/qinling_api_wsgi_access.log" logformat
|
||||
WSGIApplicationGroup %{GLOBAL}
|
||||
WSGIDaemonProcess qinling group=qinling processes={{ openstack_service_workers }} threads=1 user=qinling
|
||||
WSGIProcessGroup qinling
|
||||
WSGIScriptAlias / "/var/www/cgi-bin/qinling/wsgi.py"
|
||||
</VirtualHost>
|
@ -62,7 +62,6 @@
|
||||
- enable_placement_{{ enable_placement | bool }}
|
||||
- enable_prometheus_{{ enable_prometheus | bool }}
|
||||
- enable_qdrouterd_{{ enable_qdrouterd | bool }}
|
||||
- enable_qinling_{{ enable_qinling | bool }}
|
||||
- enable_rabbitmq_{{ enable_rabbitmq | bool }}
|
||||
- enable_rally_{{ enable_rally | bool }}
|
||||
- enable_redis_{{ enable_redis | bool }}
|
||||
@ -302,11 +301,6 @@
|
||||
tasks_from: loadbalancer
|
||||
tags: prometheus
|
||||
when: enable_prometheus | bool
|
||||
- include_role:
|
||||
name: qinling
|
||||
tasks_from: loadbalancer
|
||||
tags: qinling
|
||||
when: enable_qinling | bool
|
||||
- include_role:
|
||||
name: rabbitmq
|
||||
tasks_from: loadbalancer
|
||||
@ -838,18 +832,6 @@
|
||||
tags: mistral,
|
||||
when: enable_mistral | bool }
|
||||
|
||||
- name: Apply role qinling
|
||||
gather_facts: false
|
||||
hosts:
|
||||
- qinling-api
|
||||
- qinling-engine
|
||||
- '&enable_qinling_True'
|
||||
serial: '{{ kolla_serial|default("0") }}'
|
||||
roles:
|
||||
- { role: qinling,
|
||||
tags: qinling,
|
||||
when: enable_qinling | bool }
|
||||
|
||||
- name: Apply role sahara
|
||||
gather_facts: false
|
||||
hosts:
|
||||
|
@ -13,6 +13,5 @@ compute services.
|
||||
nova-cells-guide
|
||||
nova-fake-driver
|
||||
nova-guide
|
||||
qinling-guide
|
||||
vmware-guide
|
||||
zun-guide
|
||||
|
@ -1,102 +0,0 @@
|
||||
.. _qinling-guide:
|
||||
|
||||
=========================
|
||||
Qinling - Function Engine
|
||||
=========================
|
||||
|
||||
Overview
|
||||
~~~~~~~~
|
||||
|
||||
Qinling aims to provide a platform to support serverless functions
|
||||
(like AWS Lambda). Qinling supports different container orchestration
|
||||
platforms (Kubernetes/Swarm, etc...) and different function package storage
|
||||
backends (local/Swift/S3) by nature using plugin mechanism.
|
||||
|
||||
Kolla deploys Qinling API and Qinling Engine containers which are the main
|
||||
Qinling components but it needs to be connected to an existing container
|
||||
orchestration platforms.
|
||||
|
||||
Apply custom policies to Qinling API
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Custom policies could be apply by creating ``policy.json`` file under
|
||||
``/etc/kolla/config/qinling`` directory.
|
||||
|
||||
Enable etcd role
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Qinling requires etcd for function mapping and concurrency. The etcd role
|
||||
should be enabled to configure the etcd address and port within `qinling.conf`.
|
||||
|
||||
Look for ``enable_etcd: "no"`` and change it in ``/etc/kolla/globals.yml``:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
enable_etcd: "yes"
|
||||
|
||||
Connect to an existing Kubernetes cluster
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Certificates
|
||||
------------
|
||||
|
||||
``qinling-engine`` authenticates to Kubernetes by using certificates.
|
||||
|
||||
.. note::
|
||||
If the cluster has not been created with OpenStack Magnum then
|
||||
certificates need to be gathered using different methods that will not
|
||||
be mentioned here.
|
||||
|
||||
If the Kubernetes cluster has been deployed with OpenStack Magnum then the
|
||||
OpenStack client should be used to retrieve the certificates.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
openstack coe cluster config --dir . 687f7476-5604-4b44-8b09-b7a4f3fdbd64 --output-certs
|
||||
|
||||
Where ``687f7476-5604-4b44-8b09-b7a4f3fdbd64`` is the Kubernetes cluster ID
|
||||
created with Magnum.
|
||||
|
||||
Four files should have been generated:
|
||||
|
||||
* ``ca.pem``
|
||||
* ``cert.pem``
|
||||
* ``key.pem``
|
||||
* ``config``
|
||||
|
||||
Only ``ca.pem``, ``cert.pem`` and ``key.pem`` will be used, these files have
|
||||
to be stored in ``/etc/kolla/config/qinling/qinling-engine`` directory under
|
||||
these file name:
|
||||
|
||||
* ``ca.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes_ca.crt``
|
||||
* ``cert.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes.crt``
|
||||
* ``key.pem``: ``/etc/kolla/config/qinling/qinling-engine/kubernetes.key``
|
||||
|
||||
|
||||
Declare ``qinling_kubernetes_certificates`` variable in
|
||||
``/etc/kolla/globals.yml``:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
qinling_kubernetes_certificates: "yes"
|
||||
|
||||
Kubernetes cluster
|
||||
------------------
|
||||
|
||||
``qinling-engine`` needs to know where to connect, the information is
|
||||
provided by options under ``[kubernetes]`` section inside ``qinling.conf``
|
||||
configuration file.
|
||||
|
||||
As mentioned above, these settings are only required by ``qinling-engine``,
|
||||
put the content in ``/etc/kolla/config/qinling/qinling-engine.conf``.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[kubernetes]
|
||||
kube_host = https://192.168.1.168:6443
|
||||
ssl_ca_cert = /etc/qinling/pki/kubernetes/ca.crt
|
||||
cert_file = /etc/qinling/pki/kubernetes/qinling.crt
|
||||
key_file = /etc/qinling/pki/kubernetes/qinling.key
|
||||
|
||||
``kube_host`` is the Kubernetes cluster API address, ``https`` protocol
|
||||
has to be defined.
|
@ -312,7 +312,6 @@
|
||||
#enable_horizon_murano: "{{ enable_murano | bool }}"
|
||||
#enable_horizon_neutron_vpnaas: "{{ enable_neutron_vpnaas | bool }}"
|
||||
#enable_horizon_octavia: "{{ enable_octavia | bool }}"
|
||||
#enable_horizon_qinling: "{{ enable_qinling | bool }}"
|
||||
#enable_horizon_sahara: "{{ enable_sahara | bool }}"
|
||||
#enable_horizon_searchlight: "{{ enable_searchlight | bool }}"
|
||||
#enable_horizon_senlin: "{{ enable_senlin | bool }}"
|
||||
@ -369,7 +368,6 @@
|
||||
#enable_placement: "{{ enable_nova | bool or enable_zun | bool }}"
|
||||
#enable_prometheus: "no"
|
||||
#enable_qdrouterd: "{{ 'yes' if om_rpc_transport == 'amqp' else 'no' }}"
|
||||
#enable_qinling: "no"
|
||||
#enable_rally: "no"
|
||||
#enable_redis: "no"
|
||||
#enable_sahara: "no"
|
||||
|
@ -188,9 +188,6 @@ masakari_keystone_password:
|
||||
|
||||
memcache_secret_key:
|
||||
|
||||
qinling_database_password:
|
||||
qinling_keystone_password:
|
||||
|
||||
# HMAC secret key
|
||||
osprofiler_secret:
|
||||
|
||||
|
@ -0,0 +1,8 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
The ``Qinling`` project is no longer maintained and
|
||||
`retired since Wallaby cycle`__ . Its support and roles
|
||||
are also removed since Wallaby cycle.
|
||||
|
||||
__ http://lists.openstack.org/pipermail/openstack-discuss/2020-November/018638.html
|
@ -191,9 +191,6 @@ control
|
||||
[magnum:children]
|
||||
control
|
||||
|
||||
[qinling:children]
|
||||
control
|
||||
|
||||
[sahara:children]
|
||||
control
|
||||
|
||||
@ -518,13 +515,6 @@ magnum
|
||||
[magnum-conductor:children]
|
||||
magnum
|
||||
|
||||
# Qinling
|
||||
[qinling-api:children]
|
||||
qinling
|
||||
|
||||
[qinling-engine:children]
|
||||
qinling
|
||||
|
||||
# Sahara
|
||||
[sahara-api:children]
|
||||
sahara
|
||||
|
Loading…
Reference in New Issue
Block a user