setup

personal system configuration scripts
git clone git://git.pyratebeard.net/setup.git
Log | Files | Refs | README

forge (3092B)


      1 #!/usr/bin/env bash
      2 #
      3 #    ████
      4 #   ░██░                   █████
      5 #  ██████  ██████  ██████ ██░░░██  █████
      6 # ░░░██░  ██░░░░██░░██░░█░██  ░██ ██░░░██
      7 #   ░██  ░██   ░██ ░██ ░ ░░██████░███████
      8 #   ░██  ░██   ░██ ░██    ░░░░░██░██░░░░
      9 #   ░██  ░░██████ ░███     █████ ░░██████
     10 #   ░░    ░░░░░░  ░░░     ░░░░░   ░░░░░░
     11 #
     12 #  author ▓▒ pyratebeard <root@pyratebeard.net>
     13 #    code ▓▒ https://git.pyratebeard.net/setup
     14 #   usage ▓▒ curl -L https://s.rum.sh/forge > forge && chmod +x forge && ./forge
     15 
     16 # ▓▓▒░ vars
     17 EMAIL="root@pyratebeard.net"
     18 
     19 # ▓▓▒░ functions
     20 function _echo() { printf "\n╓───── %s \n╙────────────────────────────────────── ─ ─ \n" "$1"; }
     21 
     22 [ "$(id -u)" -ne 0 ] && {
     23 	_echo "got root?" >&2
     24 	exit 1
     25 }
     26 
     27 mkdir -p /run/forge
     28 
     29 # ▓▓▒░ vault
     30 _echo "enter domain"
     31 read DOMAIN
     32 echo "$(hostname -s).${DOMAIN}" > /etc/hostname
     33 
     34 # ▓▓▒░ bitwarden creds
     35 _echo "enter bitwarden creds"
     36 echo "client id"
     37 read BW_CLIENTID
     38 export BW_CLIENTID
     39 echo "client secret"
     40 read BW_CLIENTSECRET
     41 export BW_CLIENTSECRET
     42 echo "password"
     43 read BW_PASSWORD
     44 export BW_PASSWORD
     45 
     46 # ▓▓▒░ locale
     47 _echo "setting up locales"
     48 locale-gen "en_US.UTF-8"
     49 localectl set-locale en_US.UTF-8
     50 dpkg-reconfigure -f noninteractive locales
     51 systemctl daemon-reload
     52 
     53 # ▓▓▒░ packages
     54 _echo "installing runtime deps"
     55 apt-get update && apt-get install -y ansible curl git sudo unzip jq
     56 
     57 # ▓▓▒░ install collection for bitwarden lookup
     58 LC_ALL=en_US.UTF-8 ansible-galaxy collection install community.general
     59 
     60 # ▓▓▒░ bitwarden
     61 _echo "bitwarden setup"
     62 curl -sL -o /run/forge/bw.zip "https://vault.bitwarden.com/download/?app=cli&platform=linux" && \
     63 	unzip -d /usr/local/bin /run/forge/bw.zip
     64 bw login --apikey
     65 export BW_SESSION=$(bw unlock --passwordenv BW_PASSWORD --raw)
     66 BW_STATUS=$(bw status | jq -r '.status')
     67 [ ${BW_STATUS} == "unlocked" ] || {
     68         echo unlock failed
     69         export BW_SESSION=$(bw unlock --raw)
     70 }
     71 
     72 # ▓▓▒░ pull play
     73 _echo "cloning repo"
     74 git clone git://git.pyratebeard.net/setup.git /run/forge/setup && \
     75 	pushd /run/forge/setup
     76 
     77 _echo "let's play"
     78 LC_ALL=en_US.UTF-8 ansible-playbook playbook.yml
     79 
     80 _echo "forge complete"
     81 LIP=$(ip a s $(ip r | grep default | grep -oP '(?<=dev )[^ ]*') | awk '/inet\ / {print $2}' | awk -F/ '{print $1}')
     82 RIP=$(dig -4 ip @dns.toys | awk '/^ip./ {print $NF}' | tr -d '"')
     83 echo "local addr: $LIP"
     84 echo "remote addr: $RIP"
     85 
     86 _echo "cleanup"
     87 bw logout
     88 rm -rf /usr/local/bin/bw &>/dev/null
     89 srm -drvl /usr/dwarf/.config/Bitwarden\ CLI &>/dev/null
     90 srm -drvl /etc/ssh/hostca-* &>/dev/null
     91 srm -dvrl /run/forge/ &>/dev/null
     92 srm -dvrl "$0" &>/dev/null
     93 reboot