176 lines
4.2 KiB
YAML
176 lines
4.2 KiB
YAML
---
|
|
- name: Configure firewall (UDP & TCP)
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "{{ item }}"
|
|
proto: any
|
|
loop:
|
|
- 4001
|
|
- 24007
|
|
- 24008
|
|
|
|
- name: Configure firewall (TCP)
|
|
community.general.ufw:
|
|
rule: allow
|
|
port: "{{ item }}"
|
|
proto: tcp
|
|
loop:
|
|
- 29152:65535
|
|
|
|
|
|
- name: Install glusterfs
|
|
ansible.builtin.apt:
|
|
name:
|
|
- glusterfs-server
|
|
state: present
|
|
|
|
- name: Start & enable glusterd service
|
|
ansible.builtin.systemd_service:
|
|
name: glusterd.service
|
|
state: started
|
|
enabled: true
|
|
|
|
# - name: Create gluster volume
|
|
# gluster.gluster.gluster_volume:
|
|
# state: present
|
|
# name: ipfs-datastore
|
|
# bricks: /bricks/brick1/g1
|
|
# rebalance: true
|
|
# cluster: "{{ groups['ipfs'] }}"
|
|
# run_once: true
|
|
|
|
|
|
# - name: Start gluster volume
|
|
# gluster.gluster.gluster_volume:
|
|
# state: started
|
|
# name: ipfs-datastore
|
|
|
|
# - name: Limit volume usage
|
|
# gluster.gluster.gluster_volume:
|
|
# state: present
|
|
# name: ipfs-datastore
|
|
# directory: /
|
|
# quota: 6.0TB
|
|
|
|
## Example: mount -t glusterfs fp-bright-0:/gv0 /mountme
|
|
# - name: Mount gluster volume
|
|
# ansible.posix.mount:
|
|
# src: "{{ ansible_hostname }}:/g1"
|
|
# path: /mnt/g1
|
|
# fstype: glusterfs
|
|
# state: mounted
|
|
|
|
- name: Create ipfs group
|
|
ansible.builtin.group:
|
|
name: ipfs
|
|
state: present
|
|
|
|
- name: Create ipfs user
|
|
ansible.builtin.user:
|
|
name: ipfs
|
|
group: ipfs
|
|
create_home: true
|
|
home: /home/ipfs
|
|
system: true
|
|
|
|
- name: Download and extract IPFS Kubo
|
|
ansible.builtin.unarchive:
|
|
src: "https://dist.ipfs.tech/kubo/{{ ipfs_kubo_version }}/kubo_{{ ipfs_kubo_version }}_linux-amd64.tar.gz"
|
|
dest: /tmp
|
|
remote_src: true
|
|
notify:
|
|
- Restart ipfs
|
|
|
|
- name: Install IPFS Kubo
|
|
ansible.builtin.copy:
|
|
src: /tmp/kubo/ipfs
|
|
dest: /usr/local/bin/ipfs
|
|
mode: "0755"
|
|
remote_src: true
|
|
notify:
|
|
- Restart ipfs
|
|
|
|
- name: Download and extract ipfs-cluster-follow
|
|
ansible.builtin.unarchive:
|
|
src: "https://dist.ipfs.tech/ipfs-cluster-follow/{{ ipfs_cluster_follow_version }}/ipfs-cluster-follow_{{ ipfs_cluster_follow_version }}_linux-amd64.tar.gz"
|
|
dest: /tmp
|
|
remote_src: true
|
|
notify:
|
|
- Restart ipfs-cluster-follow
|
|
|
|
- name: Install ipfs-cluster-follow
|
|
ansible.builtin.copy:
|
|
src: /tmp/ipfs-cluster-follow/ipfs-cluster-follow
|
|
dest: /usr/local/bin/ipfs-cluster-follow
|
|
mode: "0755"
|
|
remote_src: true
|
|
notify:
|
|
- Restart ipfs-cluster-follow
|
|
|
|
- name: Generate random peername
|
|
ansible.builtin.set_fact:
|
|
cluster_peername: "{{ lookup('password', '/dev/null length=8 chars=hexdigits') }}"
|
|
|
|
- name: Create ipfs-cluster-follow service
|
|
ansible.builtin.template:
|
|
src: ipfs-cluster-follow.service.j2
|
|
dest: /etc/systemd/system/ipfs-cluster-follow.service
|
|
mode: "0644"
|
|
notify:
|
|
- Restart ipfs-cluster-follow
|
|
|
|
- name: Create ipfs service
|
|
ansible.builtin.template:
|
|
src: ipfs.service.j2
|
|
dest: /etc/systemd/system/ipfs.service
|
|
mode: "0644"
|
|
notify:
|
|
- Restart ipfs
|
|
|
|
- name: Check current value of Routing.AcceleratedDHTClient
|
|
ansible.builtin.command: ipfs config Routing.AcceleratedDHTClient
|
|
register: ipfs_dht_config
|
|
changed_when: false # this never changes things, it only gathers data
|
|
|
|
- name: Enable IPFS Routing.AcceleratedDHTClient
|
|
ansible.builtin.command: ipfs config --json Routing.AcceleratedDHTClient true
|
|
notify:
|
|
- Restart ipfs
|
|
when: ipfs_dht_config.stdout != "true"
|
|
changed_when: true
|
|
|
|
- name: Create IPFS directory
|
|
ansible.builtin.file:
|
|
dest: /home/ipfs/.ipfs
|
|
owner: ipfs
|
|
group: ipfs
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Check if IPFS config exists
|
|
ansible.builtin.stat:
|
|
path: /home/ipfs/.ipfs/config
|
|
register: ipfs_config
|
|
|
|
- name: Initialize IPFS
|
|
ansible.builtin.command: /usr/local/bin/ipfs init
|
|
become: true
|
|
become_user: ipfs
|
|
args:
|
|
chdir: /home/ipfs
|
|
when: not ipfs_config.stat.exists
|
|
changed_when: true # Explicitly mark this as a change when it runs
|
|
notify:
|
|
- Restart ipfs
|
|
|
|
## @todo enable once we get gluster working
|
|
# - name: Symlink IPFS blocks directory to gluster brick
|
|
# ansible.builtin.file:
|
|
# src: /home/ipfs/.ipfs/blocks
|
|
# dest: /mnt/g1/.ipfs/blocks
|
|
# owner: ipfs
|
|
# group: ipfs
|
|
# state: link
|
|
# notify:
|
|
# - Restart ipfs
|