multiple updates

* Add microk8s model
* Add cinder-backup
* Multiple improvements to other plans
This commit is contained in:
2024-12-10 09:02:41 +00:00
parent 1ca320e672
commit e3e4e464b5
12 changed files with 402 additions and 7 deletions

View File

@@ -1,9 +1,9 @@
terraform {
required_providers {
juju = {
version = "~> 0.12.0"
#source = "juju/juju"
source = "terraform.local/juju/juju"
version = "~> 0.15.0"
source = "juju/juju"
}
}
}

View File

@@ -26,6 +26,11 @@ variable sdn_ids {
default = ["400", "401", "402"]
}
variable k8s_ids {
type = list(string)
default = ["300", "301", "302"]
}
variable apt_mirror {
type = string
default = "192.168.1.12"
@@ -75,6 +80,14 @@ variable "lma-machines" {
}))
}
variable "microk8s-machines" {
type = list(object({
machine_id = number
constraints = string
base = optional(string)
}))
}
variable model-name {
type = string
default = "openstack"
@@ -85,6 +98,11 @@ variable lma-model-name {
default = "lma"
}
variable microk8s-model-name {
type = string
default = "microk8s"
}
variable openstack-origin {
type = string
default = "distro"

View File

@@ -3,7 +3,7 @@ resource "juju_machine" "all_machines" {
for index, machine in var.machines:
machine.machine_id => machine
}
model = var.model-name
model = juju_model.openstack.name
name = each.value.machine_id
constraints = each.value.constraints
}

View File

@@ -0,0 +1,168 @@
resource "juju_machine" "cinder-backup" {
count = var.num_units
model = var.model-name
placement = join(":", ["lxd", juju_machine.all_machines[var.controller_ids[count.index+var.num_units]].machine_id])
constraints = "spaces=oam"
}
resource "juju_application" "cinder-backup" {
name = "cinder-backup"
model = var.model-name
charm {
name = "cinder"
channel = var.openstack-channel
base = var.default-base
}
units = var.num_units
placement = "${join(",", sort([
for res in juju_machine.cinder-backup :
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 = {
worker-multiplier = var.worker-multiplier
openstack-origin = var.openstack-origin
region = var.openstack-region
use-internal-endpoints = "true"
block-device = "None"
glance-api-version = "2"
enabled-services = "backup"
}
}
resource "juju_application" "cinder-backup-mysql-router" {
name = "cinder-backup-mysql-router"
model = var.model-name
charm {
name = "mysql-router"
channel = var.mysql-router-channel
}
units = 0
endpoint_bindings = [{
space = var.oam-space
},{
space = var.internal-space
endpoint = "shared-db"
},{
space = var.internal-space
endpoint = "db-router"
}]
config = {
source = var.openstack-origin
}
}
resource "juju_integration" "cinder-backup-mysql" {
model = var.model-name
application {
name = juju_application.cinder-backup.name
endpoint = "shared-db"
}
application {
name = juju_application.cinder-backup-mysql-router.name
endpoint = "shared-db"
}
}
resource "juju_integration" "cinder-backup-db" {
model = var.model-name
application {
name = juju_application.cinder-backup-mysql-router.name
endpoint = "db-router"
}
application {
name = juju_application.mysql-innodb-cluster.name
endpoint = "db-router"
}
}
resource "juju_integration" "cinder-backup-rmq" {
model = var.model-name
application {
name = juju_application.cinder-backup.name
endpoint = "amqp"
}
application {
name = juju_application.rabbitmq-server.name
endpoint = "amqp"
}
}
resource "juju_integration" "cinder-backup-keystone" {
model = var.model-name
application {
name = juju_application.cinder-backup.name
endpoint = "identity-service"
}
application {
name = juju_application.keystone.name
endpoint = "identity-service"
}
}
resource "juju_integration" "cinder-backup-ceph" {
model = var.model-name
application {
name = juju_application.cinder-backup.name
endpoint = "ceph"
}
application {
name = juju_application.ceph-mon.name
endpoint = "client"
}
}
resource "juju_integration" "cinder-ceph-cinder-backup" {
model = var.model-name
application {
name = juju_application.cinder-ceph.name
endpoint = "storage-backend"
}
application {
name = juju_application.cinder-backup.name
endpoint = "storage-backend"
}
}

View File

@@ -14,6 +14,7 @@ resource "juju_application" "vault" {
name = "vault"
channel = var.vault_channel
base = var.default-base
revision = 319
}
units = var.num_units
@@ -26,6 +27,7 @@ resource "juju_application" "vault" {
config = {
vip = var.vips["vault"]
nagios_context = var.nagios-context
auto-generate-root-ca-cert = "true"
}
}

View File

@@ -0,0 +1,18 @@
resource "juju_model" "microk8s" {
name = var.microk8s-model-name
cloud {
name = var.cloud
}
config = {
apt-mirror = "http://${var.apt_mirror}/archive.ubuntu.com/ubuntu"
lxd-snap-channel = var.lxd-snap-channel
container-image-metadata-url = "http://${var.apt_mirror}/lxd/"
container-image-stream = "released"
agent-metadata-url = "http://${var.apt_mirror}/juju/tools/"
agent-stream = "released"
}
}

View File

@@ -0,0 +1,10 @@
resource "juju_machine" "microk8s" {
for_each = {
for index, machine in var.microk8s-machines:
machine.machine_id => machine
}
model = juju_model.microk8s.name
name = each.value.machine_id
constraints = each.value.constraints
base = each.value.base
}

View File

@@ -0,0 +1,23 @@
resource "juju_application" "microk8s" {
name = "microk8s"
model = juju_model.microk8s.name
charm {
name = "microk8s"
channel = "1.28/stable"
base = "ubuntu@22.04"
}
units = 3
placement = "${join(",", sort([
for res in juju_machine.microk8s :
res.machine_id
]))}"
endpoint_bindings = [{
space = var.oam-space
}]
}

View File

@@ -0,0 +1,122 @@
resource "juju_application" "ceph-osd" {
name = "ceph-osd"
model = juju_model.microk8s.name
charm {
name = "ceph-osd"
channel = var.ceph-channel
base = var.default-base
}
units = length(juju_machine.microk8s)
placement = "${join(",", sort([
for res in juju_machine.microk8s :
res.machine_id
]))}"
config = {
osd-devices = var.osd-devices
}
}
resource "juju_machine" "ceph-mon" {
count = length(juju_machine.microk8s)
model = juju_model.microk8s.name
placement = join(":", ["lxd", juju_machine.microk8s[var.k8s_ids[count.index]].machine_id])
constraints = "spaces=oam"
base = var.default-base
}
resource "juju_application" "ceph-mon" {
name = "ceph-mon"
model = juju_model.microk8s.name
charm {
name = "ceph-mon"
channel = var.ceph-channel
base = var.default-base
}
units = length(juju_machine.microk8s)
placement = "${join(",", sort([
for res in juju_machine.ceph-mon :
res.machine_id
]))}"
endpoint_bindings = [{
space = var.oam-space
}]
config = {
expected-osd-count = 6
monitor-count = 3
}
}
resource "juju_application" "ceph-csi" {
name = "ceph-csi"
model = juju_model.microk8s.name
charm {
name = "ceph-csi"
channel = "1.28/stable"
base = var.default-base
}
units = 0
config = {
provisioner-replicas = 1
namespace = "kube-system"
}
}
resource "juju_integration" "osd-mon" {
model = juju_model.microk8s.name
application {
name = juju_application.ceph-osd.name
endpoint = "mon"
}
application {
name = juju_application.ceph-mon.name
endpoint = "osd"
}
}
resource "juju_integration" "csi-mon" {
model = juju_model.microk8s.name
application {
name = juju_application.ceph-csi.name
endpoint = "ceph-client"
}
application {
name = juju_application.ceph-mon.name
endpoint = "client"
}
}
resource "juju_integration" "csi-k8s" {
model = juju_model.microk8s.name
application {
name = juju_application.ceph-csi.name
endpoint = "kubernetes-info"
}
application {
name = juju_application.microk8s.name
endpoint = "kubernetes-info"
}
}

View File

@@ -0,0 +1,29 @@
resource "juju_application" "ntp" {
name = "ntp"
model = juju_model.microk8s.name
charm {
name = "ntp"
channel = "latest/stable"
base = "ubuntu@22.04"
}
units = 0
}
resource "juju_integration" "ntp-k8s" {
model = juju_model.microk8s.name
application {
name = juju_application.ntp.name
endpoint = "juju-info"
}
application {
name = juju_application.microk8s.name
endpoint = "juju-info"
}
}

View File

@@ -26,6 +26,12 @@ lma-machines = [
{machine_id=202,constraints="tags=compute,asrock02",base="ubuntu@20.04"},
]
microk8s-machines = [
{machine_id=300,constraints="tags=compute,asrock03",base="ubuntu@22.04"},
{machine_id=301,constraints="tags=compute,asrock02",base="ubuntu@22.04"},
{machine_id=302,constraints="tags=compute,asrock01",base="ubuntu@22.04"},
]
osd-devices = "/dev/sdb /dev/sdc"
nagios-context = "arif-nc01"

View File

@@ -1,9 +1,8 @@
terraform {
required_providers {
juju = {
version = "~> 0.12.0"
#source = "juju/juju"
source = "terraform.local/juju/juju"
version = "~> 0.15.0"
source = "juju/juju"
}
}
}