2021-02-13 02:10:39 +00:00
|
|
|
variable "prod" {
|
|
|
|
|
type = bool
|
|
|
|
|
default = false
|
|
|
|
|
}
|
2021-02-07 23:45:55 +00:00
|
|
|
variable "vsphere_password" {}
|
|
|
|
|
variable "vsphere_user" {}
|
|
|
|
|
variable "vsphere_server" {}
|
|
|
|
|
variable "tls_secret_name" {}
|
2021-02-19 19:52:22 +00:00
|
|
|
variable "tls_crt" {
|
|
|
|
|
default = ""
|
|
|
|
|
}
|
|
|
|
|
variable "tls_key" {
|
|
|
|
|
default = ""
|
|
|
|
|
}
|
2021-02-07 23:45:55 +00:00
|
|
|
variable "client_certificate_secret_name" {}
|
|
|
|
|
variable "mailserver_accounts" {}
|
|
|
|
|
variable "mailserver_aliases" {}
|
2021-02-18 22:26:36 +00:00
|
|
|
variable "mailserver_opendkim_key" {}
|
2022-12-17 14:04:52 +00:00
|
|
|
variable "mailserver_sasl_passwd" {}
|
2021-02-07 23:45:55 +00:00
|
|
|
variable "pihole_web_password" {}
|
|
|
|
|
variable "webhook_handler_secret" {}
|
|
|
|
|
variable "wireguard_wg_0_conf" {}
|
|
|
|
|
variable "wireguard_firewall_sh" {}
|
|
|
|
|
variable "hackmd_db_password" {}
|
|
|
|
|
variable "bind_db_viktorbarzin_me" {}
|
|
|
|
|
variable "bind_db_viktorbarzin_lan" {}
|
|
|
|
|
variable "bind_named_conf_options" {}
|
|
|
|
|
variable "alertmanager_account_password" {}
|
|
|
|
|
variable "wireguard_wg_0_key" {}
|
2021-05-05 19:17:56 +01:00
|
|
|
variable "dbaas_root_password" {}
|
2021-02-10 21:17:31 +00:00
|
|
|
variable "drone_github_client_id" {}
|
|
|
|
|
variable "drone_github_client_secret" {}
|
|
|
|
|
variable "drone_rpc_secret" {}
|
|
|
|
|
# variable "dockerhub_password" {}
|
2021-09-19 00:03:30 +00:00
|
|
|
# variable "oauth_client_id" {}
|
|
|
|
|
# variable "oauth_client_secret" {}
|
2021-05-05 19:17:56 +01:00
|
|
|
variable "url_shortener_mysql_password" {}
|
2021-04-17 19:19:04 +01:00
|
|
|
variable "url_shortener_geolite_license_key" {}
|
2021-05-04 19:11:09 +01:00
|
|
|
variable "url_shortener_api_key" {}
|
2021-02-27 19:31:40 +00:00
|
|
|
variable "webhook_handler_fb_verify_token" {}
|
2021-02-27 20:56:14 +00:00
|
|
|
variable "webhook_handler_fb_page_token" {}
|
2021-03-09 21:43:14 +00:00
|
|
|
variable "webhook_handler_fb_app_secret" {}
|
2021-03-15 23:32:56 +00:00
|
|
|
variable "webhook_handler_git_user" {}
|
|
|
|
|
variable "webhook_handler_git_token" {}
|
2021-03-31 23:35:09 +01:00
|
|
|
variable "webhook_handler_ssh_key" {}
|
2021-04-05 15:06:24 +01:00
|
|
|
variable "monitoring_idrac_username" {}
|
|
|
|
|
variable "monitoring_idrac_password" {}
|
2022-01-06 20:09:20 +00:00
|
|
|
variable "alertmanager_slack_api_url" {}
|
2022-06-02 16:05:14 +01:00
|
|
|
variable "home_assistant_configuration" {}
|
2022-11-19 17:51:04 +00:00
|
|
|
variable "shadowsocks_password" {}
|
2023-03-06 18:56:00 +02:00
|
|
|
variable "finance_app_monzo_client_id" {}
|
|
|
|
|
variable "finance_app_monzo_client_secret" {}
|
2023-03-06 19:49:13 +02:00
|
|
|
variable "finance_app_sqlite_db_path" {}
|
2023-03-07 01:48:20 +02:00
|
|
|
variable "finance_app_imap_host" {}
|
|
|
|
|
variable "finance_app_imap_user" {}
|
|
|
|
|
variable "finance_app_imap_password" {}
|
|
|
|
|
variable "finance_app_imap_directory" {}
|
2023-03-19 03:40:26 +00:00
|
|
|
variable "finance_app_oauth_google_client_id" {}
|
|
|
|
|
variable "finance_app_oauth_google_client_secret" {}
|
2023-03-26 14:42:17 +01:00
|
|
|
variable "finance_app_graphql_api_secret" {}
|
2021-02-07 23:45:55 +00:00
|
|
|
|
|
|
|
|
variable "ansible_prefix" {
|
|
|
|
|
default = "ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible/vault_pass.txt ansible-playbook -i playbook/hosts.yaml playbook/linux.yml -t linux/initial_setup"
|
|
|
|
|
description = "Provisioner command"
|
|
|
|
|
}
|
2021-02-13 02:10:39 +00:00
|
|
|
|
2021-08-15 16:40:12 +01:00
|
|
|
# data "terraform_remote_state" "foo" {
|
|
|
|
|
# backend = "kubernetes"
|
|
|
|
|
# config = {
|
|
|
|
|
# secret_suffix = "state"
|
|
|
|
|
# namespace = "drone"
|
|
|
|
|
# in_cluster_config = var.prod
|
|
|
|
|
# host = "https://kubernetes:6443"
|
|
|
|
|
# // load_config_file = true
|
|
|
|
|
# }
|
2021-02-13 02:10:39 +00:00
|
|
|
|
2021-08-15 16:40:12 +01:00
|
|
|
# depends_on = [module.kubernetes_cluster]
|
|
|
|
|
# }
|
2021-02-07 23:45:55 +00:00
|
|
|
provider "kubernetes" {
|
2021-02-14 13:17:24 +00:00
|
|
|
config_path = var.prod ? "" : "~/.kube/config"
|
2021-02-07 23:45:55 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
provider "helm" {
|
|
|
|
|
kubernetes {
|
2021-02-14 13:17:24 +00:00
|
|
|
config_path = var.prod ? "" : "~/.kube/config"
|
2021-02-07 23:45:55 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Main module to init infra from
|
|
|
|
|
module "pxe_server" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "pxe-server"
|
|
|
|
|
network = "dManagementVMs"
|
|
|
|
|
# provisioner_command = "${var.ansible_prefix} -t linux/pxe-server/add-distro"
|
|
|
|
|
provisioner_command = "# no provisioner needed #" # Noop until ubuntu autoinstall is setup
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
cdrom_path = "ISO/ubuntu-server-20.04.1.iso"
|
|
|
|
|
vm_disk_size = 50
|
|
|
|
|
vm_mac_address = "00:50:56:87:4a:2d"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module "k8s_master" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-master"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:39"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/master -e hostname=k8s-master"
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
module "k8s_node1" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-node1"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:e0:c9"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node1 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module "k8s_node2" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-node2"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:36"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node2 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module "k8s_node3" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-node3"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:37"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node3 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module "k8s_node4" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-node4"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:38"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node4 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
|
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module "k8s_node5" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "k8s-node5"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:40"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node5 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
2023-03-18 17:36:37 +00:00
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
module "devvm" {
|
|
|
|
|
source = "./modules/create-vm"
|
|
|
|
|
vm_name = "devvm"
|
|
|
|
|
vm_mac_address = "00:50:56:b0:a1:41"
|
|
|
|
|
network = "dKubernetes"
|
|
|
|
|
# provisioner_command = "${var.ansible_prefix} -t linux/k8s/node -e hostname=k8s-node5 -e k8s_master='wizard@${module.k8s_master.guest_ip}'"
|
|
|
|
|
|
2021-02-07 23:45:55 +00:00
|
|
|
vsphere_password = var.vsphere_password
|
|
|
|
|
vsphere_user = var.vsphere_user
|
|
|
|
|
vsphere_server = var.vsphere_server
|
|
|
|
|
vsphere_datastore = "r730-datastore"
|
|
|
|
|
vsphere_resource_pool = "R730"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# resource "null_resource" "test" {
|
|
|
|
|
# provisioner "local-exec" {
|
|
|
|
|
# working_dir = "/home/viktor/"
|
|
|
|
|
# command = "ANSIBLE_VAULT_PASSWORD_FILE=~/.ansible/vault_pass.txt ansible-playbook -i playbook/hosts.yaml playbook/linux.yml -t linux/k8s/node -e host='10.0.40.126'"
|
|
|
|
|
# }
|
|
|
|
|
# }
|
|
|
|
|
|
|
|
|
|
module "kubernetes_cluster" {
|
|
|
|
|
source = "./modules/kubernetes"
|
|
|
|
|
|
2021-05-05 19:17:56 +01:00
|
|
|
prod = var.prod
|
2021-02-10 21:17:31 +00:00
|
|
|
tls_secret_name = var.tls_secret_name
|
|
|
|
|
# dockerhub_password = var.dockerhub_password
|
2021-02-07 23:45:55 +00:00
|
|
|
client_certificate_secret_name = var.client_certificate_secret_name
|
|
|
|
|
mailserver_accounts = var.mailserver_accounts
|
2022-12-17 14:04:52 +00:00
|
|
|
mailserver_sasl_passwd = var.mailserver_sasl_passwd
|
2021-02-07 23:45:55 +00:00
|
|
|
mailserver_aliases = var.mailserver_aliases
|
2021-02-18 22:26:36 +00:00
|
|
|
mailserver_opendkim_key = var.mailserver_opendkim_key
|
2021-02-07 23:45:55 +00:00
|
|
|
pihole_web_password = var.pihole_web_password
|
2021-02-27 19:31:40 +00:00
|
|
|
|
2021-02-27 20:56:14 +00:00
|
|
|
# Webhook tokens
|
2021-02-27 19:31:40 +00:00
|
|
|
webhook_handler_secret = var.webhook_handler_secret
|
|
|
|
|
webhook_handler_fb_verify_token = var.webhook_handler_fb_verify_token
|
2021-02-27 20:56:14 +00:00
|
|
|
webhook_handler_fb_page_token = var.webhook_handler_fb_page_token
|
2021-03-09 21:43:14 +00:00
|
|
|
webhook_handler_fb_app_secret = var.webhook_handler_fb_app_secret
|
2021-03-15 23:32:56 +00:00
|
|
|
webhook_handler_git_user = var.webhook_handler_git_user
|
|
|
|
|
webhook_handler_git_token = var.webhook_handler_git_token
|
2021-03-31 23:35:09 +01:00
|
|
|
webhook_handler_ssh_key = var.webhook_handler_ssh_key
|
2021-02-27 19:31:40 +00:00
|
|
|
|
|
|
|
|
wireguard_wg_0_conf = var.wireguard_wg_0_conf
|
|
|
|
|
wireguard_wg_0_key = var.wireguard_wg_0_key
|
|
|
|
|
wireguard_firewall_sh = var.wireguard_firewall_sh
|
|
|
|
|
hackmd_db_password = var.hackmd_db_password
|
2021-02-07 23:45:55 +00:00
|
|
|
|
|
|
|
|
bind_db_viktorbarzin_me = var.bind_db_viktorbarzin_me
|
|
|
|
|
bind_db_viktorbarzin_lan = var.bind_db_viktorbarzin_lan
|
|
|
|
|
bind_named_conf_options = var.bind_named_conf_options
|
|
|
|
|
|
|
|
|
|
alertmanager_account_password = var.alertmanager_account_password
|
2022-01-06 20:09:20 +00:00
|
|
|
alertmanager_slack_api_url = var.alertmanager_slack_api_url
|
2021-02-08 21:49:22 +00:00
|
|
|
|
2021-02-10 21:17:31 +00:00
|
|
|
# Drone
|
|
|
|
|
drone_github_client_id = var.drone_github_client_id
|
|
|
|
|
drone_github_client_secret = var.drone_github_client_secret
|
|
|
|
|
drone_rpc_secret = var.drone_rpc_secret
|
|
|
|
|
|
2021-02-27 19:31:40 +00:00
|
|
|
# Oauth proxy
|
2021-09-19 00:03:30 +00:00
|
|
|
# oauth_client_id = var.oauth_client_id
|
|
|
|
|
# oauth_client_secret = var.oauth_client_secret
|
2021-02-10 21:17:31 +00:00
|
|
|
# depends_on = [module.k8s_master, module.k8s_node1, module.k8s_node2] # wait until master and at least 2 nodes are up
|
2021-04-05 15:06:24 +01:00
|
|
|
|
|
|
|
|
idrac_username = var.monitoring_idrac_username
|
|
|
|
|
idrac_password = var.monitoring_idrac_password
|
2021-04-17 19:19:04 +01:00
|
|
|
|
|
|
|
|
url_shortener_geolite_license_key = var.url_shortener_geolite_license_key
|
2021-05-04 19:11:09 +01:00
|
|
|
url_shortener_api_key = var.url_shortener_api_key
|
2021-05-05 19:17:56 +01:00
|
|
|
url_shortener_mysql_password = var.url_shortener_mysql_password
|
|
|
|
|
|
|
|
|
|
# dbaas
|
|
|
|
|
dbaas_root_password = var.dbaas_root_password
|
|
|
|
|
|
2022-06-02 16:05:14 +01:00
|
|
|
# home-assistant
|
|
|
|
|
home_assistant_configuration = var.home_assistant_configuration
|
2022-11-19 17:51:04 +00:00
|
|
|
|
|
|
|
|
# shadowsocks
|
|
|
|
|
shadowsocks_password = var.shadowsocks_password
|
2023-03-06 18:56:00 +02:00
|
|
|
|
|
|
|
|
# finance app
|
2023-03-26 14:42:17 +01:00
|
|
|
finance_app_monzo_client_id = var.finance_app_monzo_client_id
|
|
|
|
|
finance_app_monzo_client_secret = var.finance_app_monzo_client_secret
|
|
|
|
|
finance_app_sqlite_db_path = var.finance_app_sqlite_db_path
|
|
|
|
|
finance_app_imap_host = var.finance_app_imap_host
|
|
|
|
|
finance_app_imap_user = var.finance_app_imap_user
|
|
|
|
|
finance_app_imap_password = var.finance_app_imap_password
|
|
|
|
|
finance_app_imap_directory = var.finance_app_imap_directory
|
|
|
|
|
finance_app_oauth_google_client_id = var.finance_app_oauth_google_client_id
|
|
|
|
|
finance_app_oauth_google_client_secret = var.finance_app_oauth_google_client_secret
|
|
|
|
|
finance_app_graphql_api_secret = var.finance_app_graphql_api_secret
|
2021-02-07 23:45:55 +00:00
|
|
|
}
|