diff --git a/hosts b/hosts index 488d2ed..31509a6 100644 --- a/hosts +++ b/hosts @@ -6,6 +6,7 @@ # Each Server should have a "vars" block like below to set individual settings for each # [bitb0x:vars] +app_list=['bitcoin.yml','electrs.yml'] ansible_user=b0xxy ansible_password=b0xxy #registry_url=git.boxxy.net/b0xxer/ diff --git a/main.yml b/main.yml index 460ba8d..36fc494 100644 --- a/main.yml +++ b/main.yml @@ -5,8 +5,7 @@ roles: - install - - build - - bitcoin + - apps - config tasks: diff --git a/roles/build/README.md b/roles/apps/README.md similarity index 100% rename from roles/build/README.md rename to roles/apps/README.md diff --git a/roles/build/defaults/main.yml b/roles/apps/defaults/main.yml similarity index 100% rename from roles/build/defaults/main.yml rename to roles/apps/defaults/main.yml diff --git a/roles/build/files/bitcoin/Containerfile b/roles/apps/files/bitcoin/Containerfile similarity index 96% rename from roles/build/files/bitcoin/Containerfile rename to roles/apps/files/bitcoin/Containerfile index 5270e99..51ef24d 100644 --- a/roles/build/files/bitcoin/Containerfile +++ b/roles/apps/files/bitcoin/Containerfile @@ -1,6 +1,6 @@ #Based on Dockerflie from Kyle Manna - https://github.com/kylemanna/docker-bitcoind -FROM almalinux/9-minimal AS build +FROM docker.io/almalinux/9-minimal:latest AS build RUN microdnf update -y \ && microdnf install -y \ @@ -38,7 +38,7 @@ RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/downloa gpgconf --kill all; \ rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; -FROM almalinux/9-minimal +FROM docker.io/almalinux/9-minimal:latest LABEL maintainer="b0xxer@b0xxy.net" ENTRYPOINT ["entrypoint.sh"] diff --git a/roles/apps/files/bitcoin/bin/btc_init b/roles/apps/files/bitcoin/bin/btc_init new file mode 100644 index 0000000..765ba34 --- /dev/null +++ b/roles/apps/files/bitcoin/bin/btc_init @@ -0,0 +1,91 @@ +#!/bin/bash + +set -ex + +mkdir -p $HOME/.bitcoin + +if [ -f "$HOME/.bitcoin/bitcoin.conf" ]; +then + echo "Backing up bitcoin.conf" + TMPEXT=$(date +%Y.%m.%d.%H.%M.%S) + mv $HOME/.bitcoin/bitcoin.conf $HOME/.bitcoin/bitcoin.conf.bak.$TMPEXT +fi + +echo "Creating bitcoin.conf" + +# Seed a random password for JSON RPC server +cat < $HOME/.bitcoin/bitcoin.conf +# +# Do not modify this file as it is autogenerated. +# You can either: +# (a) Modify this template "btc_init" in build or +# (b) You can pass a variable name as env variable during container launch +# +# Environmental Variable Name List +# +# MAINNET +# TESTNET +# REGTEST +# SERVER +# LISTEN +# LISTENONION +# DAEMON +# TXINDEX +# PRUNE +# DISABLEWALLET +# PRINTCONSOLE +# RPCUSER +# RPCPASSWORD +# RPCCONNECT +# RPCPORT +# RPCAUTH +# DBCACHE +# MAXCONNECTIONS +# MAXUPLOADTARGET +# PROXY +# SEEDNODE1 +# SEEDNODE2 +# SEEDNODE3 +# REINDEXCHAINSTATE + +# network +mainnet=${MAINNET:-1} +testnet=${TESTNET:-0} +regtest=${REGTEST:-0} + +# server +server=${SERVER:-1} +listen=${LISTEN:-1} +listenonion=${LISTENONION:-0} +daemon=${DAEMON:-0} +txindex=${TXINDEX=-1} +prune=${PRUNE=-0} +disablewallet=${DISABLEWALLET:-1} +printtoconsole=${PRINTTOCONSOLE:-1} + +# rpc +rpcuser=${RPCUSER:-bitcoinrpc} +rpcpassword=${RPCPASSWORD:-`dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64`} +#rpcconnect=${RPCCONNECT:-127.0.0.1} +#rpcport=${RPCPORT:-8332} +#rpcauth=${RPCAUTH:-xxx} + +# performance +dbcache=${DBCACHE:-2000} +maxconnections=${MAXCONNECTIONS:-40} +maxuploadtarget=${MAXUPLOADTARGET:-5000} + +# tor +#proxy=${PROXY:-127.0.0.1:9050} +#seednode=${SEEDNODE1:-nkf5e6b7pl4jfd4a.onion} +#seednode=${SEEDNODE2:-xqzfakpeuvrobvpj.onion} +#seednode=${SEEDNODE3:-tsyvzsqwa2kkf6b2.onion} + +# validation +reindex-chainstate=${REINDEXCHAINSTATE:-0} + +EOF + +cat $HOME/.bitcoin/bitcoin.conf + +echo "Initialization completed successfully" diff --git a/roles/build/files/bitcoin/bin/btc_oneshot b/roles/apps/files/bitcoin/bin/btc_oneshot similarity index 100% rename from roles/build/files/bitcoin/bin/btc_oneshot rename to roles/apps/files/bitcoin/bin/btc_oneshot diff --git a/roles/build/files/bitcoin/entrypoint.sh b/roles/apps/files/bitcoin/entrypoint.sh similarity index 100% rename from roles/build/files/bitcoin/entrypoint.sh rename to roles/apps/files/bitcoin/entrypoint.sh diff --git a/roles/apps/handlers/main.yml b/roles/apps/handlers/main.yml new file mode 100644 index 0000000..3af875f --- /dev/null +++ b/roles/apps/handlers/main.yml @@ -0,0 +1,7 @@ +--- +# handlers file for build +# +- name: rebuild_bitcoin + ansible.builtin.shell: + chdir: ~/Containers/bitcoin + cmd: ./build.sh diff --git a/roles/build/meta/main.yml b/roles/apps/meta/main.yml similarity index 100% rename from roles/build/meta/main.yml rename to roles/apps/meta/main.yml diff --git a/roles/build/tasks/main.yml b/roles/apps/tasks/bitcoin.yml similarity index 53% rename from roles/build/tasks/main.yml rename to roles/apps/tasks/bitcoin.yml index c251ecb..d65d0f9 100644 --- a/roles/build/tasks/main.yml +++ b/roles/apps/tasks/bitcoin.yml @@ -1,6 +1,28 @@ --- # tasks file for build # +- name: Create bitcoin-pod + containers.podman.podman_pod: + name: bitcoin-pod + state: started + ports: + - "50001:50001" + - "4224:4224" + - "127.0.0.1:8332:8332" + - "8333:8333" + +- name: Create bitcoin data / conf directory + ansible.builtin.file: + path: ~/.bitcoin + state: directory + mode: '0755' + +- name: Copy bitcoin-node.container file + ansible.builtin.template: + src: bitcoin/bitcoin-node.container.j2 + dest: /home/b0xxy/.config/containers/systemd/bitcoin-node.container + notify: reload_systemctl + - name: Create Containers/bitcoin Dir ansible.builtin.file: path: ~/Containers/bitcoin/bin @@ -31,4 +53,12 @@ src: bitcoin/bin/btc_oneshot dest: ~/Containers/bitcoin/bin/btc_oneshot notify: rebuild_bitcoin + +- name: Copy build script + ansible.builtin.template: + src: bitcoin/build.sh.j2 + dest: ~/Containers/bitcoin/build.sh + mode: '0700' + notify: rebuild_bitcoin + diff --git a/roles/apps/tasks/main.yml b/roles/apps/tasks/main.yml new file mode 100644 index 0000000..e2ec13e --- /dev/null +++ b/roles/apps/tasks/main.yml @@ -0,0 +1,8 @@ +--- + +- name: Install apps + ansible.builtin.include_tasks: + file: "{{ item }}" + with_items: + - "{{ app_list }}" + diff --git a/roles/bitcoin/templates/bitcoin-node.container.j2 b/roles/apps/templates/bitcoin/bitcoin-node.container.j2 similarity index 91% rename from roles/bitcoin/templates/bitcoin-node.container.j2 rename to roles/apps/templates/bitcoin/bitcoin-node.container.j2 index 34495b6..795df7a 100644 --- a/roles/bitcoin/templates/bitcoin-node.container.j2 +++ b/roles/apps/templates/bitcoin/bitcoin-node.container.j2 @@ -3,7 +3,7 @@ Description=Bitcoin Node [Container] # Use the centos image -Image={{ registry_url }}:{{ bitcoin_version }} +Image={{ registry_url }}/bitcoin:{{ bitcoin_version }} PodmanArgs=--pod bitcoin-pod Environment=RPCPASSWORD={{ bitcoin_rpcpassword }} diff --git a/roles/apps/templates/bitcoin/build.sh.j2 b/roles/apps/templates/bitcoin/build.sh.j2 new file mode 100755 index 0000000..a7787fc --- /dev/null +++ b/roles/apps/templates/bitcoin/build.sh.j2 @@ -0,0 +1,4 @@ +#!/bin/sh + +#Build command to make container +buildah build -t bitcoin:{{ bitcoin_version }} --build-arg VERSION={{ bitcoin_version }} -f Containerfile diff --git a/roles/build/tests/inventory b/roles/apps/tests/inventory similarity index 100% rename from roles/build/tests/inventory rename to roles/apps/tests/inventory diff --git a/roles/build/tests/test.yml b/roles/apps/tests/test.yml similarity index 100% rename from roles/build/tests/test.yml rename to roles/apps/tests/test.yml diff --git a/roles/build/vars/main.yml b/roles/apps/vars/main.yml similarity index 100% rename from roles/build/vars/main.yml rename to roles/apps/vars/main.yml diff --git a/roles/build/files/bitcoin/bin/btc_init b/roles/build/files/bitcoin/bin/btc_init deleted file mode 100644 index 960eaa9..0000000 --- a/roles/build/files/bitcoin/bin/btc_init +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/bash - -set -ex - -mkdir -p $HOME/.bitcoin - -if [ -f "$HOME/.bitcoin/bitcoin.conf" ]; -then - echo "Backing up bitcoin.conf" - TMPEXT=$(date +%Y.%m.%d.%H.%M.%S) - mv $HOME/.bitcoin/bitcoin.conf $HOME/.bitcoin/bitcoin.conf.bak.$TMPEXT -fi - -echo "Creating bitcoin.conf" - -# Seed a random password for JSON RPC server -cat < $HOME/.bitcoin/bitcoin.conf -# -#Do not modify this file as it is autogenerated. -#You can either (a) Modify this template "btc_init" in build or -# (b) You can pass a variable name as env variable during container launch -# The variable names are printed to right of each item -# - - -# network -mainnet=${MAINNET:-1} # MAINNET -testnet=${TESTNET:-0} # TESTNET -regtest=${REGTEST:-0} # REGTEST - -# server -server=${SERVER:-1} # SERVER -listen=${LISTEN:-1} # LISTEN -listenonion=${LISTENONION:-0} # LISTENONION -daemon=${DAEMON:-0} # DAEMON -txindex=${TXINDEX=-1} # TXINDEX -prune=${PRUNE=-0} # PRUNE -disablewallet=${DISABLEWALLET:-1} # DISABLEWALLET -printtoconsole=${PRINTTOCONSOLE:-1} # PRINTCONSOLE - -# rpc -rpcuser=${RPCUSER:-bitcoinrpc} # RPCUSER -rpcpassword=${RPCPASSWORD:-`dd if=/dev/urandom bs=33 count=1 2>/dev/null | base64`} # RPCPASSWORD -#rpcconnect=${RPCCONNECT:-127.0.0.1} # RPCCONNECT -#rpcport=${RPCPORT:-8332} # RPCPORT -#rpcauth=${RPCAUTH:-xxx} # RPCPORT - -# performance -dbcache=${DBCACHE=-2000} # DBCACHE -maxconnections=${MAXCONNECTIONS=-40} # MAXCONNECTIONS -maxuploadtarget=${MAXUPLOADTARGET=-5000} # MAXUPLOADTARGET - -# tor -#proxy=${PROXY:-127.0.0.1:9050} # PROXY -#seednode=${SEEDNODE1:-nkf5e6b7pl4jfd4a.onion} # SEEDNODE1 -#seednode=${SEEDNODE2:-xqzfakpeuvrobvpj.onion} # SEEDNODE2 -#seednode=${SEEDNODE3:-tsyvzsqwa2kkf6b2.onion} # SEEDNODE3 - -# validation -reindex-chainstate=${REINDEXCHAINSTATE=-0} # REINDEXCHAINSTATE - -EOF - -fi - -cat $HOME/.bitcoin/bitcoin.conf - -echo "Initialization completed successfully" diff --git a/roles/build/handlers/main.yml b/roles/build/handlers/main.yml deleted file mode 100644 index 4a8acd7..0000000 --- a/roles/build/handlers/main.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- -# handlers file for build -# -- name: rebuild_bitcoin - containers.podman.podman_image: - name: bitcoin:{{ bitcoin_version }} - path: ~/Containers/bitcoin/ - build: - force_rm: true - format: oci - extra_args: VERSION={{ bitcoin_version }} - debugger: always diff --git a/roles/build/templates/bitcoin/build.sh.j2 b/roles/build/templates/bitcoin/build.sh.j2 deleted file mode 100755 index a5e9002..0000000 --- a/roles/build/templates/bitcoin/build.sh.j2 +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -#Build command to make container -VER=26.0 - -buildah build -t bitcoin:$VER --build-arg VERSION=$VER -f Containerfile diff --git a/roles/install/tasks/main.yml b/roles/install/tasks/main.yml index 18c5728..30ac0f0 100644 --- a/roles/install/tasks/main.yml +++ b/roles/install/tasks/main.yml @@ -27,6 +27,7 @@ name: - podman - podman-compose + - buildah - gpg - git - avahi