Skip to content

Commit 40d9df9

Browse files
committed
Make prometheus optional and omit all related resources and
packages installed via the user data script
1 parent 0c5b319 commit 40d9df9

File tree

7 files changed

+63
-50
lines changed

7 files changed

+63
-50
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Before using this module, you'll need to generate a key pair for your server and
3939
|`use_route53`|`bool`|Optional - default to `false`|Create Route53 record for Wireguard server (requires `use_eip` to be `true`).|
4040
|`route53_hosted_zone_id`|`string`|Optional - if `use_route53` is not used.|Route53 Hosted zone ID for Wireguard server Route53 record.|
4141
|`route53_record_name`|`string`|Optional - if `use_route53` is not used.|Route53 Record Name for Wireguard server.|
42+
|`use_prometheus`|`bool`|Optional - defaults to `false`.|Install and use the promethus node exporting tools.|
43+
|`prometheus_server_ip`|`string`|Optional - defaults to `0.0.0.0/0`.|The CIDR block of the prometheus server.|
4244

4345
If the `wg_server_private_key` contains certain characters like slashes & etc then it needs additional pre-processing before entering it into `values.yaml`. Example:
4446
```

example/eu-central-1/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ route53_record_name: vpn.example.com
1212
route53_geo:
1313
policy:
1414
- continent: EU
15+
use_prometheus: true
1516
prometheus_server_ip: 0.0.0.0/0
1617
wg_server_net: 10.8.0.1/24
1718
wg_server_private_key: YOUR_SERVER_PRIVATE_KEY_HERE

example/us-east-1/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ route53_record_name: vpn.example.com
1212
route53_geo:
1313
policy:
1414
- continent: NA
15+
use_prometheus: true
1516
prometheus_server_ip: 0.0.0.0/0
1617
wg_server_net: 10.8.0.1/24
1718
wg_server_private_key: YOUR_SERVER_PRIVATE_KEY_HERE

main.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ resource "aws_launch_configuration" "wireguard_launch_config" {
6666
use_eip = var.use_eip ? "enabled" : "disabled",
6767
eip_id = var.use_eip ? aws_eip.wireguard[0].id : "",
6868
use_ssm = var.use_ssm ? "true" : "false",
69+
use_prometheus = var.use_prometheus ? "true" : "false",
6970
wg_server_interface = var.wg_server_interface
7071
})
7172
security_groups = [aws_security_group.sg_wireguard.id]

sg.tf

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,15 @@ resource "aws_security_group" "sg_wireguard" {
2424
cidr_blocks = ["0.0.0.0/0"]
2525
}
2626

27-
ingress {
28-
from_port = 9586
29-
to_port = 9586
30-
protocol = "tcp"
31-
cidr_blocks = [var.prometheus_server_ip]
32-
}
27+
dynamic "ingress" {
28+
for_each = var.use_prometheus ? [9586, 9100] : []
3329

34-
ingress {
35-
from_port = 9100
36-
to_port = 9100
37-
protocol = "tcp"
38-
cidr_blocks = [var.prometheus_server_ip]
30+
content {
31+
from_port = ingress.value
32+
to_port = ingress.value
33+
protocol = "tcp"
34+
cidr_blocks = [var.prometheus_server_ip]
35+
}
3936
}
4037

4138
egress {
@@ -44,4 +41,4 @@ resource "aws_security_group" "sg_wireguard" {
4441
protocol = "-1"
4542
cidr_blocks = ["0.0.0.0/0"]
4643
}
47-
}
44+
}

templates/user-data.txt

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,15 @@ do
7474
sleep 1
7575
done
7676

77-
# Install prometheus_wireguard_exporter
78-
wget https://github.com/vainkop/terraform-aws-wireguard/releases/download/v1.3.0/prometheus_wireguard_exporter_v3.4.2.tar.gz && \
79-
tar -zxvf prometheus_wireguard_exporter_v3.4.2.tar.gz prometheus_wireguard_exporter && \
80-
rm -fv prometheus_wireguard_exporter_v3.4.2.tar.gz && \
81-
mv prometheus_wireguard_exporter /usr/local/bin/prometheus_wireguard_exporter && \
82-
chmod +x /usr/local/bin/prometheus_wireguard_exporter
83-
84-
cat <<EOF | tee /etc/systemd/system/prometheus_wireguard_exporter.service
77+
if [[ "${use_prometheus}" == "true" ]]; then
78+
# Install prometheus_wireguard_exporter
79+
wget https://github.com/vainkop/terraform-aws-wireguard/releases/download/v1.3.0/prometheus_wireguard_exporter_v3.4.2.tar.gz && \
80+
tar -zxvf prometheus_wireguard_exporter_v3.4.2.tar.gz prometheus_wireguard_exporter && \
81+
rm -fv prometheus_wireguard_exporter_v3.4.2.tar.gz && \
82+
mv prometheus_wireguard_exporter /usr/local/bin/prometheus_wireguard_exporter && \
83+
chmod +x /usr/local/bin/prometheus_wireguard_exporter
84+
85+
cat <<EOF | tee /etc/systemd/system/prometheus_wireguard_exporter.service
8586
[Unit]
8687
Description=Prometheus WireGuard Exporter
8788
Wants=network-online.target
@@ -96,25 +97,26 @@ ExecStart=/usr/local/bin/prometheus_wireguard_exporter -a -n /etc/wireguard/wg0.
9697
[Install]
9798
WantedBy=multi-user.target
9899
EOF
99-
systemctl daemon-reload && \
100-
systemctl start prometheus_wireguard_exporter.service && \
101-
systemctl enable prometheus_wireguard_exporter.service
102100

103-
until systemctl is-active --quiet prometheus_wireguard_exporter.service
104-
do
105-
sleep 1
106-
done
107-
108-
# Install node_exporter
109-
useradd -rs /bin/false node_exporter && \
110-
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz && \
111-
tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz node_exporter-1.1.2.linux-amd64/node_exporter && \
112-
rm -fv node_exporter-1.1.2.linux-amd64.tar.gz && \
113-
mv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/node_exporter && \
114-
chmod +x /usr/local/bin/node_exporter && \
115-
chown node_exporter:node_exporter /usr/local/bin/node_exporter
116-
117-
cat <<EOF | tee /etc/systemd/system/node_exporter.service
101+
systemctl daemon-reload && \
102+
systemctl start prometheus_wireguard_exporter.service && \
103+
systemctl enable prometheus_wireguard_exporter.service
104+
105+
until systemctl is-active --quiet prometheus_wireguard_exporter.service
106+
do
107+
sleep 1
108+
done
109+
110+
# Install node_exporter
111+
useradd -rs /bin/false node_exporter && \
112+
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz && \
113+
tar -zxvf node_exporter-1.1.2.linux-amd64.tar.gz node_exporter-1.1.2.linux-amd64/node_exporter && \
114+
rm -fv node_exporter-1.1.2.linux-amd64.tar.gz && \
115+
mv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/node_exporter && \
116+
chmod +x /usr/local/bin/node_exporter && \
117+
chown node_exporter:node_exporter /usr/local/bin/node_exporter
118+
119+
cat <<EOF | tee /etc/systemd/system/node_exporter.service
118120
[Unit]
119121
Description=Node Exporter
120122
Wants=network-online.target
@@ -130,17 +132,20 @@ ExecStart=/usr/local/bin/node_exporter --web.listen-address=":9100"
130132
WantedBy=multi-user.target
131133
EOF
132134

133-
systemctl daemon-reload && \
134-
systemctl start node_exporter && \
135-
systemctl enable node_exporter
135+
systemctl daemon-reload && \
136+
systemctl start node_exporter && \
137+
systemctl enable node_exporter
136138

137-
until systemctl is-active --quiet node_exporter.service
138-
do
139-
sleep 1
140-
done
139+
until systemctl is-active --quiet node_exporter.service
140+
do
141+
sleep 1
142+
done
143+
144+
# allow exporter through firewall
145+
ufw allow 9586
146+
ufw allow 9100
147+
fi
141148

142149
ufw allow ssh
143150
ufw allow ${wg_server_port}/udp
144-
ufw allow 9586
145-
ufw allow 9100
146-
ufw --force enable
151+
ufw --force enable

variables.tf

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,16 @@ variable "wg_server_interface" {
9494
description = "The default interface to forward network traffic to."
9595
}
9696

97+
variable "use_prometheus" {
98+
type = bool
99+
default = false
100+
description = "Whether to setup and use prometheus node metrics export or not."
101+
}
102+
97103
variable "prometheus_server_ip" {
98104
type = string
99-
default = null
100-
description = "Prometheus server IP."
105+
default = "0.0.0.0/0"
106+
description = "Prometheus server CIDR block."
101107
}
102108

103109
variable "use_route53" {

0 commit comments

Comments
 (0)