Skip to content
This repository was archived by the owner on Nov 1, 2023. It is now read-only.

Commit 475a99a

Browse files
authored
Merge pull request #39 from stephenmoloney/feature/flexible-docker-and-ubuntu
Easier terraform choice of docker and ubuntu versions
2 parents af7a6fe + 8e0b017 commit 475a99a

File tree

7 files changed

+65
-15
lines changed

7 files changed

+65
-15
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ $ terraform apply \
5050
-var nodes=1 \
5151
-var server_type_node=C2S \
5252
-var weave_passwd=ChangeMe \
53-
-var docker_version=17.12.0~ce-0~ubuntu
53+
-var docker_version=18.06 \
54+
-var ubuntu_version="Ubuntu Bionic"
5455
```
5556

5657
This will do the following:
@@ -91,7 +92,8 @@ $ terraform apply \
9192
-var nodes=2 \
9293
-var server_type_node=C1 \
9394
-var weave_passwd=ChangeMe \
94-
-var docker_version=17.03.0~ce-0~ubuntu-xenial
95+
-var docker_version=18.06 \
96+
-var ubuntu_version="Ubuntu Xenial"
9597
```
9698

9799
### Remote control

main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ provider "external" {
77
version = "1.0.0"
88
}
99

10-
data "scaleway_image" "xenial" {
10+
data "scaleway_image" "ubuntu" {
1111
architecture = "${var.arch}"
12-
name = "Ubuntu Xenial"
12+
name = "${var.ubuntu_version}"
1313
}

master.tf

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ resource "scaleway_ip" "k8s_master_ip" {
55
resource "scaleway_server" "k8s_master" {
66
count = 1
77
name = "${terraform.workspace}-master-${count.index + 1}"
8-
image = "${data.scaleway_image.xenial.id}"
8+
image = "${data.scaleway_image.ubuntu.id}"
99
type = "${var.server_type}"
1010
public_ip = "${element(scaleway_ip.k8s_master_ip.*.ip, count.index)}"
1111
security_group = "${scaleway_security_group.master_security_group.id}"
@@ -36,8 +36,9 @@ set -e
3636
chmod +x /tmp/docker-install.sh
3737
chmod +x /tmp/kubeadm-install.sh
3838
39-
/tmp/docker-install.sh ${var.docker_version} && \
40-
/tmp/kubeadm-install.sh ${var.k8s_version}
39+
export ubuntu_version=$(echo -n ${var.ubuntu_version} | cut -d " " -f 2 | awk '{print tolower($0)}')
40+
/tmp/docker-install.sh $${ubuntu_version} ${var.arch} ${var.docker_version} && \
41+
/tmp/kubeadm-install.sh ${var.k8s_version} && \
4142
4243
modify_kube_apiserver_config(){
4344
while [[ ! -e /etc/kubernetes/manifests/kube-apiserver.yaml ]]; do

nodes.tf

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ resource "scaleway_ip" "k8s_node_ip" {
55
resource "scaleway_server" "k8s_node" {
66
count = "${var.nodes}"
77
name = "${terraform.workspace}-node-${count.index + 1}"
8-
image = "${data.scaleway_image.xenial.id}"
8+
image = "${data.scaleway_image.ubuntu.id}"
99
type = "${var.server_type_node}"
1010
public_ip = "${element(scaleway_ip.k8s_node_ip.*.ip, count.index)}"
1111
security_group = "${scaleway_security_group.node_security_group.id}"
@@ -31,7 +31,8 @@ resource "scaleway_server" "k8s_node" {
3131
provisioner "remote-exec" {
3232
inline = [
3333
"set -e",
34-
"chmod +x /tmp/docker-install.sh && /tmp/docker-install.sh ${var.docker_version}",
34+
"export ubuntu_version=$(echo -n ${var.ubuntu_version} | cut -d \" \" -f 2 | awk '{print tolower($0)}')",
35+
"chmod +x /tmp/docker-install.sh && /tmp/docker-install.sh $${ubuntu_version} ${var.arch} ${var.docker_version}",
3536
"chmod +x /tmp/kubeadm-install.sh && /tmp/kubeadm-install.sh ${var.k8s_version}",
3637
"${data.external.kubeadm_join.result.command}",
3738
]

scripts/docker-install.sh

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,28 @@
22

33
set -e
44

5-
DOCKER_VERSION=$1
5+
UBUNTU_VERSION=$1
6+
ARCH=$2
7+
DOCKER_VERSION=$3
8+
9+
if [[ ${ARCH} == "arm" ]]; then export ARCH=armhf; fi
10+
if [[ ${ARCH} == "x86_64" ]]; then export ARCH=amd64; fi
611

712
apt-get update -qq
813
apt-get install -y -qq apt-transport-https ca-certificates curl git
914
curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq -
10-
echo "deb https://download.docker.com/linux/ubuntu xenial stable" | tee /etc/apt/sources.list.d/docker.list
15+
echo "deb [arch=${ARCH}] https://download.docker.com/linux/ubuntu ${UBUNTU_VERSION} stable" | \
16+
tee /etc/apt/sources.list.d/docker.list
1117
apt-get update -qq
12-
apt-get install -y -qq --no-install-recommends docker-ce=${DOCKER_VERSION}
18+
19+
if (( $(echo -n ${DOCKER_VERSION} | wc -c) > 5 )); then
20+
export EXACT_DOCKER_VERSION=${DOCKER_VERSION}
21+
else
22+
export EXACT_DOCKER_VERSION=$(apt-cache madison docker-ce | \
23+
grep "${DOCKER_VERSION}.*${UBUNTU_VERSION}" | awk 'NR==1 {print $3}')
24+
fi
25+
26+
apt-get install -y -qq --no-install-recommends docker-ce=${EXACT_DOCKER_VERSION}
1327
apt-mark hold docker-ce
1428
docker version
1529

scripts/monitoring-install.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ if [ "$ARCH" == "arm" ]; then
1515
kubectl apply -f /tmp/heapster-arm.yaml;
1616
kubectl apply -f /tmp/metrics-server-arm.yaml;
1717
elif [ "$ARCH" == "x86_64" ]; then
18-
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative/kubernetes-dashboard.yaml;
18+
curl -s -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative/kubernetes-dashboard.yaml | \
19+
sed -e 's/v2.0.0-alpha0/v1.8.3/g' | \
20+
kubectl apply -f -;
1921
kubectl apply -f /tmp/heapster-amd64.yaml;
2022
kubectl apply -f /tmp/metrics-server-amd64.yaml;
2123
fi

variables.tf

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,36 @@
1+
variable "ubuntu_version" {
2+
default = "Ubuntu Xenial"
3+
description = <<EOT
4+
5+
For arm, choose from:
6+
- Ubuntu Xenial
7+
8+
For x86_64, choose from:
9+
- Ubuntu Xenial
10+
- Ubuntu Bionic
11+
12+
Notes:
13+
- kubernetes only has xenial packages for debian
14+
- currently arm is not working with ubuntu bionic (kubeadm init hangs)
15+
16+
EOT
17+
}
18+
119
variable "docker_version" {
2-
default = "17.03.0~ce-0~ubuntu-xenial"
3-
description = "Use 17.12.0~ce-0~ubuntu for x86_64 and 17.03.0~ce-0~ubuntu-xenial for arm"
20+
default = "18.06"
21+
description = <<EOT
22+
23+
Specify the docker version either as
24+
25+
- Simplified 5 characters name such as:
26+
- 17.03
27+
- 18.06
28+
29+
- The exact release name such as:
30+
- 17.03.0~ce-0~ubuntu-xenial
31+
- 18.06.0~ce~3-0~ubuntu
32+
33+
EOT
434
}
535

636
variable "k8s_version" {

0 commit comments

Comments
 (0)