Skip to content

Commit 4172aa6

Browse files
committed
infra: add ansible scripts and services
1 parent 403b363 commit 4172aa6

22 files changed

+734
-0
lines changed

infra/ansible/aggregator.yaml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
- import_playbook: setup.yaml
2+
- import_playbook: go.yaml
3+
- import_playbook: rust.yaml
4+
- import_playbook: eigenlayer-cli.yaml
5+
6+
- hosts: aligned-holesky-aggregator-1
7+
become: true
8+
vars:
9+
user: "{{ user }}"
10+
11+
tasks:
12+
# Install required packages
13+
- name: Update apt and install required system packages
14+
apt:
15+
pkg:
16+
- pkg-config
17+
- libssl-dev
18+
- gcc
19+
state: latest
20+
update_cache: true
21+
22+
# Create directories for each service
23+
- name: Create directories for each service if do not exist
24+
ansible.builtin.file:
25+
path: /home/{{ user }}/repos/{{ item }}
26+
state: directory
27+
mode: '0755'
28+
become_user: "{{ user }}"
29+
loop:
30+
- aggregator
31+
32+
# Clone Aligned repository for each service
33+
- name: Clone Aligned repository
34+
ansible.builtin.git:
35+
repo: https://github.com/yetanotherco/aligned_layer.git
36+
dest: /home/{{ user }}/repos/{{ item }}/aligned_layer
37+
version: v0.9.2
38+
become_user: "{{ user }}"
39+
loop:
40+
- aggregator
41+
42+
- name: Allow access to tcp port 8090
43+
ufw:
44+
rule: allow
45+
port: 8090
46+
proto: tcp

infra/ansible/avs-sync.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
- import_playbook: setup.yaml
2+
- import_playbook: go.yaml
3+
4+
- hosts: aligned-holesky-others
5+
become: true
6+
vars:
7+
user: "{{ user }}"
8+
9+
tasks:
10+
# Clone avs-sync repository
11+
- name: Clone Aligned repository
12+
ansible.builtin.git:
13+
repo: https://github.com/Layr-Labs/avs-sync.git
14+
dest: /home/{{ user }}/repos/avs-sync
15+
become_user: "{{ user }}"
16+

infra/ansible/batcher.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
- import_playbook: setup.yaml
2+
- import_playbook: webserver.yaml
3+
- import_playbook: rust.yaml
4+
- import_playbook: go.yaml
5+
- import_playbook: eigenlayer-cli.yaml
6+
7+
- hosts: aligned-holesky-batcher
8+
become: true
9+
vars:
10+
user: "{{ user }}"
11+
12+
tasks:
13+
# Install required packages
14+
- name: Update apt and install required system packages
15+
apt:
16+
pkg:
17+
- pkg-config
18+
- libssl-dev
19+
- gcc
20+
state: latest
21+
update_cache: true
22+
23+
# Create directories for each service
24+
- name: Create directories for each service if do not exist
25+
ansible.builtin.file:
26+
path: /home/{{ user }}/repos/{{ item }}
27+
state: directory
28+
mode: '0755'
29+
become_user: "{{ user }}"
30+
loop:
31+
- batcher
32+
33+
# Clone Aligned repository for each service
34+
- name: Clone Aligned repository
35+
ansible.builtin.git:
36+
repo: https://github.com/yetanotherco/aligned_layer.git
37+
dest: /home/{{ user }}/repos/{{ item }}/aligned_layer
38+
version: v0.9.2
39+
become_user: "{{ user }}"
40+
loop:
41+
- batcher
42+
register: repo_clone
43+
failed_when:
44+
- repo_clone.failed
45+
- not 'Local modifications exist in the destination' in repo_clone.msg
46+
47+

infra/ansible/docker.yaml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
- name: Docker Setup
2+
hosts: all
3+
become: true
4+
vars:
5+
user: "{{ user }}"
6+
7+
tasks:
8+
- name: Install required system packages
9+
apt:
10+
pkg:
11+
- apt-transport-https
12+
- ca-certificates
13+
- curl
14+
- software-properties-common
15+
- python3-pip
16+
- virtualenv
17+
- python3-setuptools
18+
state: latest
19+
update_cache: true
20+
21+
- name: Add Docker GPG apt Key
22+
apt_key:
23+
url: https://download.docker.com/linux/ubuntu/gpg
24+
state: present
25+
26+
- name: Add Docker Repository
27+
apt_repository:
28+
repo: deb https://download.docker.com/linux/ubuntu focal stable
29+
state: present
30+
31+
- name: Update apt and install docker-ce
32+
apt:
33+
name: docker-ce
34+
state: latest
35+
update_cache: true
36+
37+
- name: Ensure group "docker" exists
38+
ansible.builtin.group:
39+
name: docker
40+
state: present
41+
42+
- name: Add user to docker group
43+
user:
44+
name: "{{ user }}"
45+
groups: docker
46+
append: yes
47+
state: present

infra/ansible/eigenlayer-cli.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
- name: Eigenlayer CLI Setup
2+
hosts: all
3+
become: true
4+
vars:
5+
user: "{{ user }}"
6+
7+
tasks:
8+
- name: check if eigenlayer is installed
9+
shell: . ~/.profile && eigenlayer -v
10+
register: eigenlayer_exists
11+
ignore_errors: true
12+
13+
- name: Download Eigenlayer CLI
14+
when: eigenlayer_exists is failed
15+
shell:
16+
cmd: curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s
17+
become_user: "{{ user }}"
18+
19+
- name: Add eigenlayer path to ~/.profile
20+
when: eigenlayer_exists is failed
21+
lineinfile:
22+
path: ~/.profile
23+
line: 'export PATH=$PATH:~/bin'
24+
create: true
25+
state: present
26+
27+
# - name: Source updated profile and test eigenlayer version
28+
# when: eigenlayer_exists is failed
29+
# shell: source ~/.profile && eigenlayer -v

infra/ansible/elixir.yaml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
- name: Elixir Setup
2+
hosts: all
3+
become: true
4+
vars:
5+
user: "{{ user }}"
6+
erlang_version: 26.0
7+
elixir_version: 1.16.2-otp-26
8+
9+
tasks:
10+
# Install required packages
11+
- name: Update apt and install required system packages
12+
apt:
13+
pkg:
14+
- build-essential
15+
- autoconf
16+
- m4
17+
- libncurses5-dev
18+
- libwxgtk3.0-gtk3-dev
19+
- libwxgtk-webview3.0-gtk3-dev
20+
- libgl1-mesa-dev
21+
- libglu1-mesa-dev
22+
- libpng-dev
23+
- libssh-dev
24+
- unixodbc-dev
25+
- xsltproc
26+
- fop
27+
- libxml2-utils
28+
- libncurses-dev
29+
- openjdk-11-jdk
30+
state: latest
31+
update_cache: true
32+
33+
- name: Clone asdf repository into ~/.asdf
34+
ansible.builtin.git:
35+
name: https://github.com/asdf-vm/asdf.git
36+
dest: ~/.asdf
37+
single_branch: yes
38+
version: v0.14.0
39+
become_user: "{{ user }}"
40+
41+
- name: Insert lines to ~/.bashrc to source asdf
42+
ansible.builtin.blockinfile:
43+
path: "/home/{{ user }}/.bashrc"
44+
block: |
45+
. "$HOME/.asdf/asdf.sh"
46+
. "$HOME/.asdf/completions/asdf.bash"
47+
become_user: "{{ user }}"
48+
49+
# - name: Add asdf to the shell
50+
# shell: export ASDF_DIR="$HOME/.asdf" && . ~/.asdf/asdf.sh
51+
# become_user: "{{ user }}"
52+
53+
- name: Add Erlang plugin to asdf
54+
shell: asdf plugin add erlang
55+
56+
- name: Add Erlang version to asdf
57+
shell: asdf install erlang {{ erlang_version }}
58+
59+
- name: Set Erlang version as global
60+
shell: asdf global erlang {{ erlang_version }}
61+
62+
- name: Add Elixir plugin to asdf
63+
shell: asdf plugin add elixir
64+
65+
- name: Add Elixir version to asdf
66+
shell: asdf install elixir {{ elixir_version }}
67+
68+
- name: Set Elixir version as global
69+
shell: asdf global elixir {{ elixir_version }}

infra/ansible/explorer.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
- import_playbook: setup.yaml
2+
- import_playbook: webserver.yaml
3+
#- import_playbook: elixir.yaml # Not working
4+
- import_playbook: docker.yaml
5+
6+
- hosts: aligned-holesky-explorer
7+
become: true
8+
vars:
9+
user: "{{ user }}"
10+
11+
tasks:
12+
# Install required packages
13+
- name: Update apt and install required system packages
14+
apt:
15+
pkg:
16+
- unzip
17+
state: latest
18+
update_cache: true
19+
20+
# Create directories for each service
21+
- name: Create directories for each service if do not exist
22+
ansible.builtin.file:
23+
path: /home/{{ user }}/repos/{{ item }}
24+
state: directory
25+
mode: '0755'
26+
become_user: "{{ user }}"
27+
loop:
28+
- explorer
29+
30+
# Clone Aligned repository for each service
31+
- name: Clone Aligned repository
32+
ansible.builtin.git:
33+
repo: https://github.com/yetanotherco/aligned_layer.git
34+
dest: /home/{{ user }}/repos/{{ item }}/aligned_layer
35+
version: v0.9.2
36+
become_user: "{{ user }}"
37+
loop:
38+
- explorer
39+
register: repo_clone
40+
failed_when:
41+
- repo_clone.failed
42+
- not 'Local modifications exist in the destination' in repo_clone.msg
43+

infra/ansible/go.yaml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
- name: Go Setup
2+
hosts: all
3+
vars:
4+
version: 1.22.2
5+
6+
tasks:
7+
- name: check if go is installed
8+
shell: . ~/.profile && go version
9+
register: go_exists
10+
ignore_errors: true
11+
12+
- name: Download go tar file
13+
when: go_exists is failed
14+
command: wget https://go.dev/dl/go{{version}}.linux-amd64.tar.gz
15+
16+
- name: Delete previous installation
17+
when: go_exists is failed
18+
command: rm -rf /usr/local/go
19+
become: true
20+
21+
- name: Extract and move new go folder to /usr/local
22+
when: go_exists is failed
23+
command: tar -C /usr/local -xzf go{{version}}.linux-amd64.tar.gz
24+
become: true
25+
26+
- name: Delete downloaded tar file
27+
when: go_exists is failed
28+
shell: rm -rf go{{version}}.linux-amd64.tar.gz*
29+
30+
- name: Add go binary path to ~/.profile
31+
when: go_exists is failed
32+
lineinfile:
33+
path: ~/.profile
34+
line: 'export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin:/$HOME/go/bin'
35+
create: true
36+
state: present
37+
38+
- name: Source updated profile and test go version
39+
when: go_exists is failed
40+
shell: . ~/.profile && go version

infra/ansible/metrics.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
- import_playbook: setup.yaml
2+
- import_playbook: webserver.yaml
3+
- import_playbook: rust.yaml
4+
- import_playbook: docker.yaml
5+
6+
- hosts: aligned-holesky-metrics
7+
become: true
8+
vars:
9+
user: "{{ user }}"
10+
11+
tasks:
12+
# Install required packages
13+
- name: Update apt and install required system packages
14+
apt:
15+
pkg:
16+
state: latest
17+
update_cache: true
18+
19+
# Create directories for each service
20+
- name: Create directories for each service if do not exist
21+
ansible.builtin.file:
22+
path: /home/{{ user }}/repos/{{ item }}
23+
state: directory
24+
mode: '0755'
25+
become_user: "{{ user }}"
26+
loop:
27+
- metrics
28+
- tracker
29+
30+
# Clone Aligned repository for each service
31+
- name: Clone Aligned repository
32+
ansible.builtin.git:
33+
repo: https://github.com/yetanotherco/aligned_layer.git
34+
dest: /home/{{ user }}/repos/{{ item }}/aligned_layer
35+
version: v0.9.2
36+
become_user: "{{ user }}"
37+
loop:
38+
- metrics
39+
- tracker
40+
register: repo_clone
41+
failed_when:
42+
- repo_clone.failed
43+
- not 'Local modifications exist in the destination' in repo_clone.msg

0 commit comments

Comments
 (0)