Skip to content

Commit cb6d56b

Browse files
sys: use etcd binary (#113)
1 parent c714925 commit cb6d56b

File tree

5 files changed

+63
-27
lines changed

5 files changed

+63
-27
lines changed

etcd.tf

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ data "template_file" "etcd-cfssl-new-cert" {
2121
}
2222
}
2323

24+
data "ignition_file" "etcd" {
25+
mode = 493
26+
filesystem = "root"
27+
path = "/opt/bin/etcd.tar.gz"
28+
29+
source {
30+
source = "https://storage.googleapis.com/etcd/${var.etcd_image_tag}/etcd-${var.etcd_image_tag}-linux-amd64.tar.gz"
31+
}
32+
}
33+
2434
data "ignition_file" "etcd-cfssl-new-cert" {
2535
count = length(var.etcd_addresses)
2636
mode = 493
@@ -45,6 +55,15 @@ data "ignition_file" "etcd-prom-machine-role" {
4555
}
4656
}
4757

58+
data "template_file" "etcd-setup" {
59+
template = file("${path.module}/resources/etcd-setup.service")
60+
}
61+
62+
data "ignition_systemd_unit" "etcd-setup" {
63+
name = "etcd-setup.service"
64+
content = data.template_file.etcd-setup.rendered
65+
}
66+
4867
data "template_file" "etcdctl-wrapper" {
4968
count = length(var.etcd_addresses)
5069
template = file("${path.module}/resources/etcdctl-wrapper")
@@ -97,28 +116,23 @@ resource "null_resource" "etcd_member" {
97116
}
98117
}
99118

100-
data "template_file" "etcd-member-dropin" {
119+
data "template_file" "etcd-member" {
101120
count = length(var.etcd_addresses)
102-
template = file("${path.module}/resources/etcd-member-dropin.conf")
121+
template = file("${path.module}/resources/etcd-member.service")
103122

104123
vars = {
105124
etcd_image_url = var.etcd_image_url
106125
etcd_image_tag = var.etcd_image_tag
107126
index = count.index
108127
etcd_initial_cluster = join(",", formatlist("member%s=https://%s:2380", null_resource.etcd_member.*.triggers.index, var.etcd_addresses))
109128
private_ipv4 = var.etcd_addresses[count.index]
110-
uuid_file = "/var/lib/${var.container_linux_distribution}/etcd-member-wrapper.uuid"
111129
}
112130
}
113131

114-
data "ignition_systemd_unit" "etcd-member-dropin" {
115-
count = length(var.etcd_addresses)
116-
name = "etcd-member.service"
117-
118-
dropin {
119-
name = "10-custom-options.conf"
120-
content = element(data.template_file.etcd-member-dropin.*.rendered, count.index)
121-
}
132+
data "ignition_systemd_unit" "etcd-member" {
133+
count = length(var.etcd_addresses)
134+
name = "etcd-member.service"
135+
content = element(data.template_file.etcd-member.*.rendered, count.index)
122136
}
123137

124138
module "etcd-cert-fetcher" {
@@ -135,6 +149,7 @@ data "ignition_config" "etcd" {
135149
data.ignition_file.cfssl.id,
136150
data.ignition_file.cfssljson.id,
137151
data.ignition_file.cfssl-client-config.id,
152+
data.ignition_file.etcd.id,
138153
element(data.ignition_file.etcd-cfssl-new-cert.*.id, count.index),
139154
data.ignition_file.etcd-prom-machine-role.id,
140155
element(data.ignition_file.etcdctl-wrapper.*.id, count.index),
@@ -149,7 +164,8 @@ data "ignition_config" "etcd" {
149164
data.ignition_systemd_unit.locksmithd_etcd.id,
150165
data.ignition_systemd_unit.docker-opts-dropin.id,
151166
data.ignition_systemd_unit.node-exporter.id,
152-
element(data.ignition_systemd_unit.etcd-member-dropin.*.id, count.index),
167+
data.ignition_systemd_unit.etcd-setup.id,
168+
element(data.ignition_systemd_unit.etcd-member.*.id, count.index),
153169
element(data.ignition_systemd_unit.etcd-disk-mounter.*.id, count.index)
154170
],
155171
module.etcd-cert-fetcher.systemd_units,
Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1+
# Replacing /usr/lib/systemd/system/etcd-member.service
2+
13
[Unit]
2-
After=disk-mounter.service
3-
Requires=disk-mounter.service
4+
Description=etcd (System Application Container)
5+
Documentation=https://github.com/coreos/etcd
6+
Wants=network-online.target network.target
7+
Requires=disk-mounter.service etcd-setup.service cert-fetch.service
8+
After=network-online.target disk-mounter.service etcd-setup.service cert-fetch.service
9+
Conflicts=etcd.service
10+
Conflicts=etcd2.service
11+
412
[Service]
5-
Environment="ETCD_IMAGE_URL=${etcd_image_url}"
6-
Environment="ETCD_IMAGE_TAG=${etcd_image_tag}"
13+
Type=notify
14+
Restart=on-failure
15+
RestartSec=10s
16+
TimeoutStartSec=0
17+
LimitNOFILE=40000
18+
19+
Environment="ETCD_DATA_DIR=/var/lib/etcd"
720
Environment="ETCD_NAME=member${index}"
821
Environment="ETCD_INITIAL_CLUSTER=${etcd_initial_cluster}"
922
Environment="ETCD_LISTEN_PEER_URLS=https://${private_ipv4}:2380"
@@ -19,8 +32,8 @@ Environment="ETCD_PEER_CLIENT_CERT_AUTH=true"
1932
Environment="ETCD_PEER_TRUSTED_CA_FILE=/etc/etcd/ssl/ca.pem"
2033
Environment="ETCD_PEER_CERT_FILE=/etc/etcd/ssl/node.pem"
2134
Environment="ETCD_PEER_KEY_FILE=/etc/etcd/ssl/node-key.pem"
22-
Environment="RKT_RUN_ARGS=\
23-
--uuid-file-save=${uuid_file} \
24-
--volume etc-etcd,kind=host,source=/etc/etcd,readOnly=true \
25-
--mount volume=etc-etcd,target=/etc/etcd"
26-
ExecStartPre=/usr/bin/mkdir -p /etc/etcd
35+
36+
ExecStart=/opt/bin/etcd
37+
38+
[Install]
39+
WantedBy=multi-user.target

resources/etcd-setup.service

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[Unit]
2+
Description=Setup etcd binaries
3+
[Service]
4+
Type=oneshot
5+
RemainAfterExit=yes
6+
ExecStartPre=mkdir -p /tmp/etcd
7+
ExecStart=tar xzvf /opt/bin/etcd.tar.gz -C /tmp/etcd --strip-components=1
8+
ExecStart=mv /tmp/etcd/etcd /opt/bin/etcd
9+
ExecStart=mv /tmp/etcd/etcdctl /opt/bin/etcdctl
10+
ExecStartPost=rm -rf /tmp/etcd
11+
ExecStartPost=rm -f /opt/bin/etcd.tar.gz
12+
[Install]
13+
WantedBy=multi-user.target

resources/etcdctl-wrapper

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
docker run --rm \
33
-i \
44
-v /etc/etcd/ssl:/etc/etcd/ssl \
5-
-e ETCDCTL_API=3 \
65
--entrypoint /usr/local/bin/etcdctl \
76
${etcd_image_url}:${etcd_image_tag} \
87
--cacert /etc/etcd/ssl/ca.pem \

variables.tf

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
variable "container_linux_distribution" {
2-
description = "The distribution of Container Linux ('coreos' or 'flatcar')."
3-
default = "flatcar"
4-
}
5-
61
variable "enable_container_linux_update-engine" {
72
description = "Whether to enable automatic updates for Container Linux."
83
default = true

0 commit comments

Comments
 (0)