Skip to content

Commit

Permalink
Add Azure external provider example
Browse files Browse the repository at this point in the history
  • Loading branch information
Ionut Balutoiu committed May 12, 2022
1 parent 3c36854 commit abb0f3d
Show file tree
Hide file tree
Showing 5 changed files with 442 additions and 1 deletion.
61 changes: 61 additions & 0 deletions contrib/providers.d/azure/cloudconfig/install_runner.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
#!/bin/bash

set -ex
set -o pipefail

CALLBACK_URL="GARM_CALLBACK_URL"
BEARER_TOKEN="GARM_CALLBACK_TOKEN"
DOWNLOAD_URL="GH_DOWNLOAD_URL"
FILENAME="GH_FILENAME"
TARGET_URL="GH_TARGET_URL"
RUNNER_TOKEN="GH_RUNNER_TOKEN"
RUNNER_NAME="GH_RUNNER_NAME"
RUNNER_LABELS="GH_RUNNER_LABELS"

function call() {
PAYLOAD="$1"
curl -s -X POST -d "${PAYLOAD}" -H 'Accept: application/json' -H "Authorization: Bearer ${BEARER_TOKEN}" "${CALLBACK_URL}" || echo "failed to call home: exit code ($?)"
}

function sendStatus() {
MSG="$1"
call "{\"status\": \"installing\", \"message\": \"$MSG\"}"
}

function success() {
MSG="$1"
call "{\"status\": \"idle\", \"message\": \"$MSG\"}"
}

function fail() {
MSG="$1"
call "{\"status\": \"failed\", \"message\": \"$MSG\"}"
exit 1
}



sendStatus "downloading tools from ${DOWNLOAD_URL}"
curl -L -o "/home/runner/${FILENAME}" "${DOWNLOAD_URL}" || fail "failed to download tools"

mkdir -p /home/runner/actions-runner || fail "failed to create actions-runner folder"

sendStatus "extracting runner"
tar xf "/home/runner/${FILENAME}" -C /home/runner/actions-runner/ || fail "failed to extract runner"
chown runner:runner -R /home/runner/actions-runner/ || fail "failed to change owner"

sendStatus "installing dependencies"
cd /home/runner/actions-runner
sudo ./bin/installdependencies.sh || fail "failed to install dependencies"

sendStatus "configuring runner"
sudo -u runner -- ./config.sh --unattended --url "${TARGET_URL}" --token "${RUNNER_TOKEN}" --name "${RUNNER_NAME}" --labels "${RUNNER_LABELS}" --ephemeral || fail "failed to configure runner"

sendStatus "installing runner service"
./svc.sh install runner || fail "failed to install service"

sendStatus "starting service"
./svc.sh start || fail "failed to start service"

success "runner successfully installed"

29 changes: 29 additions & 0 deletions contrib/providers.d/azure/cloudconfig/userdata.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#cloud-config
package_upgrade: true
packages:
- curl
- tar
system_info:
default_user:
name: runner
home: /home/runner
shell: /bin/bash
groups:
- sudo
- adm
- cdrom
- dialout
- dip
- video
- plugdev
- netdev
sudo: ALL=(ALL) NOPASSWD:ALL
runcmd:
- /install_runner.sh
- rm -f /install_runner.sh
write_files:
- encoding: b64
content: RUNNER_INSTALL_B64
owner: root:root
path: /install_runner.sh
permissions: "755"
8 changes: 8 additions & 0 deletions contrib/providers.d/azure/config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Azure service principal credentials
export AZURE_SUBSCRIPTION_ID="<SUBSCRIPTION_ID>"
export AZURE_TENANT_ID="<TENANT_ID>"
export AZURE_CLIENT_ID="<CLIENT_ID>"
export AZURE_CLIENT_SECRET="<CLIENT_SECRET>"

# GARM config
export LOCATION="westeurope"
Loading

0 comments on commit abb0f3d

Please sign in to comment.