Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions playbooks/vendordata.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- hosts: vendordata
roles: [vendordata]
become: true
tags:
- vendordata
20 changes: 20 additions & 0 deletions roles/vendordata/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
vendordata_config_path: /etc/vendordata
vendordata_config_file: "{{ vendordata_config_path }}/vendordata.conf"
vendordata_tag: "v1.1"

vendordata_services:
vendordata_api:
group: vendordata
enabled: true
image: "ghcr.io/chameleoncloud/chameleon-vendordata-service:{{ vendordata_tag }}"
network: host
mounts:
- type: bind
src: "{{ vendordata_config_file }}"
dst: "{{ vendordata_config_file }}"
- type: bind
src: /etc/kolla/nova-api/nova.conf
dst: /etc/nova/nova.conf
read_only: True

instance_metrics_writer_username: instance_metrics_writer
6 changes: 6 additions & 0 deletions roles/vendordata/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
- name: "restart vendordata service"
service:
name: "vendordata_api"
state: restarted
become: yes
58 changes: 58 additions & 0 deletions roles/vendordata/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
- name: Create config directory.
become: yes
file:
path: "{{ vendordata_config_path }}"
state: directory

- name: Create vendordata conf.
become: yes
template:
src: "vendordata.conf.j2"
mode: 0640
dest: "{{ vendordata_config_path }}/vendordata.conf"
notify:
- restart vendordata service

- name: Create OpenStack user for service user.
become: True
kolla_toolbox:
container_engine: "{{ kolla_container_engine }}"
module_name: os_user
module_args:
auth: "{{ openstack_auth }}"
name: "{{ instance_metrics_writer_username }}"
password: "{{ instance_metrics_writer_password }}"
domain: default
run_once: True
delegate_to: "{{ groups['control'][0] }}"


- name: download vendordata container
block:
- name: Pull Docker image
community.general.docker_image:
source: pull
name: "{{ vendordata_services.vendordata_api.image }}"
force_source: yes
become: True
when:
- inventory_hostname in groups["vendordata"]

- name: Configure vendordata services.
include_role:
name: chameleon.docker_service
vars:
service_name: "{{ item.key }}"
service_bind_address: "{{ item.value.bind_address|default(api_interface_address) }}"
docker_image: "{{ item.value.image }}"
docker_network: "{{ item.value.network|default('bridge') }}"
docker_environment: "{{ item.value.environment|default({}) }}"
docker_mounts: "{{ item.value.mounts|default([]) }}"
docker_ports: "{{ item.value.ports|default([]) }}"
docker_command: "{{ item.value.command|default('') }}"
loop: "{{ vendordata_services|dict2items }}"
loop_control:
label: "{{ item.key }}"
when:
- inventory_hostname in groups[item.value.group]
15 changes: 15 additions & 0 deletions roles/vendordata/templates/vendordata.conf.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[openstack]
auth_url: {{ keystone_public_url }}

[chameleon]
cluster: chameleon
grid: chameleoncloud
site: {{ chameleon_site_name }}
region: {{ openstack_region_name }}
admin_username: {{ keystone_admin_user }}
admin_password: {{ keystone_admin_password }}
admin_project_name: {{ keystone_admin_project }}

[instance_metrics_writer]
username: {{ instance_metrics_writer_username }}
password: {{ instance_metrics_writer_password }}
5 changes: 5 additions & 0 deletions site-config/globals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,8 @@ blazar_network_default_resource_properties: '["=", "\$stitch_provider", "none"]'
blazar_network_retry_without_default_resources: no
blazar_floatingip_reservation_network_regex: "[pP]ublic"
blazar_host_url_format: "https://chameleoncloud.org/hardware/node/sites/{{ chameleon_site_name }}/clusters/chameleon/nodes/{hypervisor_hostname}/"

####################
# Vendordata Config
####################
vendordata_read_timeout: 10 # if blazar is enabled, vendordata has slow queries
12 changes: 12 additions & 0 deletions site-config/inventory/02-kolla-hosts
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
###########################
# Chameleon Specific Groups
###########################

# Chameleon vendordata service
[vendordata:children]
control

################################
# Kolla OpenStack Service Groups
################################

[baremetal:children]
control
network
Expand Down
18 changes: 18 additions & 0 deletions site-config/node_custom_config/nova.conf
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,21 @@ device_spec = {{ nova_pci_device_spec | to_json }}
{% for alias in nova_pci_alias | default('[]') %}
alias = {{ alias | to_json }}
{% endfor %}

{% if service_name == "nova-api" %}
# Custom vendordata service
[api]
vendordata_providers = DynamicJSON
vendordata_dynamic_targets = chameleon@http://127.0.0.1:8911
vendordata_dynamic_read_timeout = "{{ vendordata_read_timeout:-5 }}"

[vendordata_dynamic_auth]
auth_type = password
auth_url = {{ keystone_internal_url }}
project_name = service
project_domain_id = default
username = {{ nova_keystone_user }}
user_domain_id = default
password = {{ nova_keystone_password }}

{% endif %}
5 changes: 5 additions & 0 deletions site-config/passwords.yml.example
Original file line number Diff line number Diff line change
Expand Up @@ -275,3 +275,8 @@ proxysql_stats_password:
# OpenSearch
############
opensearch_dashboards_password:

##############################
# Chameleon Vendordata Service
##############################
instance_metrics_writer_password:
Loading