Skip to content

Commit

Permalink
Terraform for deploy
Browse files Browse the repository at this point in the history
Bug: T342429
  • Loading branch information
vivian-rook committed Jul 24, 2023
1 parent 56b8993 commit ce8972e
Show file tree
Hide file tree
Showing 8 changed files with 242 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
secrets.sh filter=git-crypt diff=git-crypt
terraform/secrets.tf filter=git-crypt diff=git-crypt
33 changes: 33 additions & 0 deletions .github/workflows/terraform-fmt.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

name: "terraform fmt"

'on':
pull_request:

jobs:
tf-fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: install terraform
run: |
sudo apt-get update && sudo apt-get install -y gnupg software-properties-common
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt-get install -y terraform
- name: terraform fmt
run: |
shopt -s extglob
cd terraform
if ! terraform fmt -check -diff !(secrets).tf ; then
echo "please update your terraform code to match the above.";
echo 'or run `terraform fmt` to have terraform reformat it.';
exit 1;
fi
33 changes: 33 additions & 0 deletions terraform/123.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
resource "openstack_containerinfra_cluster_v1" "k8s_123" {
name = "superset${var.name[var.datacenter]}-123"
cluster_template_id = resource.openstack_containerinfra_clustertemplate_v1.template_123.id
master_count = 1
node_count = var.workers[var.datacenter]
}

resource "local_file" "kube_config" {
content = resource.openstack_containerinfra_cluster_v1.k8s_123.kubeconfig.raw_config
filename = "kube.config"
}

resource "openstack_containerinfra_clustertemplate_v1" "template_123" {
name = "superset${var.name[var.datacenter]}-123"
coe = "kubernetes"
dns_nameserver = "8.8.8.8"
docker_storage_driver = "overlay2"
docker_volume_size = "20"
external_network_id = var.external_network_id[var.datacenter]
fixed_subnet = var.fixed_subnet[var.datacenter]
fixed_network = var.fixed_network[var.datacenter]
flavor = var.worker_flavor[var.datacenter]
floating_ip_enabled = "false"
image = var.image_name[var.datacenter]
master_flavor = var.control_flavor[var.datacenter]
network_driver = "flannel"

labels = {
kube_tag = "v1.23.15-rancher1-linux-amd64"
hyperkube_prefix = "docker.io/rancher/"
cloud_provider_enabled = "true"
}
}
26 changes: 26 additions & 0 deletions terraform/db-backup-instance.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
data "openstack_images_image_v2" "debian" {
most_recent = true
name = "debian-12.0-bookworm"
}

resource "openstack_blockstorage_volume_v3" "db_backup" {
region = var.region[var.datacenter]
name = "db-backup"
description = "Volume for storing db backups"
size = 20
}

resource "openstack_compute_instance_v2" "db_backup" {
name = "db-backup"
image_id = data.openstack_images_image_v2.debian.id
flavor_id = "bb8bee7e-d8f9-460b-8344-74f745c139b9" # update to lookup?

network {
name = "lan-flat-cloudinstances2b"
}
}

resource "openstack_compute_volume_attach_v2" "db_backup" {
instance_id = openstack_compute_instance_v2.db_backup.id
volume_id = openstack_blockstorage_volume_v3.db_backup.id
}
16 changes: 16 additions & 0 deletions terraform/db.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
resource "openstack_db_instance_v1" "superset" {
region = var.region[var.datacenter]
name = "superset"
flavor_id = "bb8bee7e-d8f9-460b-8344-74f745c139b9"
#flavor_id = var.db_flavor_uuid[var.datacenter]
size = 4

network {
uuid = "c0612505-caf2-4fb0-b7cb-56a0240a2b12"
}

datastore {
version = "mysql-5.7.29"
type = "mysql"
}
}
16 changes: 16 additions & 0 deletions terraform/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
terraform {
required_version = ">= 1.5.3"
required_providers {
openstack = {
source = "terraform-provider-openstack/openstack"
version = "~> 1.51.0"
}
}
}

provider "openstack" {
auth_url = var.auth-url[var.datacenter]
tenant_id = var.tenant_id[var.datacenter]
application_credential_id = var.application_credential_id[var.datacenter]
application_credential_secret = var.application_credential_secret[var.datacenter]
}
Binary file added terraform/secrets.tf
Binary file not shown.
117 changes: 117 additions & 0 deletions terraform/vars.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
variable "datacenter" {
type = string
}

# name codfw1dev artifacts with '-dev' names
variable "name" {
type = map(any)
default = {
"codfw1dev" = "-dev"
"eqiad1" = ""
}
}

# connection vars
variable "auth-url" {
type = map(any)
default = {
"codfw1dev" = "https://openstack.codfw1dev.wikimediacloud.org:25000"
"eqiad1" = "https://openstack.eqiad1.wikimediacloud.org:25000"
}
}
variable "tenant_id" {
type = map(any)
default = {
"codfw1dev" = ""
"eqiad1" = "superset"
}
}
variable "application_credential_id" {
type = map(any)
default = {
"codfw1dev" = ""
"eqiad1" = "91fc0e330c734a439be74d335627dfed"
}
}

# magnum vars
variable "worker_flavor" {
type = map(any)
default = {
"codfw1dev" = "g3.cores1.ram2.disk20"
"eqiad1" = "g3.cores2.ram4.disk20"
}
}
variable "control_flavor" {
type = map(any)
default = {
"codfw1dev" = "g3.cores1.ram2.disk20"
"eqiad1" = "g3.cores2.ram4.disk20"
}
}
variable "external_network_id" {
type = map(any)
default = {
"codfw1dev" = "wan-transport-codfw"
"eqiad1" = "wan-transport-eqiad"
}
}
variable "fixed_network" {
type = map(any)
default = {
"codfw1dev" = "lan-flat-cloudinstances2b"
"eqiad1" = "lan-flat-cloudinstances2b"
}
}
variable "fixed_subnet" {
type = map(any)
default = {
"codfw1dev" = "cloud-instances2-b-codfw"
"eqiad1" = "cloud-instances2-b-eqiad"
}
}
variable "image_name" {
type = map(any)
default = {
"codfw1dev" = "Fedora-CoreOS-34"
"eqiad1" = "magnum-fedora-coreos-34"
}
}
variable "workers" {
type = map(any)
default = {
"codfw1dev" = "2"
"eqiad1" = "2"
}
}


# trove vars
variable "network_uuid" {
type = map(any)
default = {
"codfw1dev" = "05a5494a-184f-4d5c-9e98-77ae61c56daa" # lan-flat-cloudinstances2b
"eqiad1" = "7425e328-560c-4f00-8e99-706f3fb90bb4" # lan-flat-cloudinstances2b
}
}
variable "db_flavor_uuid" {
type = map(any)
default = {
"codfw1dev" = "5b2ca632-2ea0-4007-9b40-4f84f8e2428b"
"eqiad1" = "55d5d90f-c5c6-44ff-bb8a-be7b077481cf"
}
}
variable "region" {
type = map(any)
default = {
"codfw1dev" = "codfw1dev-r"
"eqiad1" = "eqiad1-r"
}
}
variable "db_size" {
type = map(any)
default = {
"codfw1dev" = "1"
"eqiad1" = "4"
}
}

0 comments on commit ce8972e

Please sign in to comment.