Update to latest configs

* Add designate module
* Update cinder/cinder-ceph modules
* move the memcache/nova relation to nova block
This commit is contained in:
2026-03-12 12:28:34 +00:00
parent ca39b99173
commit 1b2f59ea56
12 changed files with 443 additions and 24 deletions
+27 -2
View File
@@ -275,10 +275,12 @@ module "vault" {
"ovn-chassis-kvm",
"ovn-chassis-dpdk",
"placement",
"designate",
]
# Common variables
sdn_ids = var.sdn_ids
vips = var.vips
sdn_ids = var.sdn_ids
vips = var.vips
internal-space = var.internal-space
# Application Variables
nagios-context = var.nagios-context
@@ -294,8 +296,31 @@ module "memcached" {
controller_ids = var.controller_ids
all_machines = juju_machine.all_machines
model-name = var.model-name
internal-space = var.internal-space
# Dependancies
novacc_app = juju_application.nova-cloud-controller.name
}
module "designate" {
source = "./modules/designate"
designate-config-overrides = {
nameservers = "ns1.arif-ali.co.uk,ns1.arif-ali.co.uk"
}
# Common variables
controller_ids = var.controller_ids
all_machines = juju_machine.all_machines
model-name = var.model-name
vips = var.vips
internal-space = var.internal-space
public-space = var.public-space
admin-space = var.admin-space
# Dependancies
keystone_app = module.keystone.keystone.name
neutron_app = juju_application.neutron-api.name
rabbitmq-server_app = module.rabbitmq-server.rabbitmq-server.name
memcache_app = module.memcached.memcached.name
}
+15
View File
@@ -143,3 +143,18 @@ resource "juju_integration" "nova-cloud-controller-glance" {
endpoint = "image-service"
}
}
resource "juju_integration" "nova-cloud-controller-memcached" {
model = var.model-name
application {
name = juju_application.nova-cloud-controller.name
endpoint = "memcache"
}
application {
name = module.memcached.memcached.name
endpoint = "cache"
}
}
@@ -8,10 +8,7 @@ resource "juju_application" "cinder-ceph" {
channel = var.cinder-ceph-channel
}
config = {
restrict-ceph-pools = "false"
rbd-pool-name = var.ceph-pool==""? null : var.ceph-pool
}
config = local.cinder-ceph-config
}
resource "juju_integration" "cinder-ceph-mon" {
@@ -100,10 +100,17 @@ variable cinder-ceph-config-overrides {
locals {
base-cinder-ceph-config = {
restrict-ceph-pools = "false"
rbd-pool-name = var.ceph-pool==""? null : var.ceph-pool
}
clean-cinder-ceph-config = {
for k, v in local.base-cinder-ceph-config : k => v
if v != null
}
cinder-ceph-config = merge(
local.base-cinder-ceph-config,
local.clean-cinder-ceph-config,
var.cinder-ceph-config-overrides
)
}
@@ -48,6 +48,7 @@ module "cinder-mysql-router" {
}
module "cinder-hacluster" {
count = contains(keys(var.vips), var.app-name) ? 1 : 0
source = "../hacluster"
sub-name = var.app-name
@@ -139,14 +139,19 @@ locals {
worker-multiplier = var.worker-multiplier
openstack-origin = var.openstack-origin
region = var.openstack-region
vip = var.vips["cinder"]
vip = try(var.vips[var.app-name], null)
use-internal-endpoints = "true"
block-device = "None"
glance-api-version = "2"
}
cleaned-cinder-config = {
for k, v in local.base-cinder-config : k => v
if v != null
}
cinder-config = merge(
local.base-cinder-config,
local.cleaned-cinder-config,
var.cinder-config-overrides
)
}
@@ -0,0 +1,8 @@
terraform {
required_providers {
juju = {
version = "~> 0.19.0"
source = "registry.terraform.io/juju/juju"
}
}
}
@@ -0,0 +1,224 @@
resource "juju_machine" "designate" {
count = var.num_units
model = var.model-name
placement = join(":", ["lxd", var.all_machines[var.controller_ids[count.index+var.num_units]].machine_id])
constraints = "spaces=oam"
}
resource "juju_application" "designate" {
name = var.app-name
model = var.model-name
charm {
name = "designate"
channel = var.designate-channel
base = var.default-base
}
machines = [
for res in juju_machine.designate :
res.machine_id
]
endpoint_bindings = [{
space = var.oam-space
},{
endpoint = "public"
space = var.public-space
},{
endpoint = "admin"
space = var.admin-space
},{
endpoint = "internal"
space = var.internal-space
},{
endpoint = "shared-db"
space = var.internal-space
}]
config = local.designate-config
}
module "designate-mysql-router" {
source = "../mysql-router"
sub-name = var.app-name
model-name = var.model-name
}
module "designate-hacluster" {
source = "../hacluster"
sub-name = var.app-name
model-name = var.model-name
}
resource "juju_machine" "designate-bind" {
count = var.num_units
model = var.model-name
placement = join(":", ["lxd", var.all_machines[var.controller_ids[count.index+var.num_units]].machine_id])
constraints = "spaces=oam"
}
resource "juju_application" "designate-bind" {
name = "${var.app-name}-bind"
model = var.model-name
charm {
name = "designate-bind"
channel = var.designate-channel
base = var.default-base
}
machines = [
for res in juju_machine.designate-bind :
res.machine_id
]
config = {
disable-dnssec-validation = true
forwarders = ""
recursion = true
service_ips = var.vips["designate-bind"]
use-internal-endpoints = true
}
}
module "designate-bind-hacluster" {
source = "../hacluster"
sub-name = "${var.app-name}-bind"
model-name = var.model-name
}
resource "juju_integration" "designate-rmq" {
model = var.model-name
application {
name = juju_application.designate.name
endpoint = "amqp"
}
application {
name = var.rabbitmq-server_app
endpoint = "amqp"
}
lifecycle {
replace_triggered_by = [
juju_application.designate.name,
juju_application.designate.model,
juju_application.designate.constraints,
juju_application.designate.placement,
juju_application.designate.charm.name,
]
}
}
resource "juju_integration" "designate-neutron" {
model = var.model-name
application {
name = juju_application.designate.name
endpoint = "dnsaas"
}
application {
name = var.neutron_app
endpoint = "external-dns"
}
lifecycle {
replace_triggered_by = [
juju_application.designate.name,
juju_application.designate.model,
juju_application.designate.constraints,
juju_application.designate.placement,
juju_application.designate.charm.name,
]
}
}
resource "juju_integration" "designate-keystone" {
model = var.model-name
application {
name = juju_application.designate.name
endpoint = "identity-service"
}
application {
name = var.keystone_app
endpoint = "identity-service"
}
lifecycle {
replace_triggered_by = [
juju_application.designate.name,
juju_application.designate.model,
juju_application.designate.constraints,
juju_application.designate.placement,
juju_application.designate.charm.name,
]
}
}
resource "juju_integration" "designate-memcache" {
model = var.model-name
application {
name = juju_application.designate.name
endpoint = "coordinator-memcached"
}
application {
name = var.memcache_app
endpoint = "cache"
}
lifecycle {
replace_triggered_by = [
juju_application.designate.name,
juju_application.designate.model,
juju_application.designate.constraints,
juju_application.designate.placement,
juju_application.designate.charm.name,
]
}
}
resource "juju_integration" "designate-designate-bind" {
model = var.model-name
application {
name = juju_application.designate.name
endpoint = "dns-backend"
}
application {
name = juju_application.designate-bind.name
endpoint = "dns-backend"
}
lifecycle {
replace_triggered_by = [
juju_application.designate.name,
juju_application.designate.model,
juju_application.designate.constraints,
juju_application.designate.placement,
juju_application.designate.charm.name,
juju_application.designate-bind.name,
juju_application.designate-bind.model,
juju_application.designate-bind.constraints,
juju_application.designate-bind.placement,
juju_application.designate-bind.charm.name,
]
}
}
@@ -0,0 +1,7 @@
output "designate" {
value = juju_application.designate
}
#output "designate-bind" {
# value = juju_application.designate-bind
#}
@@ -0,0 +1,143 @@
variable num_units {
type = number
default = 3
}
variable "all_machines" {
description = "Machines"
type = map(object({
base = string
constraints = string
id = string
machine_id = string
model = string
name = string
series = string
}))
}
variable controller_ids {
type = list(string)
default = []
}
variable model-name {
type = string
default = "openstack"
}
variable default-base {
type = string
default = "ubuntu@22.04"
}
variable default-series {
type = string
default = "jammy"
}
variable designate-channel {
type = string
default = "yoga/stable"
}
variable designate-revision {
type = string
default = ""
}
variable oam-space {
type = string
default = "oam"
}
variable admin-space {
type = string
default = "admin"
}
variable public-space {
type = string
default = "public"
}
variable internal-space {
type = string
default = "internal"
}
variable ceph-public-space {
type = string
default = "ceph-public"
}
variable ceph-cluster-space {
type = string
default = "ceph-cluster"
}
variable overlay-space {
type = string
default = "overlay"
}
variable openstack-origin {
type = string
default = "distro"
}
variable openstack-region {
type = string
default = "RegionOne"
}
variable worker-multiplier {
type = string
default = "0.25"
}
variable app-name {
type = string
default = "designate"
}
variable vips {
type = map(string)
default = {}
}
variable neutron_app {
type = string
default = "neutron-api"
}
variable keystone_app {
type = string
default = "keystone"
}
variable rabbitmq-server_app {
type = string
default = "rabbitmq-server"
}
variable memcache_app {
type = string
default = "memcached"
}
variable designate-config-overrides {
type = map(string)
default = {}
}
locals {
base-designate-config = {
openstack-origin = var.openstack-origin
region = var.openstack-region
use-internal-endpoints = "true"
vip = var.vips["designate"]
}
designate-config = merge(
local.base-designate-config,
var.designate-config-overrides
)
}
@@ -31,18 +31,3 @@ resource "juju_application" "memcached" {
config = local.memcached-config
}
resource "juju_integration" "nova-cc-memcached" {
model = var.model-name
application {
name = var.novacc_app
endpoint = "memcache"
}
application {
name = juju_application.memcached.name
endpoint = "cache"
}
}
+2
View File
@@ -99,6 +99,8 @@ vips = {
vault = "10.0.1.222"
placement = "10.0.1.223"
radosgw = "10.0.1.224"
designate = "10.0.1.225"
designate-bind = "10.0.1.225"
}
fqdn-pub = {