dsk-dev kubespray 이동
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
resource "vsphere_virtual_machine" "worker" {
|
||||
for_each = {
|
||||
for name, machine in var.machines :
|
||||
name => machine
|
||||
if machine.node_type == "worker"
|
||||
}
|
||||
|
||||
name = "${var.prefix}-${each.key}"
|
||||
|
||||
resource_pool_id = var.pool_id
|
||||
datastore_id = var.datastore_id
|
||||
|
||||
num_cpus = var.worker_cores
|
||||
memory = var.worker_memory
|
||||
memory_reservation = var.worker_memory
|
||||
guest_id = var.guest_id
|
||||
enable_disk_uuid = "true" # needed for CSI provider
|
||||
scsi_type = var.scsi_type
|
||||
folder = var.folder
|
||||
firmware = var.firmware
|
||||
hardware_version = var.hardware_version
|
||||
|
||||
wait_for_guest_net_routable = false
|
||||
wait_for_guest_net_timeout = 0
|
||||
|
||||
network_interface {
|
||||
network_id = var.network_id
|
||||
adapter_type = var.adapter_type
|
||||
}
|
||||
|
||||
disk {
|
||||
label = "disk0"
|
||||
size = var.worker_disk_size
|
||||
thin_provisioned = var.disk_thin_provisioned
|
||||
}
|
||||
|
||||
lifecycle {
|
||||
ignore_changes = [disk]
|
||||
}
|
||||
|
||||
clone {
|
||||
template_uuid = var.template_id
|
||||
}
|
||||
|
||||
cdrom {
|
||||
client_device = true
|
||||
}
|
||||
|
||||
dynamic "vapp" {
|
||||
for_each = var.vapp ? [1] : []
|
||||
|
||||
content {
|
||||
properties = {
|
||||
"user-data" = base64encode(templatefile("${path.module}/templates/vapp-cloud-init.tpl", { ssh_public_keys = var.ssh_public_keys }))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extra_config = {
|
||||
"isolation.tools.copy.disable" = "FALSE"
|
||||
"isolation.tools.paste.disable" = "FALSE"
|
||||
"isolation.tools.setGUIOptions.enable" = "TRUE"
|
||||
"guestinfo.userdata" = base64encode(templatefile("${path.module}/templates/cloud-init.tpl", { ssh_public_keys = var.ssh_public_keys }))
|
||||
"guestinfo.userdata.encoding" = "base64"
|
||||
"guestinfo.metadata" = base64encode(templatefile("${path.module}/templates/metadata.tpl", { hostname = "${var.prefix}-${each.key}",
|
||||
interface_name = var.interface_name
|
||||
ip = each.value.ip,
|
||||
netmask = each.value.netmask,
|
||||
gw = var.gateway,
|
||||
dns = var.dns_primary,
|
||||
ssh_public_keys = var.ssh_public_keys }))
|
||||
"guestinfo.metadata.encoding" = "base64"
|
||||
}
|
||||
}
|
||||
|
||||
resource "vsphere_virtual_machine" "master" {
|
||||
for_each = {
|
||||
for name, machine in var.machines :
|
||||
name => machine
|
||||
if machine.node_type == "master"
|
||||
}
|
||||
|
||||
name = "${var.prefix}-${each.key}"
|
||||
|
||||
resource_pool_id = var.pool_id
|
||||
datastore_id = var.datastore_id
|
||||
|
||||
num_cpus = var.master_cores
|
||||
memory = var.master_memory
|
||||
memory_reservation = var.master_memory
|
||||
guest_id = var.guest_id
|
||||
enable_disk_uuid = "true" # needed for CSI provider
|
||||
scsi_type = var.scsi_type
|
||||
folder = var.folder
|
||||
firmware = var.firmware
|
||||
hardware_version = var.hardware_version
|
||||
|
||||
wait_for_guest_net_routable = false
|
||||
wait_for_guest_net_timeout = 0
|
||||
|
||||
network_interface {
|
||||
network_id = var.network_id
|
||||
adapter_type = var.adapter_type
|
||||
}
|
||||
|
||||
disk {
|
||||
label = "disk0"
|
||||
size = var.master_disk_size
|
||||
thin_provisioned = var.disk_thin_provisioned
|
||||
}
|
||||
|
||||
lifecycle {
|
||||
ignore_changes = [disk]
|
||||
}
|
||||
|
||||
clone {
|
||||
template_uuid = var.template_id
|
||||
}
|
||||
|
||||
cdrom {
|
||||
client_device = true
|
||||
}
|
||||
|
||||
dynamic "vapp" {
|
||||
for_each = var.vapp ? [1] : []
|
||||
|
||||
content {
|
||||
properties = {
|
||||
"user-data" = base64encode(templatefile("${path.module}/templates/vapp-cloud-init.tpl", { ssh_public_keys = var.ssh_public_keys }))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extra_config = {
|
||||
"isolation.tools.copy.disable" = "FALSE"
|
||||
"isolation.tools.paste.disable" = "FALSE"
|
||||
"isolation.tools.setGUIOptions.enable" = "TRUE"
|
||||
"guestinfo.userdata" = base64encode(templatefile("${path.module}/templates/cloud-init.tpl", { ssh_public_keys = var.ssh_public_keys }))
|
||||
"guestinfo.userdata.encoding" = "base64"
|
||||
"guestinfo.metadata" = base64encode(templatefile("${path.module}/templates/metadata.tpl", { hostname = "${var.prefix}-${each.key}",
|
||||
interface_name = var.interface_name
|
||||
ip = each.value.ip,
|
||||
netmask = each.value.netmask,
|
||||
gw = var.gateway,
|
||||
dns = var.dns_primary,
|
||||
ssh_public_keys = var.ssh_public_keys }))
|
||||
"guestinfo.metadata.encoding" = "base64"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
output "master_ip" {
|
||||
value = {
|
||||
for name, machine in var.machines :
|
||||
"${var.prefix}-${name}" => machine.ip
|
||||
if machine.node_type == "master"
|
||||
}
|
||||
}
|
||||
|
||||
output "worker_ip" {
|
||||
value = {
|
||||
for name, machine in var.machines :
|
||||
"${var.prefix}-${name}" => machine.ip
|
||||
if machine.node_type == "worker"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
#cloud-config
|
||||
|
||||
ssh_authorized_keys:
|
||||
%{ for ssh_public_key in ssh_public_keys ~}
|
||||
- ${ssh_public_key}
|
||||
%{ endfor ~}
|
||||
@@ -0,0 +1,14 @@
|
||||
instance-id: ${hostname}
|
||||
local-hostname: ${hostname}
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
${interface_name}:
|
||||
match:
|
||||
name: ${interface_name}
|
||||
dhcp4: false
|
||||
addresses:
|
||||
- ${ip}/${netmask}
|
||||
gateway4: ${gw}
|
||||
nameservers:
|
||||
addresses: [${dns}]
|
||||
@@ -0,0 +1,24 @@
|
||||
#cloud-config
|
||||
|
||||
ssh_authorized_keys:
|
||||
%{ for ssh_public_key in ssh_public_keys ~}
|
||||
- ${ssh_public_key}
|
||||
%{ endfor ~}
|
||||
|
||||
write_files:
|
||||
- path: /etc/netplan/10-user-network.yaml
|
||||
content: |.
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
${interface_name}:
|
||||
dhcp4: false #true to use dhcp
|
||||
addresses:
|
||||
- ${ip}/${netmask}
|
||||
gateway4: ${gw} # Set gw here
|
||||
nameservers:
|
||||
addresses:
|
||||
- ${dns} # Set DNS ip address here
|
||||
|
||||
runcmd:
|
||||
- netplan apply
|
||||
@@ -0,0 +1,43 @@
|
||||
## Global ##
|
||||
variable "prefix" {}
|
||||
|
||||
variable "machines" {
|
||||
description = "Cluster machines"
|
||||
type = map(object({
|
||||
node_type = string
|
||||
ip = string
|
||||
netmask = string
|
||||
}))
|
||||
}
|
||||
|
||||
variable "gateway" {}
|
||||
variable "dns_primary" {}
|
||||
variable "dns_secondary" {}
|
||||
variable "pool_id" {}
|
||||
variable "datastore_id" {}
|
||||
variable "guest_id" {}
|
||||
variable "scsi_type" {}
|
||||
variable "network_id" {}
|
||||
variable "interface_name" {}
|
||||
variable "adapter_type" {}
|
||||
variable "disk_thin_provisioned" {}
|
||||
variable "template_id" {}
|
||||
variable "vapp" {
|
||||
type = bool
|
||||
}
|
||||
variable "firmware" {}
|
||||
variable "folder" {}
|
||||
variable "ssh_public_keys" {
|
||||
type = list(string)
|
||||
}
|
||||
variable "hardware_version" {}
|
||||
|
||||
## Master ##
|
||||
variable "master_cores" {}
|
||||
variable "master_memory" {}
|
||||
variable "master_disk_size" {}
|
||||
|
||||
## Worker ##
|
||||
variable "worker_cores" {}
|
||||
variable "worker_memory" {}
|
||||
variable "worker_disk_size" {}
|
||||
@@ -0,0 +1,9 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
vsphere = {
|
||||
source = "hashicorp/vsphere"
|
||||
version = ">= 1.24.3"
|
||||
}
|
||||
}
|
||||
required_version = ">= 0.13"
|
||||
}
|
||||
Reference in New Issue
Block a user