Skip to content

Commit edcdb34

Browse files
authored
Merge pull request #24 from InputObject2/feature/module-upgrade
feat(module): Upgraded module to work with newer packages
2 parents 6a1e304 + ea23ad3 commit edcdb34

9 files changed

+83
-109
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.terraform
2+
.terraform.d
3+
.terraform.lock.hcl
4+
**/*.tfstate

README.md

+22-16
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,20 @@ module "microk8s_cluster" {
5252
|------|---------|
5353
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
5454
| <a name="requirement_macaddress"></a> [macaddress](#requirement\_macaddress) | >=0.3.0 |
55-
| <a name="requirement_null"></a> [null](#requirement\_null) | >=3.2.2 |
56-
| <a name="requirement_random"></a> [random](#requirement\_random) | >=3.6.2 |
55+
| <a name="requirement_null"></a> [null](#requirement\_null) | >=3.2.3 |
56+
| <a name="requirement_random"></a> [random](#requirement\_random) | >=3.6.3 |
5757
| <a name="requirement_sshcommand"></a> [sshcommand](#requirement\_sshcommand) | >=0.2.2 |
58-
| <a name="requirement_xenorchestra"></a> [xenorchestra](#requirement\_xenorchestra) | >=0.26.1 |
58+
| <a name="requirement_xenorchestra"></a> [xenorchestra](#requirement\_xenorchestra) | 0.29.0 |
5959

6060
## Providers
6161

6262
| Name | Version |
6363
|------|---------|
64-
| <a name="provider_null"></a> [null](#provider\_null) | 3.2.2 |
65-
| <a name="provider_random"></a> [random](#provider\_random) | 3.6.2 |
64+
| <a name="provider_macaddress"></a> [macaddress](#provider\_macaddress) | 0.3.2 |
65+
| <a name="provider_null"></a> [null](#provider\_null) | 3.2.3 |
66+
| <a name="provider_random"></a> [random](#provider\_random) | 3.6.3 |
6667
| <a name="provider_sshcommand"></a> [sshcommand](#provider\_sshcommand) | 0.2.2 |
67-
| <a name="provider_xenorchestra"></a> [xenorchestra](#provider\_xenorchestra) | 0.26.1 |
68+
| <a name="provider_xenorchestra"></a> [xenorchestra](#provider\_xenorchestra) | 0.29.0 |
6869

6970
## Modules
7071

@@ -74,21 +75,24 @@ No modules.
7475

7576
| Name | Type |
7677
|------|------|
78+
| [macaddress_macaddress.mac_master_primary](https://registry.terraform.io/providers/ivoronin/macaddress/latest/docs/resources/macaddress) | resource |
79+
| [macaddress_macaddress.mac_master_secondaries](https://registry.terraform.io/providers/ivoronin/macaddress/latest/docs/resources/macaddress) | resource |
80+
| [macaddress_macaddress.mac_nodes](https://registry.terraform.io/providers/ivoronin/macaddress/latest/docs/resources/macaddress) | resource |
7781
| [null_resource.sleep_while_master_readies_up](https://registry.terraform.io/providers/hashicorp/null/latest/docs/resources/resource) | resource |
7882
| [random_integer.master](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/integer) | resource |
7983
| [random_integer.node](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/integer) | resource |
8084
| [random_uuid.custom_token](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/uuid) | resource |
8185
| [sshcommand_command.get_kubeconfig](https://registry.terraform.io/providers/invidian/sshcommand/latest/docs/resources/command) | resource |
82-
| [xenorchestra_cloud_config.master](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/cloud_config) | resource |
83-
| [xenorchestra_cloud_config.node](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/cloud_config) | resource |
84-
| [xenorchestra_cloud_config.secondary](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/cloud_config) | resource |
85-
| [xenorchestra_vm.master](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/vm) | resource |
86-
| [xenorchestra_vm.node](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/vm) | resource |
87-
| [xenorchestra_vm.secondary](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/resources/vm) | resource |
88-
| [xenorchestra_network.master](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/data-sources/network) | data source |
89-
| [xenorchestra_network.node](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/data-sources/network) | data source |
90-
| [xenorchestra_pool.xcp_ng_master](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/data-sources/pool) | data source |
91-
| [xenorchestra_pool.xcp_ng_node](https://registry.terraform.io/providers/terra-farm/xenorchestra/latest/docs/data-sources/pool) | data source |
86+
| [xenorchestra_cloud_config.master](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/cloud_config) | resource |
87+
| [xenorchestra_cloud_config.node](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/cloud_config) | resource |
88+
| [xenorchestra_cloud_config.secondary](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/cloud_config) | resource |
89+
| [xenorchestra_vm.master](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/vm) | resource |
90+
| [xenorchestra_vm.node](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/vm) | resource |
91+
| [xenorchestra_vm.secondary](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/resources/vm) | resource |
92+
| [xenorchestra_network.master](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/data-sources/network) | data source |
93+
| [xenorchestra_network.node](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/data-sources/network) | data source |
94+
| [xenorchestra_pool.xcp_ng_master](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/data-sources/pool) | data source |
95+
| [xenorchestra_pool.xcp_ng_node](https://registry.terraform.io/providers/vatesfr/xenorchestra/0.29.0/docs/data-sources/pool) | data source |
9296

9397
## Inputs
9498

@@ -103,6 +107,7 @@ No modules.
103107
| <a name="input_k8s_image_swapper_private_registy"></a> [k8s\_image\_swapper\_private\_registy](#input\_k8s\_image\_swapper\_private\_registy) | Point this to the FQDN of a private registry so the k8s-image-swapper can pull from there. Has no effect if `install_k8s_image_swapper` is unused | `string` | `""` | no |
104108
| <a name="input_master_count"></a> [master\_count](#input\_master\_count) | Number of master nodes to deploy | `number` | `3` | no |
105109
| <a name="input_master_cpu_count"></a> [master\_cpu\_count](#input\_master\_cpu\_count) | Number of CPUs for each master node | `number` | `2` | no |
110+
| <a name="input_master_expected_cidr"></a> [master\_expected\_cidr](#input\_master\_expected\_cidr) | Expected CIDR for master nodes, used for checking if the virtual machine is now ready. Replaces the old `wait_for_ip` | `string` | `"10.0.0.0/16"` | no |
106111
| <a name="input_master_memory_gb"></a> [master\_memory\_gb](#input\_master\_memory\_gb) | Memory in GB for each master node | `number` | `4` | no |
107112
| <a name="input_master_os_disk_size"></a> [master\_os\_disk\_size](#input\_master\_os\_disk\_size) | OS disk size in GB for each master node | `number` | `32` | no |
108113
| <a name="input_master_os_disk_xoa_sr_uuid"></a> [master\_os\_disk\_xoa\_sr\_uuid](#input\_master\_os\_disk\_xoa\_sr\_uuid) | Storage repository UUID for master node OS disks | `list(string)` | n/a | yes |
@@ -114,6 +119,7 @@ No modules.
114119
| <a name="input_microk8s_version"></a> [microk8s\_version](#input\_microk8s\_version) | The snap channel version to install, for example `1.29/stable`. Defaults to latest if not specified | `string` | `null` | no |
115120
| <a name="input_node_count"></a> [node\_count](#input\_node\_count) | Number of worker nodes to deploy | `number` | `0` | no |
116121
| <a name="input_node_cpu_count"></a> [node\_cpu\_count](#input\_node\_cpu\_count) | Number of CPUs for each worker node | `number` | `4` | no |
122+
| <a name="input_node_expected_cidr"></a> [node\_expected\_cidr](#input\_node\_expected\_cidr) | Expected CIDR for nodes, used for checking if the virtual machine is now ready. Replaces the old `wait_for_ip` | `string` | `"10.0.0.0/16"` | no |
117123
| <a name="input_node_memory_gb"></a> [node\_memory\_gb](#input\_node\_memory\_gb) | Memory in GB for each worker node | `number` | `8` | no |
118124
| <a name="input_node_os_disk_size"></a> [node\_os\_disk\_size](#input\_node\_os\_disk\_size) | OS disk size in GB for each worker node | `number` | `32` | no |
119125
| <a name="input_node_os_disk_xoa_sr_uuid"></a> [node\_os\_disk\_xoa\_sr\_uuid](#input\_node\_os\_disk\_xoa\_sr\_uuid) | Storage repository UUID for worker node OS disks | `list(string)` | n/a | yes |

local_mac_addressses.tf

-4
This file was deleted.

providers.tf

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
terraform {
44
required_providers {
55
xenorchestra = {
6-
source = "terra-farm/xenorchestra"
7-
version = ">=0.26.1"
6+
source = "vatesfr/xenorchestra"
7+
version = "0.29.0"
88
}
99
macaddress = {
1010
source = "ivoronin/macaddress"
@@ -16,13 +16,13 @@ terraform {
1616
}
1717
null = {
1818
source = "hashicorp/null"
19-
version = ">=3.2.2"
19+
version = ">=3.2.3"
2020
}
2121
random = {
2222
source = "hashicorp/random"
23-
version = ">=3.6.2"
23+
version = ">=3.6.3"
2424
}
2525
}
2626

2727
required_version = ">= 1.0"
28-
}
28+
}

variables.tf

+12
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ variable "node_xoa_network_name" {
4545
default = null
4646
}
4747

48+
variable "node_expected_cidr" {
49+
description = "Expected CIDR for nodes, used for checking if the virtual machine is now ready. Replaces the old `wait_for_ip`"
50+
type = string
51+
default = "10.0.0.0/16"
52+
}
53+
4854
variable "node_tags" {
4955
description = "Tags to apply to worker nodes"
5056
type = list(string)
@@ -101,6 +107,12 @@ variable "master_xoa_network_name" {
101107
default = null
102108
}
103109

110+
variable "master_expected_cidr" {
111+
description = "Expected CIDR for master nodes, used for checking if the virtual machine is now ready. Replaces the old `wait_for_ip`"
112+
type = string
113+
default = "10.0.0.0/16"
114+
}
115+
104116
variable "master_tags" {
105117
description = "Tags to apply to master nodes"
106118
type = list(string)

xen_data.tf

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ provider "xenorchestra" {
77
insecure = var.xoa_ignore_ssl # Or set XOA_INSECURE environment variable to any value
88
}
99

10+
provider "macaddress" {}
11+
1012

1113
# docs : https://github.com/terra-farm/terraform-provider-xenorchestra/blob/master/docs/resources/vm.md
1214

xen_master.tf

+14-33
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ locals {
1313
microk8s_version_channel = var.microk8s_version == null ? "" : "--channel=${var.microk8s_version}"
1414
}
1515

16+
resource "macaddress" "mac_master_primary" {
17+
prefix = [0, 22, 62]
18+
}
19+
1620
resource "xenorchestra_cloud_config" "master" {
1721
name = "ubuntu-base-config-master-0-${var.cluster_name}"
1822
template = <<EOF
@@ -28,8 +32,9 @@ users:
2832
ssh_authorized_keys:
2933
- ${var.public_ssh_key}
3034
35+
package_update: true
36+
3137
packages:
32-
- xe-guest-utilities
3338
- open-iscsi
3439
- lsscsi
3540
- sg3-utils
@@ -70,6 +75,9 @@ write_files:
7075
memory: 80Mi
7176
7277
runcmd:
78+
- wget https://github.com/xenserver/xe-guest-utilities/releases/download/v8.4.0/xe-guest-utilities_8.4.0-1_amd64.deb
79+
- dpkg -i xe-guest-utilities_8.4.0-1_amd64.deb
80+
7381
- |
7482
netplan apply
7583
snap install microk8s --classic ${local.microk8s_version_channel}
@@ -97,34 +105,6 @@ runcmd:
97105
${var.install_k8s_image_swapper ? "microk8s helm install k8s-image-swapper estahn/k8s-image-swapper -n k8s-image-swapper --create-namespace --version 1.8.0 -f /tmp/k8s-image-swapper-values.yaml" : ""}
98106
microk8s enable metrics-server
99107
100-
firewall:
101-
rules:
102-
- name: Allow traffic on port 16443
103-
port: 16443
104-
protocol: tcp
105-
action: accept
106-
source: 0.0.0.0/0
107-
- name: Allow traffic on port 80
108-
port: 80
109-
protocol: tcp
110-
action: accept
111-
source: 0.0.0.0/0
112-
- name: Allow traffic on port 443
113-
port: 443
114-
protocol: tcp
115-
action: accept
116-
source: 0.0.0.0/0
117-
- name: Allow traffic on port 25000
118-
port: 25000
119-
protocol: tcp
120-
action: accept
121-
source: 0.0.0.0/0
122-
- name: Allow traffic on port 32000
123-
port: 32000
124-
protocol: tcp
125-
action: accept
126-
source: 0.0.0.0/0
127-
128108
power_state:
129109
delay: now
130110
mode: reboot
@@ -147,8 +127,9 @@ resource "xenorchestra_vm" "master" {
147127
name_description = "${local.master_prefix}-${random_integer.master[0].result}.${var.dns_sub_zone}.${substr(lower(var.dns_zone), 0, length(var.dns_zone) - 1)}"
148128

149129
network {
150-
network_id = data.xenorchestra_network.master.id
151-
mac_address = local.mac_address_list[random_integer.master[0].result]
130+
network_id = data.xenorchestra_network.master.id
131+
mac_address = macaddress.mac_master_primary.address
132+
expected_ip_cidr = var.master_expected_cidr
152133
}
153134

154135
disk {
@@ -160,8 +141,8 @@ resource "xenorchestra_vm" "master" {
160141
cpus = var.master_cpu_count
161142
memory_max = var.master_memory_gb * 1024 * 1024 * 1024 # GB to B
162143

163-
wait_for_ip = true
164-
start_delay = var.start_delay
144+
destroy_cloud_config_vdi_after_boot = false
145+
start_delay = var.start_delay
165146

166147
tags = concat(var.tags, var.master_tags, ["kubernetes.io/role:primary", "xcp-ng.org/deployment:${var.cluster_name}"])
167148

xen_nodes.tf

+12-18
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ resource "random_integer" "node" {
88
max = 9999
99
}
1010

11+
resource "macaddress" "mac_nodes" {
12+
count = var.node_count
13+
prefix = [0, 22, 62]
14+
}
15+
1116
resource "xenorchestra_cloud_config" "node" {
1217
count = var.node_count
1318
name = "ubuntu-base-config-node-${count.index}"
@@ -24,7 +29,6 @@ users:
2429
- ${var.public_ssh_key}
2530
2631
packages:
27-
- xe-guest-utilities
2832
- open-iscsi
2933
- lsscsi
3034
- sg3-utils
@@ -34,6 +38,8 @@ packages:
3438
- jq
3539
3640
runcmd:
41+
- wget https://github.com/xenserver/xe-guest-utilities/releases/download/v8.4.0/xe-guest-utilities_8.4.0-1_amd64.deb
42+
- dpkg -i xe-guest-utilities_8.4.0-1_amd64.deb
3743
- |
3844
netplan apply
3945
snap install microk8s --classic
@@ -55,19 +61,6 @@ runcmd:
5561
microk8s start
5662
microk8s join ${xenorchestra_vm.master.ipv4_addresses[0]}:25000/${local.custom_token} --worker
5763
microk8s kubectl label node ${local.node_prefix}-${random_integer.node[count.index].result}.${var.dns_sub_zone}.${substr(lower(var.dns_zone), 0, length(var.dns_zone) - 1)} node-role.kubernetes.io/worker=worker
58-
59-
firewall:
60-
rules:
61-
- name: Allow traffic on port 80
62-
port: 80
63-
protocol: tcp
64-
action: accept
65-
source: 0.0.0.0/0
66-
- name: Allow traffic on port 443
67-
port: 443
68-
protocol: tcp
69-
action: accept
70-
source: 0.0.0.0/0
7164
EOF
7265

7366
depends_on = [xenorchestra_vm.master]
@@ -85,8 +78,9 @@ resource "xenorchestra_vm" "node" {
8578
name_description = "${local.node_prefix}-${random_integer.node[count.index].result}.${var.dns_sub_zone}.${substr(lower(var.dns_zone), 0, length(var.dns_zone) - 1)}"
8679

8780
network {
88-
network_id = data.xenorchestra_network.node.id
89-
mac_address = local.mac_address_list[random_integer.node[count.index].result]
81+
network_id = data.xenorchestra_network.node.id
82+
mac_address = macaddress.mac_nodes[count.index].address
83+
expected_ip_cidr = var.node_expected_cidr
9084
}
9185

9286
disk {
@@ -98,8 +92,8 @@ resource "xenorchestra_vm" "node" {
9892
cpus = var.node_cpu_count
9993
memory_max = var.node_memory_gb * 1024 * 1024 * 1024 # GB to B
10094

101-
wait_for_ip = true
102-
start_delay = var.start_delay
95+
start_delay = var.start_delay
96+
destroy_cloud_config_vdi_after_boot = false
10397

10498
tags = concat(var.tags, var.node_tags, ["kubernetes.io/role:worker", "xcp-ng.org/deployment:${var.cluster_name}"])
10599

xen_secondaries.tf

+12-33
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ users:
1414
- ${var.public_ssh_key}
1515
1616
packages:
17-
- xe-guest-utilities
1817
- open-iscsi
1918
- lsscsi
2019
- sg3-utils
@@ -24,6 +23,8 @@ packages:
2423
- jq
2524
2625
runcmd:
26+
- wget https://github.com/xenserver/xe-guest-utilities/releases/download/v8.4.0/xe-guest-utilities_8.4.0-1_amd64.deb
27+
- dpkg -i xe-guest-utilities_8.4.0-1_amd64.deb
2728
- |
2829
netplan apply
2930
snap install microk8s --classic
@@ -45,37 +46,14 @@ runcmd:
4546
microk8s start
4647
microk8s join ${xenorchestra_vm.master.ipv4_addresses[0]}:25000/${local.custom_token}
4748
microk8s kubectl label node ${local.master_prefix}-${random_integer.master[count.index + 1].result}.${var.dns_sub_zone}.${substr(lower(var.dns_zone), 0, length(var.dns_zone) - 1)} node-role.kubernetes.io/control-plane
48-
49-
firewall:
50-
rules:
51-
- name: Allow traffic on port 16443
52-
port: 16443
53-
protocol: tcp
54-
action: accept
55-
source: 0.0.0.0/0
56-
- name: Allow traffic on port 80
57-
port: 80
58-
protocol: tcp
59-
action: accept
60-
source: 0.0.0.0/0
61-
- name: Allow traffic on port 443
62-
port: 443
63-
protocol: tcp
64-
action: accept
65-
source: 0.0.0.0/0
66-
- name: Allow traffic on port 25000
67-
port: 25000
68-
protocol: tcp
69-
action: accept
70-
source: 0.0.0.0/0
71-
- name: Allow traffic on port 32000
72-
port: 32000
73-
protocol: tcp
74-
action: accept
75-
source: 0.0.0.0/0
7649
EOF
7750
}
7851

52+
resource "macaddress" "mac_master_secondaries" {
53+
count = var.master_count - 1
54+
prefix = [0, 22, 62]
55+
}
56+
7957

8058
resource "xenorchestra_vm" "secondary" {
8159
count = var.master_count - 1
@@ -88,8 +66,9 @@ resource "xenorchestra_vm" "secondary" {
8866
name_description = "${local.master_prefix}-${random_integer.master[count.index + 1].result}.${var.dns_sub_zone}.${substr(lower(var.dns_zone), 0, length(var.dns_zone) - 1)}"
8967

9068
network {
91-
network_id = data.xenorchestra_network.master.id
92-
mac_address = local.mac_address_list[random_integer.master[count.index + 1].result]
69+
network_id = data.xenorchestra_network.master.id
70+
mac_address = macaddress.mac_master_secondaries[count.index].address
71+
expected_ip_cidr = var.master_expected_cidr
9372
}
9473

9574
disk {
@@ -101,8 +80,8 @@ resource "xenorchestra_vm" "secondary" {
10180
cpus = var.master_cpu_count
10281
memory_max = var.master_memory_gb * 1024 * 1024 * 1024 # GB to B
10382

104-
wait_for_ip = true
105-
start_delay = var.start_delay
83+
start_delay = var.start_delay
84+
destroy_cloud_config_vdi_after_boot = false
10685

10786
tags = concat(var.tags, var.master_tags, ["kubernetes.io/role:secondary", "xcp-ng.org/deployment:${var.cluster_name}"])
10887

0 commit comments

Comments
 (0)