multiple updates
* Add microk8s model * Add cinder-backup * Multiple improvements to other plans
This commit is contained in:
@@ -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"
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
168
juju/home-maas-jammy/05-cinder-backup.tf
Normal file
168
juju/home-maas-jammy/05-cinder-backup.tf
Normal 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"
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
18
juju/home-maas-jammy/microk8s/30-model.tf
Normal file
18
juju/home-maas-jammy/microk8s/30-model.tf
Normal 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"
|
||||
}
|
||||
}
|
||||
10
juju/home-maas-jammy/microk8s/31-machines.tf
Normal file
10
juju/home-maas-jammy/microk8s/31-machines.tf
Normal 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
|
||||
}
|
||||
23
juju/home-maas-jammy/microk8s/32-microk8s.tf
Normal file
23
juju/home-maas-jammy/microk8s/32-microk8s.tf
Normal 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
|
||||
}]
|
||||
}
|
||||
122
juju/home-maas-jammy/microk8s/33-ceph.tf
Normal file
122
juju/home-maas-jammy/microk8s/33-ceph.tf
Normal 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"
|
||||
}
|
||||
}
|
||||
29
juju/home-maas-jammy/microk8s/34-ntp.tf
Normal file
29
juju/home-maas-jammy/microk8s/34-ntp.tf
Normal 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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user