147 lines
4.1 KiB
YAML
147 lines
4.1 KiB
YAML
|
|
---
|
||
|
|
- 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 }}"
|
||
|
|
|