- 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 }}