blob: 9e23ca34228f0be87a2a81922b6d3c9a790ee37d (
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
|
- name: Install rss-aggregator by pre-compiling the binary
when: ( not ( rss_aggregator_install_method is defined ) ) or rss_aggregator_install_method == "precompile"
block:
- name: Fetch rss-aggregator source code
delegate_to: 127.0.0.1
become: false
ansible.builtin.git:
repo: https://git.joeac.net/rss-aggregator.git
dest: /tmp/rss-aggregator
depth: 1
- name: Cross-compile rss-aggregator
delegate_to: 127.0.0.1
become: false
ansible.builtin.shell:
cmd: cross build --release --target {{ rust_target }}
chdir: /tmp/rss-aggregator
changed_when: "'Compiling' in _task.result.stderr"
- name: Install rss-aggregator binary
ansible.builtin.copy:
src: /tmp/rss-aggregator/target/{{ rust_target }}/release/rss-aggregator
dest: /usr/bin/rss-aggregator
mode: +x
- name: Install or update rss-aggregator using rustup
when: rss_aggregator_install_method == "rustup"
block:
- name: Install Rust toolchain using installation script
ansible.builtin.shell:
cmd: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
creates: /usr/bin/rustc
- name: Update Rust toolchain with rustup
ansible.builtin.shell: rustup update
changed_when: "'updated' in _task.result.stdout"
- name: Install or update rss-aggregator using cargo
ansible.builtin.shell:
cmd: cargo install --git git://git.joeac.net/rss-aggregator.git
changed_when: "'Installed' in _task.result.stdout or 'Replaced' in _task.result.stdout"
- name: Install daily crontab to update rss-aggregator using cargo
ansible.builtin.cron:
special_time: daily
name: Update rss-aggregator
job: cargo install --git git://git.joeac.net/rss-aggregator.git
- name: Install rss-aggregator using cargo provided by APK
when: rss_aggregator_install_method == "cargo"
block:
- name: Install cargo using APK
community.general.apk:
name: cargo
- name: Install or update rss-aggregator using cargo
ansible.builtin.shell:
cmd: cargo install --git git://git.joeac.net/rss-aggregator.git
changed_when: "'Installed' in _task.result.stdout or 'Replaced' in _task.result.stdout"
- name: Install daily crontab to update rss-aggregator using cargo
ansible.builtin.cron:
special_time: daily
name: Update rss-aggregator
job: cargo install --git git://git.joeac.net/rss-aggregator.git
- name: Create rss-aggregator configuration directory
ansible.builtin.file:
path: /etc/rss-aggregator
state: directory
- name: Configure rss-aggregator
ansible.builtin.template:
src: rss-aggregator.toml
dest: /etc/rss-aggregator/config.toml
- name: Fetch subscriptions
ansible.builtin.git:
repo: git://git.joeac.net/subscriptions.git
dest: "{{ src_dir }}/subscriptions"
depth: 1
- name: Symlink subscriptions into rss-aggregator configuration directory
ansible.builtin.file:
src: "{{ src_dir }}/subscriptions/subscriptions.txt"
dest: /etc/rss-aggregator/subscriptions.txt
state: link
- name: Create directory for RSS file
ansible.builtin.file:
path: "{{ http_files_dir }}/feed/{{ feed_dir }}"
state: directory
owner: nginx
group: nginx
- name: Use rss-aggregator to generate RSS file
ansible.builtin.shell:
cmd: rss-aggregator > {{ http_files_dir }}/feed/{{ feed_rss_path }}
creates: "{{ http_files_dir }}/feed/{{ feed_rss_path }}"
- name: Install nginx location config
register: nginx_conf
ansible.builtin.template:
src: nginx/feed.conf
dest: /etc/nginx/http.d/joeac.net.locations.d/feed.conf
- name: Restart nginx
when: nginx_conf is changed
ansible.builtin.service:
name: nginx
state: restarted
- name: Install hourly crontab to update subscriptions and run rss-aggregator
ansible.builtin.cron:
special_time: daily
name: Run rss-aggregator
job: >-
git -C "{{ src_dir }}/subscriptions" pull;
rss-aggregator > {{ http_files_dir }}/feed/{{ feed_rss_path }}
|