--- - name: Calculate db_mem as a share of system RAM set_fact: fulcrum_db_mem_mb: "{{ (ansible_memtotal_mb | float * fulcrum_db_mem_percent) | int }}" when: fulcrum_db_mem_mb_override | string | length == 0 - name: Use the explicit db_mem override set_fact: fulcrum_db_mem_mb: "{{ fulcrum_db_mem_mb_override }}" when: fulcrum_db_mem_mb_override | string | length > 0 changed_when: false - name: Display calculated db_mem value debug: msg: "Setting db_mem to {{ fulcrum_db_mem_mb }} MB ({{ (fulcrum_db_mem_percent * 100) | int }}% of {{ ansible_memtotal_mb }} MB total RAM)" - name: Display Fulcrum version to install debug: msg: "Installing Fulcrum version {{ fulcrum_version }}" - name: Install required packages apt: name: - curl - wget - openssl state: present update_cache: yes - name: Create fulcrum group group: name: "{{ fulcrum_group }}" system: yes state: present - name: Create fulcrum user user: name: "{{ fulcrum_user }}" group: "{{ fulcrum_group }}" system: yes shell: /usr/sbin/nologin home: /home/{{ fulcrum_user }} create_home: yes state: present - name: Create Fulcrum database directory (heavy data on special mount) file: path: "{{ fulcrum_db_dir }}" state: directory owner: "{{ fulcrum_user }}" group: "{{ fulcrum_group }}" mode: '0755' - name: Create Fulcrum config directory file: path: "{{ fulcrum_config_dir }}" state: directory owner: root group: "{{ fulcrum_group }}" mode: '0755' - name: Create Fulcrum lib directory (for banner and other data files) file: path: "{{ fulcrum_lib_dir }}" state: directory owner: "{{ fulcrum_user }}" group: "{{ fulcrum_group }}" mode: '0755' # =========================================== # SSL Certificate Generation # =========================================== - name: Check if SSL certificate already exists stat: path: "{{ fulcrum_ssl_cert_path }}" register: fulcrum_ssl_cert_exists when: fulcrum_ssl_enabled | default(false) - name: Generate self-signed SSL certificate for Fulcrum command: > openssl req -x509 -newkey rsa:4096 -keyout {{ fulcrum_ssl_key_path }} -out {{ fulcrum_ssl_cert_path }} -sha256 -days {{ fulcrum_ssl_cert_days }} -nodes -subj "/C=XX/ST=Decentralized/L=Bitcoin/O=Fulcrum/OU=Electrum/CN=fulcrum.local" args: creates: "{{ fulcrum_ssl_cert_path }}" when: fulcrum_ssl_enabled | default(false) notify: Restart fulcrum - name: Set SSL certificate permissions file: path: "{{ fulcrum_ssl_cert_path }}" owner: "{{ fulcrum_user }}" group: "{{ fulcrum_group }}" mode: '0644' when: fulcrum_ssl_enabled | default(false) and fulcrum_ssl_cert_exists.stat.exists | default(false) or fulcrum_ssl_enabled | default(false) - name: Set SSL key permissions file: path: "{{ fulcrum_ssl_key_path }}" owner: "{{ fulcrum_user }}" group: "{{ fulcrum_group }}" mode: '0600' when: fulcrum_ssl_enabled | default(false) - name: Check if Fulcrum binary already exists stat: path: "{{ fulcrum_binary_path }}" register: fulcrum_binary_exists changed_when: false - name: Download Fulcrum binary tarball get_url: url: "https://github.com/cculianu/Fulcrum/releases/download/v{{ fulcrum_version }}/Fulcrum-{{ fulcrum_version }}-x86_64-linux.tar.gz" dest: "/tmp/Fulcrum-{{ fulcrum_version }}-x86_64-linux.tar.gz" mode: '0644' when: not fulcrum_binary_exists.stat.exists - name: Extract Fulcrum binary unarchive: src: "/tmp/Fulcrum-{{ fulcrum_version }}-x86_64-linux.tar.gz" dest: "/tmp" remote_src: yes when: not fulcrum_binary_exists.stat.exists - name: Install Fulcrum binary copy: src: "/tmp/Fulcrum-{{ fulcrum_version }}-x86_64-linux/Fulcrum" dest: "{{ fulcrum_binary_path }}" owner: root group: root mode: '0755' remote_src: yes when: not fulcrum_binary_exists.stat.exists - name: Verify Fulcrum binary installation command: "{{ fulcrum_binary_path }} --version" register: fulcrum_version_check changed_when: false - name: Display Fulcrum version debug: msg: "{{ fulcrum_version_check.stdout_lines }}"