Skip to content

Provision demo (tag: backup) #158

Provision demo (tag: backup)

Provision demo (tag: backup) #158

Workflow file for this run

name: Provision Environment
run-name: "Provision ${{ inputs.environment }} (tag: ${{ inputs.tags }})"
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to provision'
required: true
default: 'demo'
type: choice
options:
- demo
- dev
- backup
- qa
- staging
tags:
description: 'Tags to apply to the provisioned resources'
required: true
default: backup
type: choice
options:
- all
- updates
- users
- backup
- application
- tools
- fail2ban
- decrypt-on-boot
- k8s-components
- checks
- containerd-setup
- kubernetes-installation
- control-plane-init
- cni-plugin-installation
- join-workers
- system-preparation
- kubeconfig
jobs:
provision:
runs-on:
- self-hosted
- ${{ inputs.environment }}
- node
environment: ${{ inputs.environment }}
steps:
- name: Set variables for ansible
id: ansible-variables
run: |
JSON_WITH_NEWLINES=$(cat<<EOF
${{ toJSON(env) }}
EOF)
JSON_WITHOUT_NEWLINES=$(echo $JSON_WITH_NEWLINES | jq -R -c .)
echo "EXTRA_VARS=$JSON_WITHOUT_NEWLINES" >> $GITHUB_OUTPUT
env:
encrypted_disk_size: ${{ vars.DISK_SPACE }}
disk_encryption_key: ${{ secrets.ENCRYPTION_KEY }}
k8s_runner_token: ${{ secrets.K8S_RUNNER_TOKEN }}
repository: ${{ github.repository }}
k8s_cluster_env: ${{ inputs.environment }}
- name: checkout repository
uses: actions/checkout@v4
- name: Run Ansible Playbook
uses: dawidd6/action-ansible-playbook@v4
env:
ANSIBLE_PERSISTENT_COMMAND_TIMEOUT: 10
ANSIBLE_SSH_TIMEOUT: 10
ANSIBLE_SSH_RETRIES: 5
with:
requirements: galaxy-requirements.yml
playbook: playbook.yml
directory: ./infrastructure/server-setup
options: |-
--verbose
--inventory inventory/${{ inputs.environment }}.yml
${{ inputs.tags != 'all' && format('--tags={0}', inputs.tags) || '' }}
--extra-vars ""${{ steps.ansible-variables.outputs.EXTRA_VARS }}""