Skip to content

Commit

Permalink
TOPS-102 Generate Ansible Inventory (#61)
Browse files Browse the repository at this point in the history
* feat: Added module example

* fix: renamed modules

* fix: moved provider location?

* fix: init --migrate

* fix: how did this get rolled back?

* fix: aaaaa

* fix: blocks ?

* fix: blocks ?

* fix: blocks ?

* fix: remove dhcp.tf for now

* fix: testing changes

* feat: qemu-kvm module

* fix: rip forgot provisioner block

* fix: type in node config

* fix: type in node config

* fix: type in node config

* feat: more vm params set now

* fix: int -> number

* fix: Added 'G' to disk, 4096 ram for example VM.

* fix: disable qemu for now

* Introduce the common config (#40)

* feat: update .gitignore

* feat: add base and test VMs

* fix: update variable names to match existing scheme

* feat: add missing terraform pre-commit

* fix: update workflow

* fix: re-add tflint

* Use forked Proxmox API and Terraform provider with HA container support (#44)

* Add script to manually install Proxmox plugin

- Add Bash script to download and install forked version of Terraform
  Proxmox plugin
- Add script to before_script stage of GitLab CI config
- Update minimum Proxmox plugin version to ensure we get the newer
  forked plugin

* Add Proxmox provider setup to GitHub CI

* Use Bash to run Proxmox provider script

Can't guarantee that permissions will be right to run the script
directly.

* Specify full local path to Proxmox provider script

There's a default `working-directory` statement but I don't know if it's
working.

* Flail some more

- Add an `ls` to see where this stuff is actually running

* Fix Proxmox provider script name

oh wow it really was that stupid wasn't it

* Clone the Proxmox provider repo

* Use HTTPS to clone repo

* Remove check parameter for `terraform fmt`

This causes GitHub action to fail when formatting changes are required.

* Comment out version check for now

The install process finds my fork of the plugin as version v0.0.0.
Instead of making a new tag in the forked repo, just comment out the
version for now.  (Hopefully this works.)

* Fix plugin path, required_providers

* Run Proxmox plugin install with Bash in GitLab too

* Fix GitHub pre-commit pipeline

* Fix pre-commit complaining about my script lol

* Make sure proxmox-api-go updates get installed

* Use go get instead

* Add hastate parameter to default container and VM

* Clean Go module cache before installing

* Specify proxmox-api-go version

* Change plugin provider name

* Remove extraneous step

* Run terraform init in proxmox provider script

* Remove -migrate-state parameter to terraform init

It broke the custom provider location stuff

* Try local terraform.d directory

* Try the directory Terraform complains about

* Revert to original module to test

I want to see where the modules are being installed now...

* Fix provider directory

I forgot about a cd...

* Cleanup directory location before creating

* Try the plugin directory again

* Re-add newer version requirement

* Try the documented plugin dir again

Also force the newer version again to make sure we're getting the
modified plugin.

* Fix working directory for pre-commit GitHub CI

* fix: truthy on -> no

* Also copy provider into module directories

* Fix variable ordering

* Probably fix module path

* why u no work

* no quotes doofus

* NEWLINE

Co-authored-by: Aaron Saderholm <[email protected]>

* Switch to upstream repos (#45)

* Possibly fix builds? (#46)

* Switch back to my fork for testing

* Don't manually install my fork of proxmox-api-go

* Switch back to upstream

* Only run create, Ansible, destroy on main branch

* Be more specific regarding rules

Changes tested using CI linter at
https://gitlab.magevent.net/magfest/bridges/-/ci/lint

* Rsyslog-server base playbook (#41)

* feat: update .gitignore

* feat: add base and test VMs

* fix: update variable names to match existing scheme

* feat: add missing terraform pre-commit

* fix: update workflow

* fix: re-add tflint

* feat: add playbook for rsyslog

* fix: move back to telmate proxmox provider

* feat: add firewall rules and cron entry to compress logs

* Remove terraform provider script (#51)

* fix: remove now outdated script

* fix: remove old pre-commit workflot option

* feat: setup timesyncd (#54)

* feat: add ufw rule for ssh and enable (#53)

* Add rsyslog to common ubuntu role for all clients (#49)

* feat: add client rsyslog config

* feat: update module to be a template

* fix: update IP in vault

* feat: add cups server buildout (#56)

* Remove remnants of Terraform plugin hack (#58)

The script has been gone for a while, but both CI systems are still
trying to run it.

* TOPS-100 First pass at subnet / domain logic

* TOPS-100 First pass at subnet / domain logic

* TOPS-100  not

* TOPS-100 rebase fluke

* TOPS-100 Updated Telemate/proxmox var in a few places

* TOPS-100 simplify python subnet file

* TOPS-100 ??? CIDR math

* TOPS-100 Maybe?

* TOPS-100 Maybe?

* TOPS-100 cleanup

* TOPS-100 Add domain local

* TOPS-100 Scratch stackstorm

* TOPS-100 missing $

* test: Make count dynamic

* Testing instance increments

* Add labels to module

* Testing

* IP off by 1

* Multiple branch support ?

* Template round 1

* DEPLOY_BRANCHES var

* Inventory template path issue

* Remove stackstorm

* Refactor IP+CIDR into two seperate variables

* More testing

* Whoops

* Deploy branch fixes

* Deploy branch fixes

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Messing with deploy branches

* Add hosts.ini as artifact

* This one weird trick, everyone will hate it.

* This one weird trick, everyone will hate it.

* Stub out DNS, NTP, TFTP

* Stub out DNS, NTP, TFTP

* Expand inventory

* Fix lxc-tftp

* Fix bugs

* terraform fmt

* TOPS-102 Removed spurious comment.

* Spacing fix

* TOPS-102 Add Zabbix TF entry

* TOPS-102 Memory allocations are now a optional parameter for LXC containers

* TOPS-95 Add Graylog LCX TF entry

Co-authored-by: claughinghouse <[email protected]>
Co-authored-by: yesrod <[email protected]>
  • Loading branch information
3 people authored Aug 31, 2021
1 parent e370a5f commit 0ad1e6e
Show file tree
Hide file tree
Showing 10 changed files with 90 additions and 28 deletions.
7 changes: 4 additions & 3 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,13 @@ create:
script:
- terraform apply -auto-approve
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "aaron-dev"'
when: on_success
- when: never
artifacts:
paths:
- ${TF_ROOT}/.terraform
- ${TF_ROOT}/hosts.ini

# Ansible section here
run-playbooks:
Expand All @@ -95,7 +96,7 @@ run-playbooks:
script:
- echo $(/bin/true)
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "aaron-dev"'
when: on_success
- when: never

Expand All @@ -109,7 +110,7 @@ destroy:
script:
- terraform destroy -auto-approve
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_BRANCH == "aaron-dev"'
when: manual
- when: never
artifacts:
Expand Down
20 changes: 8 additions & 12 deletions terraform/lxc-dhcp.tf
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
module "dhcp1" {
source = "./modules/lxc"
cluster_name = "pve1"
ip_address = "${cidrhost(var.subnet, 253)}/${local.cidr_suffix}"
hostname = "dhcp1.${local.domain}"
}

module "dhcp2" {
source = "./modules/lxc"
cluster_name = "pve2"
ip_address = "${cidrhost(var.subnet, 254)}/${local.cidr_suffix}"
hostname = "dhcp2.${local.domain}"
module "dhcp" {
source = "./modules/lxc"
count = 2
# This one weird trick. Everyone will hate it.
cluster_name = "pve${count.index % 2 + 1}"
ip_address = cidrhost(var.subnet, 253 + count.index)
cidr_mask = local.cidr_suffix
hostname = "dhcp${floor(count.index + 1)}.${local.domain}"
}
9 changes: 9 additions & 0 deletions terraform/lxc-dns.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module "dns" {
source = "./modules/lxc"
count = 2
# This one weird trick. Everyone will hate it.
cluster_name = "pve${count.index % 2 + 1}"
ip_address = cidrhost(var.subnet, 110 + (count.index * 10))
cidr_mask = local.cidr_suffix
hostname = "dns${floor(count.index + 1)}.${local.domain}"
}
8 changes: 8 additions & 0 deletions terraform/lxc-graylog.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module "graylog" {
source = "./modules/lxc"
cluster_name = "pve1"
ip_address = cidrhost(var.subnet, 129)
cidr_mask = local.cidr_suffix
hostname = "graylog.${local.domain}"
memory = 4096
}
9 changes: 9 additions & 0 deletions terraform/lxc-ntp.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module "ntp" {
source = "./modules/lxc"
count = 2
# This one weird trick. Everyone will hate it.
cluster_name = "pve${count.index % 2 + 1}"
ip_address = cidrhost(var.subnet, 6 + count.index)
cidr_mask = local.cidr_suffix
hostname = "ntp${floor(count.index + 1)}.${local.domain}"
}
12 changes: 0 additions & 12 deletions terraform/lxc-stackstorm.tf

This file was deleted.

7 changes: 7 additions & 0 deletions terraform/lxc-tftp.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module "tftp" {
source = "./modules/lxc"
cluster_name = "pve2"
ip_address = cidrhost(var.subnet, 9)
cidr_mask = local.cidr_suffix
hostname = "tftp.${local.domain}"
}
7 changes: 7 additions & 0 deletions terraform/lxc-zabbix.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module "zabbix" {
source = "./modules/lxc"
cluster_name = "pve1"
ip_address = cidrhost(var.subnet, 200)
cidr_mask = local.cidr_suffix
hostname = "zabbix.${local.domain}"
}
20 changes: 20 additions & 0 deletions terraform/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,23 @@ locals {
cidr_suffix = element(split("/", var.subnet), 1)
domain = "${var.branch}.magevent.net"
}

resource "local_file" "inventory" {
filename = "./hosts.ini"
content = <<-EOF
[dhcp]
${module.dhcp[0].ip_address}
${module.dhcp[1].ip_address}
[dns]
${module.dns[0].ip_address}
${module.dns[1].ip_address}
[ntp]
${module.ntp[0].ip_address}
${module.ntp[1].ip_address}
[tftp]
${module.tftp.ip_address}
EOF
}
19 changes: 18 additions & 1 deletion terraform/modules/lxc/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ resource "proxmox_lxc" "lxc-container" {
ostemplate = "wowza:vztmpl/ubuntu-20.04-standard_20.04-1_amd64.tar.gz"
unprivileged = true
hostname = var.hostname
memory = var.memory
cores = "1"
swap = "512"
start = true
Expand All @@ -31,8 +32,9 @@ EOT
name = "eth0"
bridge = "vmbr999"
tag = "22"
ip = var.ip_address
ip = "${var.ip_address}/${var.cidr_mask}"
}

}

variable "hostname" {
Expand All @@ -52,8 +54,23 @@ variable "ip_address" {
type = string
}

variable "cidr_mask" {
description = "CIDR for IP subnet"
type = string
}

variable "size" {
description = "Size of fs in gigabytes"
type = string
default = "8G"
}

variable "memory" {
description = "Size of memory in megabytes"
type = string
default = "512"
}

output "ip_address" {
value = var.ip_address
}

0 comments on commit 0ad1e6e

Please sign in to comment.