diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 107c3b8cf3..ea18d65a57 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -517,6 +517,8 @@ tacker_server_port: "9890" trove_api_port: "8779" +venus_api_port: "10010" + watcher_api_port: "9322" zookeeper_client_port: "2181" @@ -710,6 +712,7 @@ enable_tacker: "no" enable_telegraf: "no" enable_trove: "no" enable_trove_singletenant: "no" +enable_venus: "no" enable_vitrage: "no" enable_watcher: "no" enable_zookeeper: "{{ enable_kafka | bool or enable_storm | bool }}" diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one index aeee2133bd..a5cdbecd19 100644 --- a/ansible/inventory/all-in-one +++ b/ansible/inventory/all-in-one @@ -735,3 +735,12 @@ ovn-database [ovn-sb-db:children] ovn-database + +[venus:children] +monitoring + +[venus-api:children] +venus + +[venus-manager:children] +venus diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode index 1ca91a8370..4a73218aa9 100644 --- a/ansible/inventory/multinode +++ b/ansible/inventory/multinode @@ -753,3 +753,12 @@ ovn-database [ovn-sb-db:children] ovn-database + +[venus:children] +monitoring + +[venus-api:children] +venus + +[venus-manager:children] +venus diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml index 3935d2dff9..cd8ddd43c5 100644 --- a/ansible/roles/common/tasks/config.yml +++ b/ansible/roles/common/tasks/config.yml @@ -201,6 +201,7 @@ - { name: "swift", enabled: "{{ enable_swift | bool }}" } - { name: "tacker", enabled: "{{ enable_tacker | bool }}" } - { name: "trove", enabled: "{{ enable_trove | bool }}" } + - { name: "venus", enabled: "{{ enable_venus | bool }}" } - { name: "vitrage", enabled: "{{ enable_vitrage | bool }}" } - { name: "watcher", enabled: "{{ enable_watcher | bool }}" } - { name: "zookeeper", enabled: "{{ enable_zookeeper | bool }}" } diff --git a/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 b/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 index 329e60e780..5a0f96ca8f 100644 --- a/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 +++ b/ansible/roles/common/templates/conf/filter/01-rewrite.conf.j2 @@ -166,6 +166,11 @@ pattern ^(masakari-engine|masakari-api)$ tag openstack_python + + key programname + pattern ^(venus-api|venus-manager)$ + tag openstack_python + key programname pattern .+ diff --git a/ansible/roles/common/templates/cron-logrotate-venus.conf.j2 b/ansible/roles/common/templates/cron-logrotate-venus.conf.j2 new file mode 100644 index 0000000000..5ff3c425a7 --- /dev/null +++ b/ansible/roles/common/templates/cron-logrotate-venus.conf.j2 @@ -0,0 +1,3 @@ +"/var/log/kolla/venus/*.log" +{ +} diff --git a/ansible/roles/venus/defaults/main.yml b/ansible/roles/venus/defaults/main.yml new file mode 100644 index 0000000000..454c35e6f5 --- /dev/null +++ b/ansible/roles/venus/defaults/main.yml @@ -0,0 +1,138 @@ +--- +venus_services: + venus-api: + container_name: venus_api + group: venus-api + enabled: true + image: "{{ venus_api_image_full }}" + volumes: "{{ venus_api_default_volumes + venus_api_extra_volumes }}" + dimensions: "{{ venus_api_dimensions }}" + healthcheck: "{{ venus_api_healthcheck }}" + haproxy: + venus_api: + enabled: "{{ enable_venus }}" + mode: "http" + external: false + port: "{{ venus_api_port }}" + venus_api_external: + enabled: "{{ enable_venus }}" + mode: "http" + external: true + port: "{{ venus_api_port }}" + venus-manager: + container_name: venus_manager + group: venus-manager + enabled: true + image: "{{ venus_manager_image_full }}" + volumes: "{{ venus_manager_default_volumes + venus_manager_extra_volumes }}" + dimensions: "{{ venus_manager_dimensions }}" + +#################### +# Database +#################### +venus_database_name: "venus" +venus_database_user: "{% if use_preconfigured_databases | bool and use_common_mariadb_user | bool %}{{ database_user }}{% else %}venus{% endif %}" +venus_database_address: "{{ database_address | put_address_in_context('url') }}:{{ database_port }}" + + +#################### +# Docker +#################### +venus_install_type: "{{ kolla_install_type }}" +venus_tag: "{{ openstack_tag }}" + +venus_api_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ venus_install_type }}-venus-api" +venus_api_tag: "{{ venus_tag }}" +venus_api_image_full: "{{ venus_api_image }}:{{ venus_api_tag }}" + +venus_manager_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ venus_install_type }}-venus-manager" +venus_manager_tag: "{{ venus_tag }}" +venus_manager_image_full: "{{ venus_manager_image }}:{{ venus_manager_tag }}" + +venus_api_dimensions: "{{ default_container_dimensions }}" +venus_manager_dimensions: "{{ default_container_dimensions }}" + +venus_api_enable_healthchecks: "{{ enable_container_healthchecks }}" +venus_api_healthcheck_interval: "{{ default_container_healthcheck_interval }}" +venus_api_healthcheck_retries: "{{ default_container_healthcheck_retries }}" +venus_api_healthcheck_start_period: "{{ default_container_healthcheck_start_period }}" +venus_api_healthcheck_test: ["CMD-SHELL", "healthcheck_curl http://{{ api_interface_address | put_address_in_context('url') }}:{{ venus_api_port }}"] +venus_api_healthcheck_timeout: "{{ default_container_healthcheck_timeout }}" +venus_api_healthcheck: + interval: "{{ venus_api_healthcheck_interval }}" + retries: "{{ venus_api_healthcheck_retries }}" + start_period: "{{ venus_api_healthcheck_start_period }}" + test: "{% if venus_api_enable_healthchecks | bool %}{{ venus_api_healthcheck_test }}{% else %}NONE{% endif %}" + timeout: "{{ venus_api_healthcheck_timeout }}" + +venus_api_default_volumes: + - "{{ node_config_directory }}/venus-api/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}" + - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/venus/venus:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/venus' if venus_dev_mode | bool else '' }}" + - "venus:/var/lib/venus/" +venus_manager_default_volumes: + - "{{ node_config_directory }}/venus-manager/:{{ container_config_directory }}/:ro" + - "/etc/localtime:/etc/localtime:ro" + - "{{ '/etc/timezone:/etc/timezone:ro' if ansible_facts.os_family == 'Debian' else '' }}" + - "kolla_logs:/var/log/kolla/" + - "{{ kolla_dev_repos_directory ~ '/venus/venus:/var/lib/kolla/venv/lib/python' ~ distro_python_version ~ '/site-packages/venus' if venus_dev_mode | bool else '' }}" + - "venus:/var/lib/venus/" + +venus_extra_volumes: "{{ default_extra_volumes }}" +venus_api_extra_volumes: "{{ venus_extra_volumes }}" +venus_manager_extra_volumes: "{{ venus_extra_volumes }}" + +#################### +# OpenStack +#################### +venus_internal_endpoint: "{{ internal_protocol }}://{{ kolla_internal_fqdn | put_address_in_context('url') }}:{{ venus_api_port }}/v1.0/%(tenant_id)s" +venus_public_endpoint: "{{ public_protocol }}://{{ kolla_external_fqdn | put_address_in_context('url') }}:{{ venus_api_port }}/v1.0/%(tenant_id)s" + +venus_logging_debug: "{{ openstack_logging_debug }}" + +venus_keystone_user: "venus" + +openstack_venus_auth: "{{ openstack_auth }}" + + +#################### +# Kolla +#################### +venus_git_repository: "https://opendev.org/inspur/venus" +venus_dev_repos_pull: "{{ kolla_dev_repos_pull }}" +venus_dev_mode: "{{ kolla_dev_mode }}" +venus_source_version: "{{ kolla_source_version }}" + +#################### +# logging +#################### +openstack_logging_default_format_string: "%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [- req-None - - - - -] %(instance)s%(message)s" +openstack_logging_context_format_string: "%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s" + +#################### +# Notifications +#################### +venus_notification_topics: + - name: notifications + enabled: "{{ enable_ceilometer | bool }}" + +venus_enabled_notification_topics: "{{ venus_notification_topics | selectattr('enabled', 'equalto', true) | list }}" + +#################### +# Keystone +#################### +venus_ks_services: + - name: "venus" + type: "LMS" + description: "Log Manager Service" + endpoints: + - {'interface': 'internal', 'url': '{{ venus_internal_endpoint }}'} + - {'interface': 'public', 'url': '{{ venus_public_endpoint }}'} + +venus_ks_users: + - project: "service" + user: "{{ venus_keystone_user }}" + password: "{{ venus_keystone_password }}" + role: "admin" diff --git a/ansible/roles/venus/handlers/main.yml b/ansible/roles/venus/handlers/main.yml new file mode 100644 index 0000000000..7fc63877e6 --- /dev/null +++ b/ansible/roles/venus/handlers/main.yml @@ -0,0 +1,32 @@ +--- +- name: Restart venus-api container + vars: + service_name: "venus-api" + service: "{{ venus_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 }}" + healthcheck: "{{ service.healthcheck | default(omit) }}" + when: + - kolla_action != "config" + +- name: Restart venus-manager container + vars: + service_name: "venus-manager" + service: "{{ venus_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 }}" + healthcheck: "{{ service.healthcheck | default(omit) }}" + when: + - kolla_action != "config" diff --git a/ansible/roles/venus/tasks/bootstrap.yml b/ansible/roles/venus/tasks/bootstrap.yml new file mode 100644 index 0000000000..0edce5d50b --- /dev/null +++ b/ansible/roles/venus/tasks/bootstrap.yml @@ -0,0 +1,34 @@ +--- +- name: Creating venus 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: "{{ venus_database_name }}" + run_once: True + delegate_to: "{{ groups['venus-api'][0] }}" + when: + - not use_preconfigured_databases | bool + +- name: Creating venus 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: "{{ venus_database_user }}" + password: "{{ venus_database_password }}" + host: "%" + priv: "{{ venus_database_name }}.*:ALL" + append_privs: "yes" + run_once: True + delegate_to: "{{ groups['venus-api'][0] }}" + when: + - not use_preconfigured_databases | bool diff --git a/ansible/roles/venus/tasks/check-containers.yml b/ansible/roles/venus/tasks/check-containers.yml new file mode 100644 index 0000000000..9601bb2fb5 --- /dev/null +++ b/ansible/roles/venus/tasks/check-containers.yml @@ -0,0 +1,17 @@ +--- +- name: Check venus 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 }}" + healthcheck: "{{ item.value.healthcheck | default(omit) }}" + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ venus_services }}" + notify: + - "Restart {{ item.key }} container" diff --git a/ansible/roles/venus/tasks/check.yml b/ansible/roles/venus/tasks/check.yml new file mode 100644 index 0000000000..ed97d539c0 --- /dev/null +++ b/ansible/roles/venus/tasks/check.yml @@ -0,0 +1 @@ +--- diff --git a/ansible/roles/venus/tasks/clone.yml b/ansible/roles/venus/tasks/clone.yml new file mode 100644 index 0000000000..4d85cc0e80 --- /dev/null +++ b/ansible/roles/venus/tasks/clone.yml @@ -0,0 +1,8 @@ +--- +- name: Cloning venus source repository for development + become: true + git: + repo: "{{ venus_git_repository }}" + dest: "{{ kolla_dev_repos_directory }}/{{ project_name }}" + update: "{{ venus_dev_repos_pull }}" + version: "{{ venus_source_version }}" diff --git a/ansible/roles/venus/tasks/config.yml b/ansible/roles/venus/tasks/config.yml new file mode 100644 index 0000000000..37fccd9767 --- /dev/null +++ b/ansible/roles/venus/tasks/config.yml @@ -0,0 +1,81 @@ +--- +- 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: "{{ venus_services }}" + +- name: Check if policies shall be overwritten + stat: + path: "{{ item }}" + run_once: True + delegate_to: localhost + register: venus_policy + with_first_found: + - files: "{{ supported_policy_format_list }}" + paths: + - "{{ node_custom_config }}/venus/" + skip: true + +- name: Set venus policy file + set_fact: + venus_policy_file: "{{ venus_policy.results.0.stat.path | basename }}" + venus_policy_file_path: "{{ venus_policy.results.0.stat.path }}" + when: + - venus_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: "{{ venus_services }}" + notify: + - "Restart {{ item.key }} container" + +- name: Copying over venus.conf + vars: + service_name: "{{ item.key }}" + merge_configs: + sources: + - "{{ role_path }}/templates/venus.conf.j2" + - "{{ node_custom_config }}/global.conf" + - "{{ node_custom_config }}/venus.conf" + - "{{ node_custom_config }}/venus/{{ item.key }}.conf" + - "{{ node_custom_config }}/venus/{{ inventory_hostname }}/venus.conf" + dest: "{{ node_config_directory }}/{{ item.key }}/venus.conf" + mode: "0660" + become: true + when: + - inventory_hostname in groups[item.value.group] + - item.value.enabled | bool + with_dict: "{{ venus_services }}" + notify: + - "Restart {{ item.key }} container" + +- name: Copying over existing policy file + template: + src: "{{ venus_policy_file_path }}" + dest: "{{ node_config_directory }}/{{ item.key }}/{{ venus_policy_file }}" + mode: "0660" + when: + - venus_policy_file is defined + - inventory_hostname in groups[item.value.group] + with_dict: "{{ venus_services }}" + notify: + - Restart {{ item.key }} container diff --git a/ansible/roles/venus/tasks/copy-certs.yml b/ansible/roles/venus/tasks/copy-certs.yml new file mode 100644 index 0000000000..c0452d546e --- /dev/null +++ b/ansible/roles/venus/tasks/copy-certs.yml @@ -0,0 +1,6 @@ +--- +- name: "Copy certificates and keys for {{ project_name }}" + import_role: + role: service-cert-copy + vars: + project_services: "{{ venus_services }}" diff --git a/ansible/roles/venus/tasks/deploy-containers.yml b/ansible/roles/venus/tasks/deploy-containers.yml new file mode 100644 index 0000000000..eb24ab5c7a --- /dev/null +++ b/ansible/roles/venus/tasks/deploy-containers.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: check-containers.yml diff --git a/ansible/roles/venus/tasks/deploy.yml b/ansible/roles/venus/tasks/deploy.yml new file mode 100644 index 0000000000..b9775dda85 --- /dev/null +++ b/ansible/roles/venus/tasks/deploy.yml @@ -0,0 +1,14 @@ +--- +- import_tasks: register.yml + +- import_tasks: config.yml + +- import_tasks: check-containers.yml + +- include_tasks: clone.yml + when: venus_dev_mode | bool + +- import_tasks: bootstrap.yml + +- name: Flush handlers + meta: flush_handlers diff --git a/ansible/roles/venus/tasks/loadbalancer.yml b/ansible/roles/venus/tasks/loadbalancer.yml new file mode 100644 index 0000000000..747b8623de --- /dev/null +++ b/ansible/roles/venus/tasks/loadbalancer.yml @@ -0,0 +1,7 @@ +--- +- name: "Configure haproxy for {{ project_name }}" + import_role: + name: haproxy-config + vars: + project_services: "{{ venus_services }}" + tags: always diff --git a/ansible/roles/venus/tasks/main.yml b/ansible/roles/venus/tasks/main.yml new file mode 100644 index 0000000000..bc5d1e6257 --- /dev/null +++ b/ansible/roles/venus/tasks/main.yml @@ -0,0 +1,2 @@ +--- +- include_tasks: "{{ kolla_action }}.yml" diff --git a/ansible/roles/venus/tasks/precheck.yml b/ansible/roles/venus/tasks/precheck.yml new file mode 100644 index 0000000000..cf40ae64b3 --- /dev/null +++ b/ansible/roles/venus/tasks/precheck.yml @@ -0,0 +1,24 @@ +--- +- import_role: + name: service-precheck + vars: + service_precheck_services: "{{ venus_services }}" + service_name: "{{ project_name }}" + +- name: Get container facts + become: true + kolla_container_facts: + name: + - venus_api + register: container_facts + +- name: Checking free port for Venus API + wait_for: + host: "{{ api_interface_address }}" + port: "{{ venus_api_port }}" + connect_timeout: 1 + timeout: 1 + state: stopped + when: + - container_facts['venus_api'] is not defined + - inventory_hostname in groups['venus-api'] diff --git a/ansible/roles/venus/tasks/pull.yml b/ansible/roles/venus/tasks/pull.yml new file mode 100644 index 0000000000..7961b96403 --- /dev/null +++ b/ansible/roles/venus/tasks/pull.yml @@ -0,0 +1,11 @@ +--- +- name: Pulling venus 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: "{{ venus_services }}" diff --git a/ansible/roles/venus/tasks/reconfigure.yml b/ansible/roles/venus/tasks/reconfigure.yml new file mode 100644 index 0000000000..5b10a7e111 --- /dev/null +++ b/ansible/roles/venus/tasks/reconfigure.yml @@ -0,0 +1,2 @@ +--- +- import_tasks: deploy.yml diff --git a/ansible/roles/venus/tasks/register.yml b/ansible/roles/venus/tasks/register.yml new file mode 100644 index 0000000000..d61d9a9b0c --- /dev/null +++ b/ansible/roles/venus/tasks/register.yml @@ -0,0 +1,7 @@ +--- +- import_role: + name: service-ks-register + vars: + service_ks_register_auth: "{{ openstack_venus_auth }}" + service_ks_register_services: "{{ venus_ks_services }}" + service_ks_register_users: "{{ venus_ks_users }}" diff --git a/ansible/roles/venus/tasks/stop.yml b/ansible/roles/venus/tasks/stop.yml new file mode 100644 index 0000000000..5016a76343 --- /dev/null +++ b/ansible/roles/venus/tasks/stop.yml @@ -0,0 +1,6 @@ +--- +- import_role: + name: service-stop + vars: + project_services: "{{ venus_services }}" + service_name: "{{ project_name }}" diff --git a/ansible/roles/venus/tasks/upgrade.yml b/ansible/roles/venus/tasks/upgrade.yml new file mode 100644 index 0000000000..49edff81e3 --- /dev/null +++ b/ansible/roles/venus/tasks/upgrade.yml @@ -0,0 +1,7 @@ +--- +- import_tasks: config.yml + +- import_tasks: check-containers.yml + +- name: Flush handlers + meta: flush_handlers diff --git a/ansible/roles/venus/templates/venus-api.json.j2 b/ansible/roles/venus/templates/venus-api.json.j2 new file mode 100644 index 0000000000..8db87242d0 --- /dev/null +++ b/ansible/roles/venus/templates/venus-api.json.j2 @@ -0,0 +1,19 @@ +{ + "command": "venus-api --config-file /etc/venus/venus.conf", + "config_files": [ + { + "source": "{{ container_config_directory }}/venus.conf", + "dest": "/etc/venus/venus.conf", + "owner": "venus", + "perm": "0644" + } + ], + "permissions": [ + { + "path":"/var/log/kolla/venus/venus-api.log", + "owner": "venus:venus", + "recurse": true + } + ] +} + diff --git a/ansible/roles/venus/templates/venus-manager.json.j2 b/ansible/roles/venus/templates/venus-manager.json.j2 new file mode 100644 index 0000000000..75439d6c6f --- /dev/null +++ b/ansible/roles/venus/templates/venus-manager.json.j2 @@ -0,0 +1,19 @@ +{ + "command": "venus-manager --config-file /etc/venus/venus.conf task start", + "config_files": [ + { + "source": "{{ container_config_directory }}/venus.conf", + "dest": "/etc/venus/venus.conf", + "owner": "venus", + "perm": "0644" + } + ], + "permissions": [ + { + "path":"/var/log/kolla/venus/venus-manager.log", + "owner": "venus:venus", + "recurse": true + } + ] +} + diff --git a/ansible/roles/venus/templates/venus.conf.j2 b/ansible/roles/venus/templates/venus.conf.j2 new file mode 100644 index 0000000000..f593008815 --- /dev/null +++ b/ansible/roles/venus/templates/venus.conf.j2 @@ -0,0 +1,35 @@ +[DEFAULT] +my_ip = {{ api_interface_address }} +periodic_interval = 60 +rootwrap_config = /etc/venus/rootwrap.conf +api_paste_config = /etc/venus/api-paste.ini +log_dir = /var/log/kolla/venus/ +debug = {{ venus_logging_debug }} +auth_strategy = keystone +os_region_name = {{ openstack_region_name }} +osapi_venus_listen = {{ api_interface_address }} +osapi_venus_listen_port = {{ venus_api_port }} + +logging_default_format_string = {{ openstack_logging_default_format_string }} +logging_context_format_string = {{ openstack_logging_context_format_string }} + +transport_url = {{ rpc_transport_url }} + +[database] +connection = mysql+pymysql://{{ venus_database_user }}:{{ venus_database_password }}@{{ venus_database_address }}/{{ venus_database_name }}?charset=utf8 + +[keystone_authtoken] +cafile = {{ openstack_cacert }} +project_name = service +password = {{ venus_keystone_password }} +username = {{ venus_keystone_user }} +auth_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }} +project_domain_id = {{ default_project_domain_id }} +user_domain_id = {{ default_user_domain_id }} +auth_type = password +memcached_servers = {% for host in groups['memcached'] %}{{ 'api' | kolla_address(host) | put_address_in_context('memcache') }}:{{ memcached_port }}{% if not loop.last %},{% endif %}{% endfor %} + +{% if enable_elasticsearch | bool %} +[elasticsearch] +url = {{ elasticsearch_internal_endpoint }} +{% endif %} diff --git a/ansible/roles/venus/vars/main.yml b/ansible/roles/venus/vars/main.yml new file mode 100644 index 0000000000..3955d5f95f --- /dev/null +++ b/ansible/roles/venus/vars/main.yml @@ -0,0 +1,2 @@ +--- +project_name: "venus" diff --git a/ansible/site.yml b/ansible/site.yml index 756a1daa97..3a41f7ad18 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -74,6 +74,7 @@ - enable_tacker_{{ enable_tacker | bool }} - enable_telegraf_{{ enable_telegraf | bool }} - enable_trove_{{ enable_trove | bool }} + - enable_venus_{{ enable_venus | bool }} - enable_vitrage_{{ enable_vitrage | bool }} - enable_watcher_{{ enable_watcher | bool }} - enable_zookeeper_{{ enable_zookeeper | bool }} @@ -326,6 +327,11 @@ tasks_from: loadbalancer tags: trove when: enable_trove | bool + - include_role: + name: venus + tasks_from: loadbalancer + tags: venus + when: enable_venus | bool - include_role: name: vitrage tasks_from: loadbalancer @@ -1121,3 +1127,15 @@ - { role: masakari, tags: masakari, when: enable_masakari | bool } + +- name: Apply role venus + gather_facts: false + hosts: + - venus-api + - venus-manager + - '&enable_venus_True' + serial: '{{ kolla_serial|default("0") }}' + roles: + - { role: venus, + tags: venus, + when: enable_venus | bool } diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index 6855eaedc8..a5b95a8571 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -401,6 +401,7 @@ #enable_telegraf: "no" #enable_trove: "no" #enable_trove_singletenant: "no" +#enable_venus: "no" #enable_vitrage: "no" #enable_watcher: "no" #enable_zookeeper: "{{ enable_kafka | bool or enable_storm | bool }}" diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml index b343496b9e..5ff41d16e3 100644 --- a/etc/kolla/passwords.yml +++ b/etc/kolla/passwords.yml @@ -168,6 +168,9 @@ zun_keystone_password: vitrage_database_password: vitrage_keystone_password: +venus_database_password: +venus_keystone_password: + masakari_database_password: masakari_keystone_password: diff --git a/releasenotes/notes/add-venus-80b98b2d3bea348e.yaml b/releasenotes/notes/add-venus-80b98b2d3bea348e.yaml new file mode 100644 index 0000000000..2af91a054c --- /dev/null +++ b/releasenotes/notes/add-venus-80b98b2d3bea348e.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Add Venus deployment support. + The project provides a solution to log collection. diff --git a/tests/templates/inventory.j2 b/tests/templates/inventory.j2 index b6b6bcd559..b14aa468a2 100644 --- a/tests/templates/inventory.j2 +++ b/tests/templates/inventory.j2 @@ -810,3 +810,12 @@ ovn-database [ovn-sb-db:children] ovn-database + +[venus:children] +monitoring + +[venus-api:children] +venus + +[venus-manager:children] +venus