Microbolt ❤️ Cloud

Ansible és una eina senzilla d’automatització informàtica que pot facilitar el desplegament de les teves aplicacions i sistemes. És una eina potent que es pot utilitzar per automatitzar el desplegament i la configuració del(s) vostre(s) node(s) Microbolt.

Algú va dir una vegada:

“Ain’t nobody got time to sit through RaspiBolt more than once. Once you’ve learned how to build a Bitcoin node with your hands the next ones should just build themselves.”

— 1ma (Unhosted Marcellus)

i aquí estem.

🚫

Aquesta guia assumeix que teniu un coneixement bàsic de Proxmox/Debian i que podeu llegir ordres o scripts bàsics de l’intèrpret d’ordres, identificar variables i modificar-les segons sigui necessari. Es proporcionen valors per defecte per a totes les variables, però podeu personalitzar-los perquè s’adaptin a les vostres necessitats. No cal que sigueu un expert Proxmox/Debian, però hauríeu de ser capaços de fer SSH al teu sistema. Instal·lar Proxmox/Debian està fora d’abast.

Prerequisits

Variables
VariableDescripcióValor per defecte
blankBlank template ID9000
alpineAlpine template ID9010
storageStorage IDlocal-zfs
ssdSSD flag1
usernameCloud-init usernamesatoshi
ssh_keyfileSSH key file/etc/pve/priv/authorized_keys
passwordCloud-init passwordchangeme
microboltMicrobolt VM ID2140
nameMicrobolt VM namenakamoto01
coresMicrobolt VM cores4
memoryMicrobolt VM memory8192
vlanMicrobolt VM VLAN1
second_storageSecond storage IDlocal-zfs
second_ssdSecond SSD flag1

SSH al vostre servidor Proxmox/Debian i executeu les ordres següents.

Plantilla en blanc

Es recomana molt crear una plantilla en blanc de Linux si estàs utilitzant Proxmox/Debian. M’ho agrairàs més tard.

qm create "${blank:-9000}" \
    --name template \
    --ostype l26 \
    --agent enabled=1,fstrim_cloned_disks=1 \
    --cpu host \
    --balloon 0 \
    --vga serial0 \
    --scsihw virtio-scsi-pci \
    --net0 virtio,bridge=vmbr0,firewall=1 \
    --serial0 socket
qm template "${blank:-9000}"

Plantilla d’Alpine cloud

Clona la plantilla en blanc

qm clone "${blank:-9000}" "${alpine:-9010}" \
    --name alpine-3.20 \
    --full

Descarrega la imatge de cloud d’Alpine

wget https://dl-cdn.alpinelinux.org/alpine/v3.20/releases/cloud/\
nocloud_alpine-3.20.3-x86_64-bios-cloudinit-r0.qcow2

Crea la plantilla d’Alpine cloud

Per utilitzar les teves pròpies claus SSH de GitHub, simplement substitueix <username> pel teu nom d’usuari real de GitHub.

wget -qO- https://github.com/<username>.keys > ./github_keys
export ssh_keyfile=./github_keys
qm set "${alpine:-9010}" \
    --scsi0 "${storage:-local-zfs}:0,import-from=$(pwd)/nocloud_alpine-3.20.3-x86_64-bios-cloudinit-r0.qcow2,iothread=1,discard=on,ssd=${ssd:-1}" \
    --ide0 "${storage:-local-zfs}:cloudinit" \
    --tags alpine \
    --ciuser "${username:-satoshi}" \
    --sshkeys "${ssh_keyfile:-/etc/pve/priv/authorized_keys}" \
    --cipassword "${password:-changeme}" \
    --ipconfig0 "ip6=auto,ip=dhcp" \
    --boot order=scsi0 \
    --ciupgrade 1 \
    --scsihw virtio-scsi-single
qm template "${alpine:-9010}"

Neteja

rm nocloud_alpine-3.20.3-x86_64-bios-cloudinit-r0.qcow2

Microbolt VM

Clona la plantilla d’Alpine cloud

qm clone "${alpine:-9010}" "${microbolt:-2140}" \
    --name "${name:-nakamoto01}" \
    --full

Configura la Microbolt VM

qm set "${microbolt:-2140}" \
    --onboot 1 \
    --cores "${cores:-2}" \
    --memory "${memory:-8192}" \
    --net0 "virtio,bridge=vmbr0,firewall=1,tag=${vlan:-1}" \
    --tags "alpine,microbolt"

Redimensiona el(s) disc(s)

qm disk resize "${microbolt:-2140}" scsi0 2048G

Inicia la VM

qm start "${microbolt:-2140}"

Instal·lació

Executeu les ordres següents a la màquina principal.

Instal·la Ansible

apk add ansible

Clona el repositori

git clone https://github.com/microbolt-guide/ansible.git && cd ansible

Configura l’inventari

cp inventory/hosts.ini.example inventory/hosts.ini

Edita el fitxer hosts.ini

vi inventory/hosts.ini

Configura les variables

Edita les variables globals al fitxer group_vars/all.yaml

vi inventory/group_vars/all.yaml

I/o modifica per a un sol host, consulta exemples dins del directori host_vars

cat inventory/host_vars/nakamoto01.yaml.example

Executa el playbook

./deploy.sh

Inicia i habilita els serveis

./services.sh start enable

FET 🎉