blob: afd263f7d4dc4ba71cae4422bb0505ed3fa66dc8 (
plain)
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
|
- hosts: radicle-other-node
remote_user: debian
become: yes
roles:
- role: sane_debian_system
- role: sshd
- role: unix_users
tasks:
- name: "install important additional packages"
apt:
name:
- curl
- git
- name: "create directory for Radicle keys"
file:
state: directory
path: /home/_rad/.radicle/keys
owner: _rad
group: _rad
mode: 0755
- name: "install Radicle private key"
copy:
content: "{{ radicle_key }}"
dest: /home/_rad/.radicle/keys/radicle
owner: _rad
group: _rad
mode: 0600
- name: "install Radicle public key"
copy:
content: "{{ radicle_pub }}"
dest: /home/_rad/.radicle/keys/radicle.pub
owner: _rad
group: _rad
mode: 0644
- name: "install of upgrade Radicle using installer"
shell: |
# Can't use "set -o pipefail" here, because shell may not be
# bash. So we don't use a pipe from curl to bash, and download
# as one command and run script as a second command. If the
# download fails, the task fails.
curl -sSf https://radicle.xyz/install > radicle-install
sudo -u _rad bash radicle-install
- name: "install systemd unit for Radicle node"
copy:
content: |
[Unit]
After=syslog.target network.target
Description=Radicle Node
[Service]
Type=simple
ExecStart=/home/_rad/.radicle/bin/radicle-node --listen 0.0.0.0:8776
Environment=RAD_HOME=/home/_rad/.radicle
KillMode=process
Restart=never
RestartSec=1
User=_rad
Group=_rad
[Install]
WantedBy=default.target
dest: /lib/systemd/system/radicle-node.service
- name: "start systemd unit for Radicle node"
systemd:
name: radicle-node
state: restarted
masked: no
enabled: yes
daemon_reload: yes
# Ansible does not seem to always actually start the unit, so do
# it manually. This seems to only happen on the first run on a
# freshly created host.
- name: "actually start node"
shell: |
systemctl restart radicle-node
systemctl status radicle-node
- name: "connect to other Radicle nodes"
with_items: "{{ radicle_connections }}"
shell: |
cat <<'EOF' > connect.sh
export PATH="$HOME/.radicle/bin:$PATH"
rad node status
rad node connect "{{ item.nid }}@{{ item.host }}:{{ item.port }}"
EOF
sudo -u _rad bash -ex connect.sh
- name: "seed Radicle repositories"
with_items: "{{ radicle_repositories }}"
shell: |
cat <<'EOF' > seed.sh
export PATH="$HOME/.radicle/bin:$PATH"
rad node status
rad seed "{{ item.rid }}"
EOF
sudo -u _rad bash -ex seed.sh
vars:
sane_debian_system_version: 2
sane_debian_system_hostname: "{{ inventory_hostname }}"
sane_debian_system_codename: bookworm
sane_debian_system_timezone: Europe/Helsinki
sane_debian_system_sources_lists:
- repo: |
deb http://security.debian.org/debian-security bookworm-security main
unix_users_version: 2
unix_users:
- username: _rad
comment: Radicle node
sshd_version: 1
radicle_key: "{{ lookup('pipe', 'pass radicle/radicle-other-node/key') }}"
radicle_pub: "{{ lookup('pipe', 'pass radicle/radicle-other-node/key.pub') }}"
radicle_connections:
- nid: z6MkfXa53s1ZSFy8rktvyXt5ADCojnxvjAoQpzajaXyLqG5n
host: radicle.liw.fi
port: 8776
radicle_repositories:
- rid: "rad:z3gqcJUoA1n9HaHKufZs5FCSGazv5"
- rid: "rad:zZnk3hS8C3WAhnv7mWcCUToCqpBs"
|