Files
malta-workshop/terraform/cloud-init.yml

89 lines
2.7 KiB
YAML

#cloud-config
users:
- name: workshop
groups: [adm, docker]
sudo: ['ALL=(ALL) NOPASSWD:ALL']
shell: /bin/bash
ssh_authorized_keys:
- ${ssh_public_key}
packages:
- docker.io
- curl
- git
- jq
runcmd:
- systemctl enable docker
- systemctl start docker
- usermod -aG docker workshop
- docker swarm init
- docker network create -d overlay proxy
- curl -fsSL https://install.abra.coopcloud.tech | sudo -u workshop bash
- ln -sf /home/workshop/.local/bin/abra /usr/local/bin/abra
- sudo -u workshop mkdir -p /home/workshop/.abra/servers
- sudo -u workshop abra server add ${participant_name}.${domain}
- sudo -u workshop abra app new traefik --domain=traefik.${participant_name}.${domain} --server=${participant_name}.${domain}
- sudo -u workshop abra app deploy traefik.${participant_name}.${domain}
- |
cat > /home/workshop/.bashrc << 'EOF'
export PATH="$HOME/.local/bin:$PATH"
recipes() {
echo "Available Co-op Cloud Recipes:"
echo ""
echo "Content Management:"
echo " wordpress ghost hedgedoc dokuwiki mediawiki"
echo ""
echo "File & Collaboration:"
echo " nextcloud seafile collabora onlyoffice"
echo ""
echo "Communication:"
echo " jitsi-meet matrix-synapse rocketchat mattermost"
echo ""
echo "E-commerce & Business:"
echo " prestashop invoiceninja kimai pretix"
echo ""
echo "Development & Tools:"
echo " gitea n8n jupyter-lab"
echo ""
echo "Analytics & Monitoring:"
echo " plausible uptime-kuma grafana"
echo ""
echo "Media & Social:"
echo " peertube mastodon jellyfin"
echo ""
echo "Deploy: abra app new <recipe> -S --domain=myapp.${participant_name}.${domain}"
echo "Browse all: https://recipes.coopcloud.tech"
}
help() {
echo "CODE CRISPIES Workshop Commands:"
echo ""
echo "recipes - Show available app recipes"
echo "abra app new <recipe> -S --domain=<name>.${participant_name}.${domain}"
echo "abra app deploy <domain>"
echo "abra app ls - List your apps"
echo ""
echo "Examples:"
echo " abra app new wordpress -S --domain=blog.${participant_name}.${domain}"
echo " abra app deploy blog.${participant_name}.${domain}"
echo ""
echo "Server: ${participant_name}.${domain}"
echo "Traefik: https://traefik.${participant_name}.${domain}"
}
export -f recipes help
echo "CODE CRISPIES Workshop!"
echo "Server: ${participant_name}.${domain}"
echo "Type 'help' for commands or 'recipes' for available apps"
EOF
final_message:
- echo "Workshop server ready! Traefik available at https://traefik.${participant_name}.${domain}"