Skip to content

Commit 2edbdff

Browse files
authored
Merge 54ae368 into 256bb3b
2 parents 256bb3b + 54ae368 commit 2edbdff

33 files changed

Lines changed: 1649 additions & 103 deletions

Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,3 +1185,12 @@ ansible_operator_deploy: ## Deploy the Operator. Parameters: INVENTORY
11851185
-i $(INVENTORY) \
11861186
-e "ecdsa_keystore_path=$(ECDSA_KEYSTORE)" \
11871187
-e "bls_keystore_path=$(BLS_KEYSTORE)"
1188+
1189+
ansible_telemetry_create_env:
1190+
@cp -n infra/ansible/playbooks/ini/config-telemetry.ini.example infra/ansible/playbooks/ini/config-telemetry.ini
1191+
@echo "Config files for Telemetry created in infra/ansible/playbooks/ini"
1192+
@echo "Please complete the values and run make ansible_telemetry_deploy"
1193+
1194+
ansible_telemetry_deploy:
1195+
@ansible-playbook infra/ansible/playbooks/telemetry.yaml \
1196+
-i $(INVENTORY)

infra/ansible/README.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,6 @@ This will create the following file in `infra/ansible/playbooks/ini`:
137137
```shell
138138
make ansible_aggregator_create_env
139139
```
140-
141140
- `config-aggregator.ini`
142141

143142
The `config-aggregator.ini` contains the variables to run the Operator in Aligned:
@@ -166,6 +165,51 @@ make ansible_aggregator_deploy INVENTORY=</path/to/inventory> ECDSA_KEYSTORE=<pa
166165
> [!Note]
167166
> ECDSA_KEYSTORE and BLS_KEYSTORE are the paths of the keystores in your machine.
168167
168+
## Telemetry
169+
To deploy the Telemetry Services you need to set some variables and then run the Telemetry playbook
170+
171+
This will create the following file in `infra/ansible/playbooks/ini`:
172+
173+
```shell
174+
make ansible_telemetry_create_env
175+
```
176+
177+
- `config-telemetry.ini`
178+
179+
The `config-telemetry.ini` contains the variables to run the Telemetry in Aligned:
180+
181+
| Variable | Description | Testnet | Stage | Mainnet
182+
|-------------------------------|---------------------------------------------------|-----------------------------------------------|----------------------------------------------------|------------------------------------|
183+
| caddy_metrics_url | Public URL for Grafana Metrics | `holesky.metrics.alignedlayer.com` | `stage1.metrics.alignedlayer.com` | TBD
184+
| caddy_jaeger_url | Tailscale URL for Jaeger | `aligned-holesky-metrics.tail665ae.ts.net` | `aligned-holesky-stage-1-metrics.tail665ae.ts.net` | TBD
185+
| grafana_admin_password | Password for Grafana's admin user | <your_grafana_admin_password> | <your_grafana_admin_password> | <your_grafana_admin_password>
186+
| grafana_prometheus_datasource | Prometheus location for Grafana to pull data from | localhost | localhost | localhost
187+
| grafana_domain | Public URL for Grafana Metrics | `holesky.metrics.alignedlayer.com` | `stage1.metrics.alignedlayer.com` | TBD
188+
| grafana_oath_client_id | Generic OAuth Client ID | <your_oauth_client_id> | <your_oauth_client_id> | <your_oauth_client_id>
189+
| grafana_oath_client_secret | Generic OAuth Client Secret | <your_oauth_client_secret> | <your_oauth_client_secret> | <your_oauth_client_secret>
190+
| grafana_oath_auth_url | Generic OAuth Auth URL | <your_oauth_auth_url> | <your_oauth_auth_url> | <your_oauth_auth_url>
191+
| grafana_oath_token_url | Generic OAuth Token URL | <your_oauth_token_url> | <your_oauth_token_url> | <your_oauth_token_url>
192+
| grafana_oath_api_url | Generic OAuth API URL | <your_oauth_api_url> | <your_oauth_api_url> | <your_oauth_api_url>
193+
| prometheus_aggregator_ip | Aggregator IP+PORT location for prometheus | aligned-holesky-aggregator:9091 | aligned-holesky-stage-1-aggregator:9091 | TBD
194+
| prometheus_operator_ip | Operators IP+PORT location for prometheus | aligned-holesky-operator-1:9092 | aligned-holesky-stage-1-operator-1:9092 | TBD
195+
| prometheus_batcher_ip | Batcher IP+PORT location for prometheus | aligned-holesky-batcher:9093 | aligned-holesky-stage-1-batcher-1:9093 | TBD
196+
| prometheus_tracker_ip | Tracker IP+PORT location for prometheus | aligned-holesky-tracker:4001 | aligned-holesky-stage-1-tracker:4001 | TBD
197+
| postgresql_telemetry_db_name | Postgres Database Name | <your_postgres_db_name> | <your_postgres_db_name> | <your_postgres_db_name>
198+
| postgresql_telemetry_user | Postgres Username | <your_postgres_db_username> | <your_postgres_db_username> | <your_postgres_db_username>
199+
| postgresql_telemetry_pass | Postgres Username's Password | <your_postgres_db_password> | <your_postgres_db_password> | <your_postgres_db_password>
200+
| cassandra_telemetry_user | Cassandra Username | <your_cassandra_db_name> | <your_cassandra_db_name> | <your_cassandra_db_name>
201+
| cassandra_telemetry_pass | Cassandra Username's Password | <your_cassandra_db_password> | <your_cassandra_db_password> | <your_cassandra_db_password>
202+
| telemetry_aligned_rpc | HTTP ETH RPC URL | `https://aligned-rpc-node-2.tail665ae.ts.net` | `https://aligned-rpc-node-2.tail665ae.ts.net` | TBD
203+
| telemetry_api_phx_host | Telemetry API Elixir's Phoenix host for | `holesky.telemetry.alignedlayer.com` | `stage1.telemetry.alignedlayer.com` | TBD
204+
| telemetry_api_elixir_hostname | Telemetry API Server's Hostname | `aligned-holesky-metrics` | `aligned-holesky-stage-1-telemetry` | TBD
205+
| telemetry_api_secret_key_base | Telemetry API Secret Key Base | <your_secret_key_base> | <your_secret_key_base> | <your_secret_key_base>
206+
| pagerduty_routing_key | Pagerduty Routing Key | <your_pagerduty_routing_key> | <your_pagerduty_routing_key> | <your_pagerduty_routing_key>
207+
208+
Deploy the Telemetry Services:
209+
210+
```shell
211+
make ansible_telemetry_deploy INVENTORY=</path/to/inventory>
212+
169213
# How to Create Keystores
170214

171215
## Create ECDSA Keystore

infra/ansible/aggregator.yaml

Lines changed: 0 additions & 61 deletions
This file was deleted.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
- name: Install Alert Manager
2+
hosts: "{{ host }}"
3+
4+
tasks:
5+
- name: Install Alert Manager
6+
get_url:
7+
url: https://github.com/prometheus/alertmanager/releases/download/v{{ alert_manager_version }}/alertmanager-{{ alert_manager_version }}.linux-amd64.tar.gz
8+
dest: /tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz
9+
mode: '0644'
10+
11+
- name: Install Alert Manager package
12+
become: true
13+
unarchive:
14+
src: "/tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz"
15+
dest: "/usr/local/bin/"
16+
remote_src: yes
17+
extra_opts:
18+
- --strip-components=1
19+
vars:
20+
ansible_ssh_user: "{{ admin_user }}"
21+
22+
- name: Clean up Alert Manager tarball package
23+
file:
24+
path: /tmp/alert_manager-{{ alert_manager_version }}-linux-amd64.tar.gz
25+
state: absent
26+
27+
- name: Make sure /etc/alertmanager directory exists
28+
become: true
29+
file:
30+
path: /etc/alertmanager
31+
state: directory
32+
vars:
33+
ansible_ssh_user: "{{ admin_user }}"
34+
35+
- name: Create Alert Manager config file
36+
become: true
37+
template:
38+
src: alert_manager/alertmanager.yml.j2
39+
dest: /etc/alertmanager/alertmanager.yml
40+
vars:
41+
ansible_ssh_user: "{{ admin_user }}"
42+
pagerduty_routing_key: "{{ lookup('ini', 'pagerduty_routing_key', file=ini_file) }}"
43+
44+
- name: Create Alert Manager systemd service
45+
become: true
46+
template:
47+
src: services/alert_manager.service.j2
48+
dest: /etc/systemd/system/alert_manager.service
49+
vars:
50+
ansible_ssh_user: "{{ admin_user }}"
51+
52+
- name: Start Alert Manager
53+
become: true
54+
systemd_service:
55+
name: alert_manager
56+
state: started
57+
daemon_reload: true
58+
enabled: true
59+
vars:
60+
ansible_ssh_user: "{{ admin_user }}"

infra/ansible/playbooks/caddy.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
- name: Caddy Setup
2+
hosts: "{{ host }}"
3+
4+
tasks:
5+
- name: Allow http/https traffic on UFW
6+
become: true
7+
ufw:
8+
rule: allow
9+
state: enabled
10+
port: '{{ item }}'
11+
loop:
12+
- http
13+
- https
14+
vars:
15+
ansible_ssh_user: "{{ admin_user }}"
16+
17+
- name: Install dependencies for Caddy
18+
become: true
19+
apt:
20+
name:
21+
- debian-keyring
22+
- debian-archive-keyring
23+
- apt-transport-https
24+
- curl
25+
state: present
26+
update_cache: yes
27+
vars:
28+
ansible_ssh_user: "{{ admin_user }}"
29+
30+
- name: Download and install Caddy GPG key
31+
shell:
32+
cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
33+
creates: /usr/share/keyrings/caddy-stable-archive-keyring.gpg
34+
vars:
35+
ansible_ssh_user: "{{ admin_user }}"
36+
37+
- name: Add Caddy repository
38+
shell:
39+
cmd: curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
40+
creates: /etc/apt/sources.list.d/caddy-stable.list
41+
vars:
42+
ansible_ssh_user: "{{ admin_user }}"
43+
44+
- name: Install Caddy
45+
become: true
46+
apt:
47+
update_cache: yes
48+
name: caddy
49+
state: present
50+
vars:
51+
ansible_ssh_user: "{{ admin_user }}"
52+
53+
- name: Add caddyfile config
54+
become: true
55+
template:
56+
src: caddy/Caddyfile.{{ host }}.j2
57+
dest: /etc/caddy/Caddyfile
58+
vars:
59+
ansible_ssh_user: "{{ admin_user }}"
60+
caddy_metrics_url: "{{ lookup('ini', 'caddy_metrics_url', file=ini_file) }}"
61+
caddy_telemetry_url: "{{ lookup('ini', 'caddy_telemetry_url', file=ini_file) }}"
62+
caddy_jaeger_url: "{{ lookup('ini', 'caddy_jaeger_url', file=ini_file) }}"
63+
64+
- name: Enable caddy
65+
become: true
66+
systemd_service:
67+
name: caddy
68+
enabled: true
69+
state: started
70+
vars:
71+
ansible_ssh_user: "{{ admin_user }}"
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
- name: Cassandra Setup
2+
hosts: "{{ host }}"
3+
become: true
4+
vars:
5+
ansible_ssh_user: "{{ admin_user }}"
6+
7+
tasks:
8+
- name: Check if cassandra is installed
9+
stat:
10+
path: /opt/cassandra/bin/cassandra
11+
register: cassandra_exists
12+
13+
- name: Install java
14+
apt:
15+
pkg: openjdk-17-jre
16+
17+
- name: Create cassandra group
18+
group:
19+
name: cassandra
20+
system: yes
21+
22+
- name: Create cassandra user
23+
user:
24+
name: cassandra
25+
group: cassandra
26+
shell: /sbin/nologin
27+
system: yes
28+
29+
- name: Download cassandra
30+
when: not cassandra_exists.stat.exists
31+
get_url:
32+
url: "https://dlcdn.apache.org/cassandra/{{ cassandra_version }}/apache-cassandra-{{ cassandra_version }}-bin.tar.gz "
33+
dest: "/tmp/cassandra-{{ cassandra_version }}.tar.gz"
34+
mode: '0644'
35+
36+
- name: Ensure /opt/cassandra directory exists
37+
file:
38+
path: /opt/cassandra
39+
owner: "cassandra"
40+
group: "cassandra"
41+
state: directory
42+
43+
- name: Extract cassandra
44+
when: not cassandra_exists.stat.exists
45+
unarchive:
46+
src: "/tmp/cassandra-{{ cassandra_version }}.tar.gz"
47+
dest: /opt/cassandra/
48+
remote_src: yes
49+
owner: "cassandra"
50+
group: "cassandra"
51+
extra_opts:
52+
- --strip-components=1
53+
54+
- name: Add /opt/cassandra/bin to PATH
55+
lineinfile:
56+
path: /home/{{ ansible_user }}/.bashrc
57+
line: PATH=/opt/cassandra/bin:$PATH
58+
state: present
59+
60+
- name: Create Cassandra systemd service
61+
template:
62+
src: services/cassandra.service.j2
63+
dest: /etc/systemd/system/cassandra.service
64+
vars:
65+
cassandra_telemetry_user: "{{ lookup('ini', 'cassandra_telemetry_user', file=ini_file) }}"
66+
cassandra_telemetry_pass: "{{ lookup('ini', 'cassandra_telemetry_pass', file=ini_file) }}"
67+
68+
- name: Start Cassandra
69+
systemd_service:
70+
name: cassandra
71+
state: started
72+
daemon_reload: true
73+
enabled: true

0 commit comments

Comments
 (0)