-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathuser-data.sh
More file actions
154 lines (118 loc) · 3.33 KB
/
Copy pathuser-data.sh
File metadata and controls
154 lines (118 loc) · 3.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/bin/bash
set -eu
export DEBIAN_FRONTEND=noninteractive
function install_dependencies {
curl https://pkgs.tailscale.com/stable/ubuntu/bionic.gpg | sudo apt-key add -
curl https://pkgs.tailscale.com/stable/ubuntu/bionic.list | sudo tee /etc/apt/sources.list.d/tailscale.list
apt-get update -y
apt-get install -y curl unzip socat tailscale docker.io
}
function install_consul {
mkdir -p /tmp/consul
pushd /tmp/consul
curl -Os https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip
unzip consul_${CONSUL_VERSION}_linux_amd64.zip >/dev/null
mv consul /usr/local/bin/
useradd --system --home /etc/consul.d --shell /bin/false consul
mkdir --parents /opt/consul
mkdir --parents /etc/consul.d
tee /etc/consul.d/consul.hcl >/dev/null <<EOF
datacenter = "dc1"
bind_addr = "{{ GetInterfaceIP \"tailscale0\" }}"
data_dir = "/opt/consul"
retry_join = [ "${CONSUL_SERVER}" ]
EOF
chmod 640 /etc/consul.d/consul.hcl
chown --recursive consul:consul /opt/consul
chown --recursive consul:consul /etc/consul.d
cat - > /etc/systemd/system/consul.service <<'EOF'
[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target tailscaled.service
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
Type=notify
User=consul
Group=consul
ExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/usr/local/bin/consul reload
ExecStop=/usr/local/bin/consul leave
KillMode=process
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
chmod 0600 /etc/systemd/system/consul.service
systemctl enable consul.service
popd
rm -rf /tmp/consul
}
function install_nomad {
mkdir /tmp/nomad
pushd /tmp/nomad
curl -Os https://releases.hashicorp.com/nomad/${NOMAD_VERSION}/nomad_${NOMAD_VERSION}_linux_amd64.zip
unzip nomad_${NOMAD_VERSION}_linux_amd64.zip >/dev/null
mv nomad /usr/local/bin/
mkdir --parents /opt/nomad
mkdir --parents /etc/nomad.d
tee /etc/nomad.d/nomad.hcl >/dev/null <<EOF
bind_addr = "{{ GetInterfaceIP \"tailscale0\" }}"
data_dir = "/opt/nomad"
client {
enabled = true
node_class = "${NODE_CLASS}"
network_interface = "tailscale0"
network_speed = 1000
}
telemetry {
publish_allocation_metrics = true
publish_node_metrics = true
prometheus_metrics = true
}
EOF
chmod 640 /etc/nomad.d/nomad.hcl
cat - > /etc/systemd/system/nomad.service <<'EOF'
[Unit]
Description=Nomad
Documentation=https://nomadproject.io/docs/
Wants=network-online.target
After=network-online.target consul.service
[Service]
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=infinity
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
StartLimitBurst=3
StartLimitIntervalSec=10
TasksMax=infinity
[Install]
WantedBy=multi-user.target
EOF
chmod 0600 /etc/systemd/system/nomad.service
systemctl enable nomad.service
popd
rm -rf /tmp/nomad
}
function join_tailscale {
tailscale up --authkey ${TAILSCALE_AUTH_KEY}
sleep 5
}
function start_consul {
systemctl start consul
}
function start_nomad {
systemctl start nomad
}
install_dependencies
install_consul
install_nomad
join_tailscale
start_consul
start_nomad