- name: Configure solanum on routers hosts: routers remote_user: root tasks: - name: See if solanum has been built already ansible.builtin.stat: path: /home/solanum/ircd register: solanum_already_built - name: Add Debian build dependencies ansible.builtin.package: name: automake,autotools-dev,bsdextrautils,build-essential,byacc,curl,flex,git,libsqlite3-dev,libssl-dev,libtool,make,pkg-config,sqlite3 state: present when: ansible_distribution == 'Debian' and solanum_already_built.stat.exists == False - name: Add Arch build dependencies ansible.builtin.pacman: name: base-devel,autoconf,automake,libtool state: present when: ansible_distribution == 'Archlinux' and solanum_already_built.stat.exists == False - name: Create solanum user ansible.builtin.user: name: solanum system: true comment: Solanum service user when: solanum_already_built.stat.exists == False - name: Download solanum ansible.builtin.git: repo: 'https://github.com/solanum-ircd/solanum.git' dest: /home/solanum/solanum become: yes become_user: solanum when: solanum_already_built.stat.exists == False - name: Decide whether we should run autogen.sh ansible.builtin.stat: path: /home/solanum/solanum/configure register: configure_exists when: solanum_already_built.stat.exists == False - name: Run autogen.sh ansible.builtin.command: ./autogen.sh args: chdir: /home/solanum/solanum become: yes become_user: solanum when: solanum_already_built.stat.exists == False # or configure_exists.stat.exists == False - name: See if Makefile exists ansible.builtin.stat: path: /home/solanum/solanum/Makefile when: solanum_already_built.stat.exists == False register: makefile_exists - name: Run configure ansible.builtin.command: ./configure --enable-oper-chghost --with-nicklen=50 args: chdir: /home/solanum/solanum become: yes become_user: solanum when: solanum_already_built.stat.exists == False # or makefile_exists.stat.exists == False - name: Build solanum ansible.builtin.make: chdir: /home/solanum/solanum become: yes become_user: solanum when: solanum_already_built.stat.exists == False - name: Install solanum ansible.builtin.make: chdir: /home/solanum/solanum target: install become: yes become_user: solanum when: solanum_already_built.stat.exists == False - name: See if there is currently a TLS certificate ansible.builtin.stat: path: /home/solanum/ircd/etc/cert.pem register: tls_cert_exists - name: Generate TLS certificate ansible.builtin.command: 'openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /home/solanum/ircd/etc/key.pem -out /home/solanum/ircd/etc/cert.pem -subj "/C=US/O=AS4242422002/OU=IRC servers/CN={{ inventory_hostname }}"' become: yes become_user: solanum when: tls_cert_exists.stat.exists == False - name: Get certificate fingerprint command: /home/solanum/ircd/bin/solanum-mkfingerprint spki_sha256 /home/solanum/ircd/etc/cert.pem become: yes become_user: solanum register: tls_fingerprint - name: Generate configuration file ansible.builtin.template: src: solanum/conf.j2 dest: /home/solanum/ircd/etc/ircd.conf mode: '0600' become: yes become_user: solanum - name: Generate motd ansible.builtin.template: src: solanum/motd.j2 dest: /home/solanum/ircd/etc/ircd.motd mode: '0600' become: yes become_user: solanum - name: Create systemd service ansible.builtin.copy: src: solanum/solanum.service dest: /etc/systemd/system/solanum.service mode: '0644' when: ansible_service_mgr == 'systemd' - name: Enable and start/reload solanum ansible.builtin.systemd_service: name: solanum.service enabled: true state: reloaded daemon_reload: true when: ansible_service_mgr == 'systemd'