Browse Source
Merge pull request #2033 from ArchiFleKs/terraform-fix-cred
Merge pull request #2033 from ArchiFleKs/terraform-fix-cred
Update Terraform docs and authentication methodpull/2360/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 487 additions and 395 deletions
Unified View
Diff Options
-
4contrib/terraform/openstack/.gitignore
-
123contrib/terraform/openstack/README.md
-
94contrib/terraform/openstack/kubespray.tf
-
474contrib/terraform/openstack/modules/compute/main.tf
-
72contrib/terraform/openstack/modules/compute/variables.tf
-
19contrib/terraform/openstack/modules/ips/main.tf
-
6contrib/terraform/openstack/modules/ips/outputs.tf
-
27contrib/terraform/openstack/modules/ips/variables.tf
-
1contrib/terraform/openstack/modules/network/main.tf
-
4contrib/terraform/openstack/modules/network/outputs.tf
-
12contrib/terraform/openstack/modules/network/variables.tf
-
46contrib/terraform/openstack/variables.tf
@ -0,0 +1,4 @@ |
|||||
|
.terraform |
||||
|
*.tfvars |
||||
|
*.tfstate |
||||
|
*.tfstate.backup |
@ -1,55 +1,77 @@ |
|||||
|
|
||||
module "network" { |
module "network" { |
||||
source = "modules/network" |
source = "modules/network" |
||||
|
|
||||
external_net = "${var.external_net}" |
|
||||
network_name = "${var.network_name}" |
|
||||
cluster_name = "${var.cluster_name}" |
|
||||
|
external_net = "${var.external_net}" |
||||
|
network_name = "${var.network_name}" |
||||
|
cluster_name = "${var.cluster_name}" |
||||
dns_nameservers = "${var.dns_nameservers}" |
dns_nameservers = "${var.dns_nameservers}" |
||||
} |
} |
||||
|
|
||||
|
|
||||
module "ips" { |
module "ips" { |
||||
source = "modules/ips" |
source = "modules/ips" |
||||
|
|
||||
number_of_k8s_masters = "${var.number_of_k8s_masters}" |
|
||||
|
number_of_k8s_masters = "${var.number_of_k8s_masters}" |
||||
number_of_k8s_masters_no_etcd = "${var.number_of_k8s_masters_no_etcd}" |
number_of_k8s_masters_no_etcd = "${var.number_of_k8s_masters_no_etcd}" |
||||
number_of_k8s_nodes = "${var.number_of_k8s_nodes}" |
|
||||
floatingip_pool = "${var.floatingip_pool}" |
|
||||
number_of_bastions = "${var.number_of_bastions}" |
|
||||
external_net = "${var.external_net}" |
|
||||
network_name = "${var.network_name}" |
|
||||
router_id = "${module.network.router_id}" |
|
||||
|
number_of_k8s_nodes = "${var.number_of_k8s_nodes}" |
||||
|
floatingip_pool = "${var.floatingip_pool}" |
||||
|
number_of_bastions = "${var.number_of_bastions}" |
||||
|
external_net = "${var.external_net}" |
||||
|
network_name = "${var.network_name}" |
||||
|
router_id = "${module.network.router_id}" |
||||
} |
} |
||||
|
|
||||
module "compute" { |
module "compute" { |
||||
source = "modules/compute" |
source = "modules/compute" |
||||
|
|
||||
cluster_name = "${var.cluster_name}" |
|
||||
number_of_k8s_masters = "${var.number_of_k8s_masters}" |
|
||||
number_of_k8s_masters_no_etcd = "${var.number_of_k8s_masters_no_etcd}" |
|
||||
number_of_etcd = "${var.number_of_etcd}" |
|
||||
number_of_k8s_masters_no_floating_ip = "${var.number_of_k8s_masters_no_floating_ip}" |
|
||||
|
cluster_name = "${var.cluster_name}" |
||||
|
number_of_k8s_masters = "${var.number_of_k8s_masters}" |
||||
|
number_of_k8s_masters_no_etcd = "${var.number_of_k8s_masters_no_etcd}" |
||||
|
number_of_etcd = "${var.number_of_etcd}" |
||||
|
number_of_k8s_masters_no_floating_ip = "${var.number_of_k8s_masters_no_floating_ip}" |
||||
number_of_k8s_masters_no_floating_ip_no_etcd = "${var.number_of_k8s_masters_no_floating_ip_no_etcd}" |
number_of_k8s_masters_no_floating_ip_no_etcd = "${var.number_of_k8s_masters_no_floating_ip_no_etcd}" |
||||
number_of_k8s_nodes = "${var.number_of_k8s_nodes}" |
|
||||
number_of_bastions = "${var.number_of_bastions}" |
|
||||
number_of_k8s_nodes_no_floating_ip = "${var.number_of_k8s_nodes_no_floating_ip}" |
|
||||
number_of_gfs_nodes_no_floating_ip = "${var.number_of_gfs_nodes_no_floating_ip}" |
|
||||
gfs_volume_size_in_gb = "${var.gfs_volume_size_in_gb}" |
|
||||
public_key_path = "${var.public_key_path}" |
|
||||
image = "${var.image}" |
|
||||
image_gfs = "${var.image_gfs}" |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
ssh_user_gfs = "${var.ssh_user_gfs}" |
|
||||
flavor_k8s_master = "${var.flavor_k8s_master}" |
|
||||
flavor_k8s_node = "${var.flavor_k8s_node}" |
|
||||
flavor_etcd = "${var.flavor_etcd}" |
|
||||
flavor_gfs_node = "${var.flavor_gfs_node}" |
|
||||
network_name = "${var.network_name}" |
|
||||
flavor_bastion = "${var.flavor_bastion}" |
|
||||
k8s_master_fips = "${module.ips.k8s_master_fips}" |
|
||||
k8s_node_fips = "${module.ips.k8s_node_fips}" |
|
||||
bastion_fips = "${module.ips.bastion_fips}" |
|
||||
|
number_of_k8s_nodes = "${var.number_of_k8s_nodes}" |
||||
|
number_of_bastions = "${var.number_of_bastions}" |
||||
|
number_of_k8s_nodes_no_floating_ip = "${var.number_of_k8s_nodes_no_floating_ip}" |
||||
|
number_of_gfs_nodes_no_floating_ip = "${var.number_of_gfs_nodes_no_floating_ip}" |
||||
|
gfs_volume_size_in_gb = "${var.gfs_volume_size_in_gb}" |
||||
|
public_key_path = "${var.public_key_path}" |
||||
|
image = "${var.image}" |
||||
|
image_gfs = "${var.image_gfs}" |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
ssh_user_gfs = "${var.ssh_user_gfs}" |
||||
|
flavor_k8s_master = "${var.flavor_k8s_master}" |
||||
|
flavor_k8s_node = "${var.flavor_k8s_node}" |
||||
|
flavor_etcd = "${var.flavor_etcd}" |
||||
|
flavor_gfs_node = "${var.flavor_gfs_node}" |
||||
|
network_name = "${var.network_name}" |
||||
|
flavor_bastion = "${var.flavor_bastion}" |
||||
|
k8s_master_fips = "${module.ips.k8s_master_fips}" |
||||
|
k8s_node_fips = "${module.ips.k8s_node_fips}" |
||||
|
bastion_fips = "${module.ips.bastion_fips}" |
||||
|
|
||||
network_id = "${module.network.router_id}" |
network_id = "${module.network.router_id}" |
||||
} |
} |
||||
|
|
||||
|
output "private_subnet_id" { |
||||
|
value = "${module.network.subnet_id}" |
||||
|
} |
||||
|
|
||||
|
output "floating_network_id" { |
||||
|
value = "${var.external_net}" |
||||
|
} |
||||
|
|
||||
|
output "router_id" { |
||||
|
value = "${module.network.router_id}" |
||||
|
} |
||||
|
|
||||
|
output "k8s_master_fips" { |
||||
|
value = "${module.ips.k8s_master_fips}" |
||||
|
} |
||||
|
|
||||
|
output "k8s_node_fips" { |
||||
|
value = "${module.ips.k8s_node_fips}" |
||||
|
} |
||||
|
|
||||
|
output "bastion_fips" { |
||||
|
value = "${module.ips.bastion_fips}" |
||||
|
} |
@ -1,280 +1,306 @@ |
|||||
|
|
||||
|
|
||||
variable user_data { |
|
||||
type = "string" |
|
||||
default = <<EOF |
|
||||
#cloud-config |
|
||||
manage_etc_hosts: localhost |
|
||||
package_update: true |
|
||||
package_upgrade: true |
|
||||
EOF |
|
||||
} |
|
||||
resource "openstack_compute_keypair_v2" "k8s" { |
resource "openstack_compute_keypair_v2" "k8s" { |
||||
name = "kubernetes-${var.cluster_name}" |
|
||||
public_key = "${chomp(file(var.public_key_path))}" |
|
||||
|
name = "kubernetes-${var.cluster_name}" |
||||
|
public_key = "${chomp(file(var.public_key_path))}" |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_secgroup_v2" "k8s_master" { |
resource "openstack_compute_secgroup_v2" "k8s_master" { |
||||
name = "${var.cluster_name}-k8s-master" |
|
||||
description = "${var.cluster_name} - Kubernetes Master" |
|
||||
rule { |
|
||||
ip_protocol = "tcp" |
|
||||
from_port = "6443" |
|
||||
to_port = "6443" |
|
||||
cidr = "0.0.0.0/0" |
|
||||
} |
|
||||
|
name = "${var.cluster_name}-k8s-master" |
||||
|
description = "${var.cluster_name} - Kubernetes Master" |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "tcp" |
||||
|
from_port = "6443" |
||||
|
to_port = "6443" |
||||
|
cidr = "0.0.0.0/0" |
||||
|
} |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_secgroup_v2" "bastion" { |
resource "openstack_compute_secgroup_v2" "bastion" { |
||||
name = "${var.cluster_name}-bastion" |
|
||||
description = "${var.cluster_name} - Bastion Server" |
|
||||
rule { |
|
||||
ip_protocol = "tcp" |
|
||||
from_port = "22" |
|
||||
to_port = "22" |
|
||||
cidr = "0.0.0.0/0" |
|
||||
} |
|
||||
|
name = "${var.cluster_name}-bastion" |
||||
|
description = "${var.cluster_name} - Bastion Server" |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "tcp" |
||||
|
from_port = "22" |
||||
|
to_port = "22" |
||||
|
cidr = "0.0.0.0/0" |
||||
|
} |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_secgroup_v2" "k8s" { |
resource "openstack_compute_secgroup_v2" "k8s" { |
||||
name = "${var.cluster_name}-k8s" |
|
||||
description = "${var.cluster_name} - Kubernetes" |
|
||||
rule { |
|
||||
ip_protocol = "icmp" |
|
||||
from_port = "-1" |
|
||||
to_port = "-1" |
|
||||
cidr = "0.0.0.0/0" |
|
||||
} |
|
||||
rule { |
|
||||
ip_protocol = "tcp" |
|
||||
from_port = "1" |
|
||||
to_port = "65535" |
|
||||
self = true |
|
||||
} |
|
||||
rule { |
|
||||
ip_protocol = "udp" |
|
||||
from_port = "1" |
|
||||
to_port = "65535" |
|
||||
self = true |
|
||||
} |
|
||||
rule { |
|
||||
ip_protocol = "icmp" |
|
||||
from_port = "-1" |
|
||||
to_port = "-1" |
|
||||
self = true |
|
||||
} |
|
||||
|
name = "${var.cluster_name}-k8s" |
||||
|
description = "${var.cluster_name} - Kubernetes" |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "icmp" |
||||
|
from_port = "-1" |
||||
|
to_port = "-1" |
||||
|
cidr = "0.0.0.0/0" |
||||
|
} |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "tcp" |
||||
|
from_port = "1" |
||||
|
to_port = "65535" |
||||
|
self = true |
||||
|
} |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "udp" |
||||
|
from_port = "1" |
||||
|
to_port = "65535" |
||||
|
self = true |
||||
|
} |
||||
|
|
||||
|
rule { |
||||
|
ip_protocol = "icmp" |
||||
|
from_port = "-1" |
||||
|
to_port = "-1" |
||||
|
self = true |
||||
|
} |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "bastion" { |
resource "openstack_compute_instance_v2" "bastion" { |
||||
name = "${var.cluster_name}-bastion-${count.index+1}" |
|
||||
count = "${var.number_of_bastions}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_bastion}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"${openstack_compute_secgroup_v2.bastion.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "bastion" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
|
|
||||
provisioner "local-exec" { |
|
||||
command = "sed s/USER/${var.ssh_user}/ contrib/terraform/openstack/ansible_bastion_template.txt | sed s/BASTION_ADDRESS/${var.bastion_fips[0]}/ > contrib/terraform/openstack/group_vars/no-floating.yml" |
|
||||
} |
|
||||
|
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-bastion-${count.index+1}" |
||||
|
count = "${var.number_of_bastions}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_bastion}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"${openstack_compute_secgroup_v2.bastion.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "bastion" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
|
provisioner "local-exec" { |
||||
|
command = "sed s/USER/${var.ssh_user}/ contrib/terraform/openstack/ansible_bastion_template.txt | sed s/BASTION_ADDRESS/${var.bastion_fips[0]}/ > contrib/terraform/openstack/group_vars/no-floating.yml" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_master" { |
resource "openstack_compute_instance_v2" "k8s_master" { |
||||
name = "${var.cluster_name}-k8s-master-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_masters}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_master}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s_master.name}", |
|
||||
"${openstack_compute_secgroup_v2.bastion.name}", |
|
||||
"${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "etcd,kube-master,kube-node,k8s-cluster,vault" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-k8s-master-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_masters}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_master}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s_master.name}", |
||||
|
"${openstack_compute_secgroup_v2.bastion.name}", |
||||
|
"${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "etcd,kube-master,k8s-cluster,vault" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_master_no_etcd" { |
resource "openstack_compute_instance_v2" "k8s_master_no_etcd" { |
||||
name = "${var.cluster_name}-k8s-master-ne-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_masters_no_etcd}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_master}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s_master.name}", |
|
||||
"${openstack_compute_secgroup_v2.k8s.name}" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "kube-master,kube-node,k8s-cluster,vault" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-k8s-master-ne-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_masters_no_etcd}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_master}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s_master.name}", |
||||
|
"${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "kube-master,k8s-cluster,vault" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "etcd" { |
resource "openstack_compute_instance_v2" "etcd" { |
||||
name = "${var.cluster_name}-etcd-${count.index+1}" |
|
||||
count = "${var.number_of_etcd}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_etcd}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s.name}" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "etcd,vault,no-floating" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
} |
|
||||
|
name = "${var.cluster_name}-etcd-${count.index+1}" |
||||
|
count = "${var.number_of_etcd}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_etcd}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}"] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "etcd,vault,no-floating" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_master_no_floating_ip" { |
resource "openstack_compute_instance_v2" "k8s_master_no_floating_ip" { |
||||
name = "${var.cluster_name}-k8s-master-nf-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_masters_no_floating_ip}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_master}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s_master.name}", |
|
||||
"${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "etcd,kube-master,kube-node,k8s-cluster,vault,no-floating" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-k8s-master-nf-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_masters_no_floating_ip}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_master}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s_master.name}", |
||||
|
"${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "etcd,kube-master,k8s-cluster,vault,no-floating" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_master_no_floating_ip_no_etcd" { |
resource "openstack_compute_instance_v2" "k8s_master_no_floating_ip_no_etcd" { |
||||
name = "${var.cluster_name}-k8s-master-ne-nf-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_masters_no_floating_ip_no_etcd}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_master}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s_master.name}", |
|
||||
"${openstack_compute_secgroup_v2.k8s.name}" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "kube-master,kube-node,k8s-cluster,vault,no-floating" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
} |
|
||||
|
name = "${var.cluster_name}-k8s-master-ne-nf-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_masters_no_floating_ip_no_etcd}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_master}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s_master.name}", |
||||
|
"${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "kube-master,k8s-cluster,vault,no-floating" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_node" { |
resource "openstack_compute_instance_v2" "k8s_node" { |
||||
name = "${var.cluster_name}-k8s-node-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_nodes}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_node}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"${openstack_compute_secgroup_v2.bastion.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "kube-node,k8s-cluster" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-k8s-node-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_nodes}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_node}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"${openstack_compute_secgroup_v2.bastion.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "kube-node,k8s-cluster" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "k8s_node_no_floating_ip" { |
resource "openstack_compute_instance_v2" "k8s_node_no_floating_ip" { |
||||
name = "${var.cluster_name}-k8s-node-nf-${count.index+1}" |
|
||||
count = "${var.number_of_k8s_nodes_no_floating_ip}" |
|
||||
image_name = "${var.image}" |
|
||||
flavor_id = "${var.flavor_k8s_node}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = [ "${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user}" |
|
||||
kubespray_groups = "kube-node,k8s-cluster,no-floating" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "${var.user_data}" |
|
||||
|
name = "${var.cluster_name}-k8s-node-nf-${count.index+1}" |
||||
|
count = "${var.number_of_k8s_nodes_no_floating_ip}" |
||||
|
image_name = "${var.image}" |
||||
|
flavor_id = "${var.flavor_k8s_node}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user}" |
||||
|
kubespray_groups = "kube-node,k8s-cluster,no-floating" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_floatingip_associate_v2" "bastion" { |
resource "openstack_compute_floatingip_associate_v2" "bastion" { |
||||
count = "${var.number_of_bastions}" |
|
||||
floating_ip = "${var.bastion_fips[count.index]}" |
|
||||
instance_id = "${element(openstack_compute_instance_v2.bastion.*.id, count.index)}" |
|
||||
|
count = "${var.number_of_bastions}" |
||||
|
floating_ip = "${var.bastion_fips[count.index]}" |
||||
|
instance_id = "${element(openstack_compute_instance_v2.bastion.*.id, count.index)}" |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_floatingip_associate_v2" "k8s_master" { |
resource "openstack_compute_floatingip_associate_v2" "k8s_master" { |
||||
count = "${var.number_of_k8s_masters}" |
|
||||
instance_id = "${element(openstack_compute_instance_v2.k8s_master.*.id, count.index)}" |
|
||||
floating_ip = "${var.k8s_master_fips[count.index]}" |
|
||||
|
count = "${var.number_of_k8s_masters}" |
||||
|
instance_id = "${element(openstack_compute_instance_v2.k8s_master.*.id, count.index)}" |
||||
|
floating_ip = "${var.k8s_master_fips[count.index]}" |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_floatingip_associate_v2" "k8s_node" { |
resource "openstack_compute_floatingip_associate_v2" "k8s_node" { |
||||
count = "${var.number_of_k8s_nodes}" |
|
||||
floating_ip = "${var.k8s_node_fips[count.index]}" |
|
||||
instance_id = "${element(openstack_compute_instance_v2.k8s_node.*.id, count.index)}" |
|
||||
|
count = "${var.number_of_k8s_nodes}" |
||||
|
floating_ip = "${var.k8s_node_fips[count.index]}" |
||||
|
instance_id = "${element(openstack_compute_instance_v2.k8s_node.*.id, count.index)}" |
||||
} |
} |
||||
|
|
||||
|
|
||||
resource "openstack_blockstorage_volume_v2" "glusterfs_volume" { |
resource "openstack_blockstorage_volume_v2" "glusterfs_volume" { |
||||
name = "${var.cluster_name}-glusterfs_volume-${count.index+1}" |
|
||||
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
|
||||
|
name = "${var.cluster_name}-glusterfs_volume-${count.index+1}" |
||||
|
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
||||
description = "Non-ephemeral volume for GlusterFS" |
description = "Non-ephemeral volume for GlusterFS" |
||||
size = "${var.gfs_volume_size_in_gb}" |
|
||||
|
size = "${var.gfs_volume_size_in_gb}" |
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_instance_v2" "glusterfs_node_no_floating_ip" { |
resource "openstack_compute_instance_v2" "glusterfs_node_no_floating_ip" { |
||||
name = "${var.cluster_name}-gfs-node-nf-${count.index+1}" |
|
||||
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
|
||||
image_name = "${var.image_gfs}" |
|
||||
flavor_id = "${var.flavor_gfs_node}" |
|
||||
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
|
||||
network { |
|
||||
name = "${var.network_name}" |
|
||||
} |
|
||||
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}", |
|
||||
"default" ] |
|
||||
metadata = { |
|
||||
ssh_user = "${var.ssh_user_gfs}" |
|
||||
kubespray_groups = "gfs-cluster,network-storage,no-floating" |
|
||||
depends_on = "${var.network_id}" |
|
||||
} |
|
||||
user_data = "#cloud-config\nmanage_etc_hosts: localhost\npackage_update: true\npackage_upgrade: true" |
|
||||
|
name = "${var.cluster_name}-gfs-node-nf-${count.index+1}" |
||||
|
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
||||
|
image_name = "${var.image_gfs}" |
||||
|
flavor_id = "${var.flavor_gfs_node}" |
||||
|
key_pair = "${openstack_compute_keypair_v2.k8s.name}" |
||||
|
|
||||
|
network { |
||||
|
name = "${var.network_name}" |
||||
|
} |
||||
|
|
||||
|
security_groups = ["${openstack_compute_secgroup_v2.k8s.name}", |
||||
|
"default", |
||||
|
] |
||||
|
|
||||
|
metadata = { |
||||
|
ssh_user = "${var.ssh_user_gfs}" |
||||
|
kubespray_groups = "gfs-cluster,network-storage,no-floating" |
||||
|
depends_on = "${var.network_id}" |
||||
|
} |
||||
|
|
||||
} |
} |
||||
|
|
||||
resource "openstack_compute_volume_attach_v2" "glusterfs_volume" { |
resource "openstack_compute_volume_attach_v2" "glusterfs_volume" { |
||||
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
|
||||
|
count = "${var.number_of_gfs_nodes_no_floating_ip}" |
||||
instance_id = "${element(openstack_compute_instance_v2.glusterfs_node_no_floating_ip.*.id, count.index)}" |
instance_id = "${element(openstack_compute_instance_v2.glusterfs_node_no_floating_ip.*.id, count.index)}" |
||||
volume_id = "${element(openstack_blockstorage_volume_v2.glusterfs_volume.*.id, count.index)}" |
volume_id = "${element(openstack_blockstorage_volume_v2.glusterfs_volume.*.id, count.index)}" |
||||
} |
} |
@ -1,11 +1,11 @@ |
|||||
output "k8s_master_fips" { |
output "k8s_master_fips" { |
||||
value = ["${openstack_networking_floatingip_v2.k8s_master.*.address}"] |
|
||||
|
value = ["${openstack_networking_floatingip_v2.k8s_master.*.address}"] |
||||
} |
} |
||||
|
|
||||
output "k8s_node_fips" { |
output "k8s_node_fips" { |
||||
value = ["${openstack_networking_floatingip_v2.k8s_node.*.address}"] |
|
||||
|
value = ["${openstack_networking_floatingip_v2.k8s_node.*.address}"] |
||||
} |
} |
||||
|
|
||||
output "bastion_fips" { |
output "bastion_fips" { |
||||
value = ["${openstack_networking_floatingip_v2.bastion.*.address}"] |
|
||||
|
value = ["${openstack_networking_floatingip_v2.bastion.*.address}"] |
||||
} |
} |
@ -1,26 +1,15 @@ |
|||||
variable "number_of_k8s_masters" { |
|
||||
} |
|
||||
|
variable "number_of_k8s_masters" {} |
||||
|
|
||||
variable "number_of_k8s_masters_no_etcd" { |
|
||||
} |
|
||||
|
variable "number_of_k8s_masters_no_etcd" {} |
||||
|
|
||||
variable "number_of_k8s_nodes" { |
|
||||
} |
|
||||
|
variable "number_of_k8s_nodes" {} |
||||
|
|
||||
variable "floatingip_pool" { |
|
||||
} |
|
||||
|
variable "floatingip_pool" {} |
||||
|
|
||||
variable "number_of_bastions" { |
|
||||
|
variable "number_of_bastions" {} |
||||
|
|
||||
} |
|
||||
|
variable "external_net" {} |
||||
|
|
||||
variable "external_net" { |
|
||||
|
variable "network_name" {} |
||||
|
|
||||
} |
|
||||
|
|
||||
variable "network_name" { |
|
||||
} |
|
||||
|
|
||||
variable "router_id"{ |
|
||||
|
|
||||
} |
|
||||
|
variable "router_id" {} |
@ -1,7 +1,7 @@ |
|||||
output "router_id" { |
output "router_id" { |
||||
value = "${openstack_networking_router_interface_v2.k8s.id}" |
|
||||
|
value = "${openstack_networking_router_interface_v2.k8s.id}" |
||||
} |
} |
||||
|
|
||||
output "network_id" { |
output "network_id" { |
||||
value = "${openstack_networking_subnet_v2.k8s.id}" |
|
||||
|
value = "${openstack_networking_subnet_v2.k8s.id}" |
||||
} |
} |
@ -1,13 +1,9 @@ |
|||||
variable "external_net" { |
|
||||
|
variable "external_net" {} |
||||
|
|
||||
} |
|
||||
|
|
||||
variable "network_name" { |
|
||||
} |
|
||||
|
variable "network_name" {} |
||||
|
|
||||
variable "cluster_name" { |
|
||||
} |
|
||||
|
variable "cluster_name" {} |
||||
|
|
||||
variable "dns_nameservers"{ |
|
||||
|
variable "dns_nameservers" { |
||||
type = "list" |
type = "list" |
||||
} |
} |
Write
Preview
Loading…
Cancel
Save