parent
0113ae9000
commit
1da7546219
@ -0,0 +1,24 @@
|
|||||||
|
# This file is maintained automatically by "terraform init".
|
||||||
|
# Manual edits may be lost in future updates.
|
||||||
|
|
||||||
|
provider "registry.terraform.io/telmate/proxmox" {
|
||||||
|
version = "2.9.11"
|
||||||
|
constraints = "2.9.11"
|
||||||
|
hashes = [
|
||||||
|
"h1:RKM2pvHNJrQKcMD7omaPiM099vWGgDnnZqn1kGknYXU=",
|
||||||
|
"zh:0db1e3940cf208e56919e68c6d557dfc87d380316a474c8999916308bf991440",
|
||||||
|
"zh:2a0ae7af5b2f96d53b24f34575bc72ccbb79cab870901f26f00a301613f7c69e",
|
||||||
|
"zh:2f9eb4a4d2c5db04ec0940d7e250aaf1bac559acc787a5883688ba42159f8b8e",
|
||||||
|
"zh:362a5b44995a51c8de78f0106aa7741f212bb15fbf2d7477794ea3ee63e2c17d",
|
||||||
|
"zh:4d212404b741848cef1e469e390ad1df659bbfa8d47cd079d82d83c288925438",
|
||||||
|
"zh:54a65a01946839db263f8da389791863f6909db9d5fcfdb472e23b14883a5b6c",
|
||||||
|
"zh:5dfc95303efc53686b23762dfa4c50d887eb4cc0a3e9d527adc29b3a9f0439eb",
|
||||||
|
"zh:68db84c007cbdd7267d1f7b767b0b2b91e9ee2e2b92ac1d8a1568f3bc61e67cd",
|
||||||
|
"zh:85d45466445883ae64eed3d5fcb996de389ecf9268f0f7d2f22911fb3f56a344",
|
||||||
|
"zh:8673f8c794ea8413dc9a3933902492b3e5be99e79bc611fcef415be7d7268210",
|
||||||
|
"zh:d5041f72f550f3c81dafecb4e7dfca9f849737154a0e2c81434df6c72d75af25",
|
||||||
|
"zh:e60e03b495dd76660784a8ab07d8db0ce1df7165e713efb350c1864d92f87a8c",
|
||||||
|
"zh:ed1f75a2fe7d764356119a590f301ab8fd40cfeea78a514450868beb92115f28",
|
||||||
|
"zh:efa4140b78775509665370c915e60c9043a1325d608f96da151f8f7fcc7cb45e",
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
- name: Setup Environment for Kubernetes
|
||||||
|
strategy: free
|
||||||
|
hosts: all
|
||||||
|
vars:
|
||||||
|
ansible_user: ansible
|
||||||
|
ansible_ssh_private_key_file: "~/.ssh/ansible-private-key"
|
||||||
|
become: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Enable TCP ports
|
||||||
|
ufw:
|
||||||
|
proto: tcp
|
||||||
|
rule: allow
|
||||||
|
port: '{{ item }}'
|
||||||
|
loop:
|
||||||
|
- 80
|
||||||
|
- 443
|
||||||
|
- 2379
|
||||||
|
- 2380
|
||||||
|
- 6443
|
||||||
|
- 9099
|
||||||
|
- 10250
|
||||||
|
- 10254
|
||||||
|
- 30000:32767
|
||||||
|
|
||||||
|
- name: Enable UDP ports
|
||||||
|
ufw:
|
||||||
|
proto: udp
|
||||||
|
rule: allow
|
||||||
|
port: '{{ item }}'
|
||||||
|
loop:
|
||||||
|
- 8472
|
||||||
|
- 4789
|
||||||
|
- 30000:32767
|
||||||
|
|
||||||
|
- name: Download Docker Install Script 20.10
|
||||||
|
get_url:
|
||||||
|
url: https://releases.rancher.com/install-docker/20.10.sh
|
||||||
|
dest: /root/install-docker.sh
|
||||||
|
mode: 0700
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
|
||||||
|
- name: Install Docker 20.10
|
||||||
|
shell:
|
||||||
|
cmd: /root/install-docker.sh
|
||||||
|
creates: /usr/bin/docker
|
||||||
|
|
||||||
|
- name: Set sysctl setting
|
||||||
|
sysctl:
|
||||||
|
name: net.bridge.bridge-nf-call-iptables
|
||||||
|
value: '1'
|
||||||
|
state: present
|
||||||
@ -0,0 +1,79 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
proxmox = {
|
||||||
|
source = "telmate/proxmox"
|
||||||
|
version = "2.9.11"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "proxmox" {
|
||||||
|
pm_api_url = "https://joseph.djpianalto.com/api2/json"
|
||||||
|
pm_api_token_id = "terraform@pam!terraform_api_token"
|
||||||
|
pm_api_token_secret = var.pm_api_token_secret
|
||||||
|
pm_tls_insecure = false
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "proxmox_vm_qemu" "kubernetes_cluster" {
|
||||||
|
for_each = var.vms
|
||||||
|
|
||||||
|
name = each.value.name
|
||||||
|
vmid = each.key
|
||||||
|
target_node = each.value.node
|
||||||
|
clone = var.template_name
|
||||||
|
|
||||||
|
agent = 1
|
||||||
|
os_type = "linux"
|
||||||
|
cores = each.value.cores
|
||||||
|
sockets = 1
|
||||||
|
cpu = "host"
|
||||||
|
memory = each.value.memory
|
||||||
|
scsihw = "virtio-scsi-pci"
|
||||||
|
bootdisk = "scsi0"
|
||||||
|
|
||||||
|
disk {
|
||||||
|
slot = 0
|
||||||
|
size = each.value.disk
|
||||||
|
type = "scsi"
|
||||||
|
storage = "${each.value.node}_vm_store"
|
||||||
|
}
|
||||||
|
|
||||||
|
network {
|
||||||
|
model = "virtio"
|
||||||
|
bridge = "vmbr0"
|
||||||
|
}
|
||||||
|
|
||||||
|
lifecycle {
|
||||||
|
ignore_changes = [
|
||||||
|
network,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
ipconfig0 = "ip=${each.value.ip}/16,gw=10.0.0.254"
|
||||||
|
sshkeys = <<EOF
|
||||||
|
${var.ssh_key}
|
||||||
|
EOF
|
||||||
|
ciuser = "ansible"
|
||||||
|
cipassword = var.ansible_password
|
||||||
|
searchdomain = "local"
|
||||||
|
nameserver = "10.0.0.252"
|
||||||
|
|
||||||
|
provisioner "remote-exec" {
|
||||||
|
inline = ["echo Hello World!; sleep 10"]
|
||||||
|
|
||||||
|
connection {
|
||||||
|
host = each.value.ip
|
||||||
|
type = "ssh"
|
||||||
|
user = "ansible"
|
||||||
|
private_key = file(var.private_key_file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "local-exec" {
|
||||||
|
command = "ansible-playbook --vault-pass-file /home/dustyp/ansible_vault_pass --limit ${each.value.ip}, -i /home/dustyp/code/Ansible/basic_setup/inventory.yml /home/dustyp/code/Ansible/basic_setup/main.yml"
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "local-exec" {
|
||||||
|
command = "ansible-playbook -i ${each.value.ip}, kubernetes_playbook.yml"
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
variable "proxmox_host" {
|
||||||
|
default = "joseph"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "template_name" {
|
||||||
|
default = "ubuntu-2204-cloudinit-template"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "ssh_key" {
|
||||||
|
default = "ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAGpnqGpX2OwlRJmPLLOriysA7RyOJCIJHi1MJNUUI62fC0SQqlkcWtpKi73VmAlIk0AaqT3b35uHUHTcG6zEI9QLQB/3ea1EnMLOzw5SK5Oo2G3iE6Gv3Mk2Zl0migHWs82/cNZMPWTrNEPLYWlA1twaqgxeJvE8+P9fiG4qt65fWF1FQ== dustyp@dusty-framework"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "private_key_file" {
|
||||||
|
default = "/home/dustyp/.ssh/ansible-private-key"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "pm_api_token_secret" {}
|
||||||
|
|
||||||
|
variable "ansible_password" {}
|
||||||
|
|
||||||
|
variable "vms" {
|
||||||
|
default = {
|
||||||
|
300 = { "name" : "kubernetes-m0", "disk" : "32G", "memory" : "8192", "cores" : 4, "ip" = "10.0.10.10", "node" = "joseph" },
|
||||||
|
301 = { "name" : "kubernetes-m1", "disk" : "32G", "memory" : "8192", "cores" : 4, "ip" = "10.0.10.11", "node" = "jacob" },
|
||||||
|
302 = { "name" : "kubernetes-m2", "disk" : "32G", "memory" : "8192", "cores" : 4, "ip" = "10.0.10.12", "node" = "joseph" },
|
||||||
|
303 = { "name" : "kubernetes-w0", "disk" : "128G", "memory" : "16384", "cores" : 8, "ip" = "10.0.10.13", "node" = "joseph" },
|
||||||
|
304 = { "name" : "kubernetes-w1", "disk" : "128G", "memory" : "16384", "cores" : 8, "ip" = "10.0.10.14", "node" = "jacob" },
|
||||||
|
305 = { "name" : "kubernetes-w2", "disk" : "128G", "memory" : "16384", "cores" : 8, "ip" = "10.0.10.15", "node" = "joseph" },
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue