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
Split 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" { |
|||
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}" |
|||
} |
|||
|
|||
|
|||
module "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_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" { |
|||
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_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}" |
|||
} |
|||
|
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" { |
|||
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" |
|||
size = "${var.gfs_volume_size_in_gb}" |
|||
size = "${var.gfs_volume_size_in_gb}" |
|||
} |
|||
|
|||
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" { |
|||
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)}" |
|||
volume_id = "${element(openstack_blockstorage_volume_v2.glusterfs_volume.*.id, count.index)}" |
|||
} |
@ -1,11 +1,11 @@ |
|||
output "k8s_master_fips" { |
|||
value = ["${openstack_networking_floatingip_v2.k8s_master.*.address}"] |
|||
value = ["${openstack_networking_floatingip_v2.k8s_master.*.address}"] |
|||
} |
|||
|
|||
output "k8s_node_fips" { |
|||
value = ["${openstack_networking_floatingip_v2.k8s_node.*.address}"] |
|||
value = ["${openstack_networking_floatingip_v2.k8s_node.*.address}"] |
|||
} |
|||
|
|||
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" { |
|||
value = "${openstack_networking_router_interface_v2.k8s.id}" |
|||
value = "${openstack_networking_router_interface_v2.k8s.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" |
|||
} |
Write
Preview
Loading…
Cancel
Save