Octavia Jobboard integration

Add parameters for configuring Octavia Jobboard for the amphorav2
provider.

Jobboard for Octavia is enabled by the OctaviaEnableJobbard (default
false), Octavia is configured by puppet and THT creates an additional
database to store persistent objects managed by Octavia (dbname is
octavia_persistence).

Depends-On: https://review.opendev.org/c/openstack/puppet-tripleo/+/820668

Change-Id: Ia16b840ce63319375eddf860a4024c2ad47fab96
This commit is contained in:
Gregory Thiemonge 2022-08-26 09:50:19 +02:00
parent 8e34b58d70
commit 3f55cbfbcf
5 changed files with 131 additions and 91 deletions

View File

@ -17,6 +17,7 @@ resource_registry:
OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml
OS::TripleO::Services::Pacemaker: ../../deployment/pacemaker/pacemaker-baremetal-puppet.yaml OS::TripleO::Services::Pacemaker: ../../deployment/pacemaker/pacemaker-baremetal-puppet.yaml
OS::TripleO::Services::PacemakerRemote: ../../deployment/pacemaker/pacemaker-remote-baremetal-puppet.yaml OS::TripleO::Services::PacemakerRemote: ../../deployment/pacemaker/pacemaker-remote-baremetal-puppet.yaml
OS::TripleO::Services::Redis: ../../deployment/database/redis-container-puppet.yaml
OS::TripleO::Services::SwiftDispersion: OS::Heat::None OS::TripleO::Services::SwiftDispersion: OS::Heat::None
OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftProxy: OS::Heat::None
OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None

View File

@ -15,6 +15,7 @@ resource_registry:
OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml
OS::TripleO::Services::OsloMessagingNotify: ../../deployment/rabbitmq/rabbitmq-messaging-notify-shared-puppet.yaml OS::TripleO::Services::OsloMessagingNotify: ../../deployment/rabbitmq/rabbitmq-messaging-notify-shared-puppet.yaml
OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-pacemaker-puppet.yaml
OS::TripleO::Services::Redis: ../../deployment/database/redis-container-puppet.yaml
OS::TripleO::Services::SwiftDispersion: OS::Heat::None OS::TripleO::Services::SwiftDispersion: OS::Heat::None
OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftProxy: OS::Heat::None
OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None

View File

@ -11,6 +11,7 @@ resource_registry:
OS::TripleO::Services::OctaviaHousekeeping: ../../deployment/octavia/octavia-housekeeping-container-puppet.yaml OS::TripleO::Services::OctaviaHousekeeping: ../../deployment/octavia/octavia-housekeeping-container-puppet.yaml
OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml OS::TripleO::Services::OctaviaWorker: ../../deployment/octavia/octavia-worker-container-puppet.yaml
OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-container-puppet.yaml OS::TripleO::Services::OsloMessagingRpc: ../../deployment/rabbitmq/rabbitmq-messaging-rpc-container-puppet.yaml
OS::TripleO::Services::Redis: ../../deployment/database/redis-container-puppet.yaml
OS::TripleO::Services::SwiftDispersion: OS::Heat::None OS::TripleO::Services::SwiftDispersion: OS::Heat::None
OS::TripleO::Services::SwiftProxy: OS::Heat::None OS::TripleO::Services::SwiftProxy: OS::Heat::None
OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None

View File

@ -287,6 +287,7 @@ outputs:
octavia::db::mysql::user: {get_param: OctaviaUserName} octavia::db::mysql::user: {get_param: OctaviaUserName}
octavia::db::mysql::host: '%' octavia::db::mysql::host: '%'
octavia::db::mysql::dbname: octavia octavia::db::mysql::dbname: octavia
octavia::db::mysql::persistence_dbname: octavia_persistence
horizon: horizon:
horizon::dashboards::octavia::policies: {get_param: OctaviaApiPolicies} horizon::dashboards::octavia::policies: {get_param: OctaviaApiPolicies}
# BEGIN DOCKER SETTINGS # # BEGIN DOCKER SETTINGS #
@ -354,7 +355,7 @@ outputs:
recurse: true recurse: true
- {get_attr: [OctaviaProviderConfig, role_data, kolla_permissions]} - {get_attr: [OctaviaProviderConfig, role_data, kolla_permissions]}
/var/lib/kolla/config_files/octavia_api_db_sync.json: /var/lib/kolla/config_files/octavia_api_db_sync.json:
command: "/usr/bin/bootstrap_host_exec octavia_api su octavia -s /bin/bash -c '/usr/bin/octavia-db-manage upgrade head'" command: "/usr/bin/bootstrap_host_exec octavia_api su octavia -s /bin/bash -c '/usr/bin/octavia-db-manage upgrade head && /usr/bin/octavia-db-manage upgrade_persistence'"
config_files: *octavia_api_config_files config_files: *octavia_api_config_files
permissions: *octavia_api_permissions permissions: *octavia_api_permissions
metadata_settings: {get_attr: [OctaviaProviderConfig, role_data, metadata_settings]} metadata_settings: {get_attr: [OctaviaProviderConfig, role_data, metadata_settings]}

View File

@ -218,6 +218,18 @@ parameters:
type: string type: string
description: Key to identify heartbeat messages for amphorae. description: Key to identify heartbeat messages for amphorae.
hidden: true hidden: true
OctaviaEnableJobboard:
default: false
description: Enable jobboard for the amphorav2 driver, it enables flow resumption for the amphora driver.
type: boolean
OctaviaJobboardExpirationTime:
default: 30
description: Expiry of claimed jobs in jobboard.
type: number
RedisPassword:
description: The password for the redis service account.
type: string
hidden: true
conditions: conditions:
octavia_ca_cert_set: octavia_ca_cert_set:
@ -237,97 +249,121 @@ outputs:
value: value:
service_name: octavia_base service_name: octavia_base
config_settings: config_settings:
octavia::logging::debug: map_merge:
if: - octavia::logging::debug:
- {get_param: OctaviaDebug}
- true
- {get_param: Debug}
octavia::purge_config: {get_param: EnableConfigPurge}
octavia::notification_driver: {get_param: NotificationDriver}
octavia::db::database_connection:
make_url:
scheme: {get_param: [EndpointMap, MysqlInternal, protocol]}
username: {get_param: OctaviaUserName}
password: {get_param: OctaviaPassword}
host: {get_param: [EndpointMap, MysqlInternal, host]}
path: /octavia
query:
if: if:
- {get_param: EnableSQLAlchemyCollectd} - {get_param: OctaviaDebug}
- read_default_file: /etc/my.cnf.d/tripleo.cnf - true
read_default_group: tripleo - {get_param: Debug}
plugin: collectd octavia::purge_config: {get_param: EnableConfigPurge}
collectd_program_name: octavia octavia::notification_driver: {get_param: NotificationDriver}
collectd_host: localhost octavia::db::database_connection:
- read_default_file: /etc/my.cnf.d/tripleo.cnf make_url:
read_default_group: tripleo scheme: {get_param: [EndpointMap, MysqlInternal, protocol]}
octavia::service_auth::auth_url: {get_param: [EndpointMap, KeystoneV3Internal, uri]} username: {get_param: OctaviaUserName}
octavia::service_auth::auth_type: 'password' password: {get_param: OctaviaPassword}
octavia::service_auth::username: {get_param: OctaviaUserName} host: {get_param: [EndpointMap, MysqlInternal, host]}
octavia::service_auth::password: {get_param: OctaviaPassword} path: /octavia
octavia::service_auth::project_name: {get_param: OctaviaProjectName} query:
octavia::service_auth::project_domain_name: 'Default' if:
octavia::service_auth::user_domain_name: 'Default' - {get_param: EnableSQLAlchemyCollectd}
octavia::service_auth::region_name: {get_param: KeystoneRegion} - read_default_file: /etc/my.cnf.d/tripleo.cnf
octavia::nova::endpoint_type: 'internalURL' read_default_group: tripleo
octavia::nova::region_name: {get_param: KeystoneRegion} plugin: collectd
octavia::neutron::endpoint_type: 'internalURL' collectd_program_name: octavia
octavia::neutron::region_name: {get_param: KeystoneRegion} collectd_host: localhost
octavia::glance::endpoint_type: 'internalURL' - read_default_file: /etc/my.cnf.d/tripleo.cnf
octavia::glance::region_name: {get_param: KeystoneRegion} read_default_group: tripleo
octavia::cinder::endpoint_type: 'internalURL' octavia::service_auth::auth_url: {get_param: [EndpointMap, KeystoneV3Internal, uri]}
octavia::cinder::region_name: {get_param: KeystoneRegion} octavia::service_auth::auth_type: 'password'
octavia::certificates::endpoint_type: 'internalURL' octavia::service_auth::username: {get_param: OctaviaUserName}
octavia::certificates::ca_certificate: {get_param: OctaviaCaCertFile} octavia::service_auth::password: {get_param: OctaviaPassword}
octavia::certificates::ca_private_key: {get_param: OctaviaCaKeyFile} octavia::service_auth::project_name: {get_param: OctaviaProjectName}
octavia::certificates::client_cert: {get_param: OctaviaClientCertFile} octavia::service_auth::project_domain_name: 'Default'
octavia::certificates::server_certs_key_passphrase: {get_param: OctaviaServerCertsKeyPassphrase} octavia::service_auth::user_domain_name: 'Default'
octavia::certificates::ca_private_key_passphrase: {get_param: OctaviaCaKeyPassphrase} octavia::service_auth::region_name: {get_param: KeystoneRegion}
octavia::worker::manage_nova_flavor: false octavia::nova::endpoint_type: 'internalURL'
octavia::controller::amp_boot_network_list: {get_param: OctaviaAmphoraNetworkList} octavia::nova::region_name: {get_param: KeystoneRegion}
octavia::controller::amp_flavor_id: {get_param: OctaviaFlavorId} octavia::neutron::endpoint_type: 'internalURL'
octavia::controller::amp_image_tag: {get_param: OctaviaAmphoraImageTag} octavia::neutron::region_name: {get_param: KeystoneRegion}
octavia::controller::amp_ssh_key_name: {get_param: OctaviaAmphoraSshKeyName} octavia::glance::endpoint_type: 'internalURL'
octavia::controller::amp_timezone: {get_param: TimeZone} octavia::glance::region_name: {get_param: KeystoneRegion}
octavia::controller::enable_ssh_access: true octavia::cinder::endpoint_type: 'internalURL'
octavia::controller::timeout_client_data: {get_param: OctaviaTimeoutClientData} octavia::cinder::region_name: {get_param: KeystoneRegion}
octavia::controller::timeout_member_connect: {get_param: OctaviaTimeoutMemberConnect} octavia::certificates::endpoint_type: 'internalURL'
octavia::controller::timeout_member_data: {get_param: OctaviaTimeoutMemberData} octavia::certificates::ca_certificate: {get_param: OctaviaCaCertFile}
octavia::controller::timeout_tcp_inspect: {get_param: OctaviaTimeoutTcpInspect} octavia::certificates::ca_private_key: {get_param: OctaviaCaKeyFile}
octavia::controller::connection_max_retries: {get_param: OctaviaConnectionMaxRetries} octavia::certificates::client_cert: {get_param: OctaviaClientCertFile}
octavia::controller::connection_logging: {get_param: OctaviaConnectionLogging} octavia::certificates::server_certs_key_passphrase: {get_param: OctaviaServerCertsKeyPassphrase}
octavia::controller::build_active_retries: {get_param: OctaviaBuildActiveRetries} octavia::certificates::ca_private_key_passphrase: {get_param: OctaviaCaKeyPassphrase}
octavia::controller::admin_log_targets: {get_param: OctaviaAdminLogTargets} octavia::worker::manage_nova_flavor: false
octavia::controller::administrative_log_facility: {get_param: OctaviaAdminLogFacility} octavia::controller::amp_boot_network_list: {get_param: OctaviaAmphoraNetworkList}
octavia::controller::forward_all_logs: {get_param: OctaviaForwardAllLogs} octavia::controller::amp_flavor_id: {get_param: OctaviaFlavorId}
octavia::controller::tenant_log_targets: {get_param: OctaviaTenantLogTargets} octavia::controller::amp_image_tag: {get_param: OctaviaAmphoraImageTag}
octavia::controller::user_log_facility: {get_param: OctaviaTenantLogFacility} octavia::controller::amp_ssh_key_name: {get_param: OctaviaAmphoraSshKeyName}
octavia::controller::user_log_format: octavia::controller::amp_timezone: {get_param: TimeZone}
if: octavia::controller::enable_ssh_access: true
- octavia_user_log_format_set octavia::controller::timeout_client_data: {get_param: OctaviaTimeoutClientData}
- {get_param: OctaviaUserLogFormat} octavia::controller::timeout_member_connect: {get_param: OctaviaTimeoutMemberConnect}
octavia::controller::disable_local_log_storage: {get_param: OctaviaDisableLocalLogStorage} octavia::controller::timeout_member_data: {get_param: OctaviaTimeoutMemberData}
octavia::networking::port_detach_timeout: {get_param: OctaviaPortDetachTimeout} octavia::controller::timeout_tcp_inspect: {get_param: OctaviaTimeoutTcpInspect}
octavia::nova::enable_anti_affinity: {get_param: OctaviaAntiAffinity} octavia::controller::connection_max_retries: {get_param: OctaviaConnectionMaxRetries}
octavia::rpc_response_timeout: {get_param: OctaviaRpcResponseTimeout} octavia::controller::connection_logging: {get_param: OctaviaConnectionLogging}
octavia::rabbit_heartbeat_in_pthread: false octavia::controller::build_active_retries: {get_param: OctaviaBuildActiveRetries}
octavia::controller::loadbalancer_topology: octavia::controller::admin_log_targets: {get_param: OctaviaAdminLogTargets}
if: octavia::controller::administrative_log_facility: {get_param: OctaviaAdminLogFacility}
- octavia_topology_set octavia::controller::forward_all_logs: {get_param: OctaviaForwardAllLogs}
- {get_param: OctaviaLoadBalancerTopology} octavia::controller::tenant_log_targets: {get_param: OctaviaTenantLogTargets}
octavia::certificates::ca_certificate_data: octavia::controller::user_log_facility: {get_param: OctaviaTenantLogFacility}
if: octavia::controller::user_log_format:
- octavia_ca_cert_set if:
- {get_param: OctaviaCaCert} - octavia_user_log_format_set
octavia::certificates::ca_private_key_data: - {get_param: OctaviaUserLogFormat}
if: octavia::controller::disable_local_log_storage: {get_param: OctaviaDisableLocalLogStorage}
- octavia_ca_key_set octavia::networking::port_detach_timeout: {get_param: OctaviaPortDetachTimeout}
- {get_param: OctaviaCaKey} octavia::nova::enable_anti_affinity: {get_param: OctaviaAntiAffinity}
octavia::certificates::client_cert_data: octavia::rpc_response_timeout: {get_param: OctaviaRpcResponseTimeout}
if: octavia::rabbit_heartbeat_in_pthread: false
- octavia_client_cert_set octavia::controller::loadbalancer_topology:
- {get_param: OctaviaClientCert} if:
octavia::controller::heartbeat_key: {get_param: OctaviaHeartbeatKey} - octavia_topology_set
- {get_param: OctaviaLoadBalancerTopology}
octavia::certificates::ca_certificate_data:
if:
- octavia_ca_cert_set
- {get_param: OctaviaCaCert}
octavia::certificates::ca_private_key_data:
if:
- octavia_ca_key_set
- {get_param: OctaviaCaKey}
octavia::certificates::client_cert_data:
if:
- octavia_client_cert_set
- {get_param: OctaviaClientCert}
octavia::controller::heartbeat_key: {get_param: OctaviaHeartbeatKey}
- if:
- {get_param: OctaviaEnableJobboard}
- octavia::task_flow::jobboard_enabled: {get_param: OctaviaEnableJobboard}
octavia::task_flow::jobboard_backend_hosts: "%{hiera('redis_vip')}"
octavia::task_flow::jobboard_backend_password: {get_param: RedisPassword}
octavia::task_flow::jobboard_expiration_time: {get_param: OctaviaJobboardExpirationTime}
octavia::task_flow::persistence_connection:
make_url:
scheme: {get_param: [EndpointMap, MysqlInternal, protocol]}
username: {get_param: OctaviaUserName}
password: {get_param: OctaviaPassword}
host: {get_param: [EndpointMap, MysqlInternal, host]}
path: /octavia_persistence
query:
if:
- {get_param: EnableSQLAlchemyCollectd}
- read_default_file: /etc/my.cnf.d/tripleo.cnf
read_default_group: tripleo
plugin: collectd
collectd_program_name: octavia
collectd_host: localhost
- read_default_file: /etc/my.cnf.d/tripleo.cnf
read_default_group: tripleo
update_tasks: &ensure_start_up_files update_tasks: &ensure_start_up_files
- name: make sure that post-deploy.conf exists before restarting containers on update or upgrade - name: make sure that post-deploy.conf exists before restarting containers on update or upgrade
when: step|int == 5 when: step|int == 5