Install
Overview
Ackal's command-line tool (ackalctl
) and the two proxies (ackalctl-http-proxy
, ackalctl-file-proxy
) are distributed as Linux containers. Using containers simplifies software delivery and increases the likelihood that the software will work on your machines.
If you are unable to use Linux containers, please Contact Us
Container Images
Ackal's command-line tool (ackalctl
) and the two proxies (ackalctl-http-proxy
, ackalctl-file-proxy
) are available here:
The current version is: v0.0.38.
Container images are pulled if not cached locally but, if you'd prefer, you can docker pull
these:
docker pull ghcr.io/brabantcourt/ackalctl:v0.0.38
docker pull ghcr.io/brabantcourt/ackalctl-file-proxy:v0.0.38
docker pull ghcr.io/brabantcourt/ackalctl-http-proxy:v0.0.38
If you're running on Linux and you would prefer to run the binaries from these containers directly, you can cp
the binary from a container create
'd from the image:
BIN="ackalctl" # Image name == binary name
ID=$(docker create ghcr.io/brabantcourt/${BIN}:v0.0.38)
docker cp \
${ID}:/${BIN} \
${PWD}
To run any of these commands, you can use the following commands:
NOTEackalctl
andackalctl-http-proxy
requirecredentials.json
. All the containers may be configured usingconfig.json
. We recommend that you mount${HOME}/.config/ackalctl
into the container so that both files may be used.
ackalctl
CUSTOMER_ID="[YOUR CUSTOMER ID]
docker run \
--interactive --tty --rm \
--env=ACKAL_CUSTOMER_ID=${CUSTOMER_ID} \
--volume="${HOME}/.config/ackalctl:/root/.config/ackalctl" \
ghcr.io/brabantcourt/ackalctl:v0.0.38
ackalctl-http-proxy
ackalctl-http-proxy
publishes a port.
You can use any available host port and container port and they need not match.
CUSTOMER_ID="[YOUR CUSTOMER ID]
PORT="5000"
ENDPOINT="0.0.0.0:${PORT}"
docker run \
--interactive --rm --tty \
--env=ACKAL_CUSTOMER_ID=${CUSTOMER_ID} \
--publish="${PORT}:${PORT}" \
--volume="${HOME}/.config/ackalctl:/root/.config/ackalctl" \
ghcr.io/brabantcourt/ackalctl-http-proxy:v0.0.38 \
--endpoint="${ENDPOINT}"
ackalctl-file-proxy
ackalctl-file-proxy
writes a file containing your health checks to your host.
You can choose the name and folder for this file.
CUSTOMER_ID="[YOUR CUSTOMER ID]
FILENAME="healthchecks.yml"
docker run \
--interactive --rm --tty \
--env=ACKAL_CUSTOMER_ID=${CUSTOMER_ID} \
--volume="${HOME}/.config/ackalctl:/root/.config/" \
--volume="${PWD}/${FILENAME}:/${FILENAME}:rw" \
ackalctl \
ghcr.io/brabantcourt/ackalctl-file-proxy:v0.0.38 \
--filename="/${FILENAME}" \
--period="30s"
IMPORTANT In the remainder of the documentation, when you seeackalctl
,ackalctl-file-proxy
andackalctl-http-proxy
, you should replace these with the above container run commands.
Register
To create a User account and subscribe to Ackal, please visit the Ackal Console.
You will need to:
- Sign in using a Google, Microsoft or GitHub account.
- Subscribe to Ackal using Stripe.
Once you have subscribed to Ackal:
- A Customer account will be created for you and its ID will be sent to the email account associated with your User account. You will need to provide the Customer ID when using Ackal. (see:
config.json
- You should click DOWNLOAD to save your
credentials.json
file. This file will be used in the next step (see:credentials.json).
NOTE One Customer account (e.g. for an organization) may have multiple User accounts.
credentials.json
To authenticate these tools to Ackal's services, you will need to store credentials.json
in your ${HOME}/.config/ackalctl
folder.
{
"jwt": "...",
"refresh_token": "...",
"expiration": 1643788800
}
config.json
You are encouraged to create config.json
in your ${HOME}/.config/ackalctl
folder, replacing the value of customer.id
with the Customer ID provided to you when you created your User account.
{
"customer":{
"id":"..."
},
"services":{
"ackal":"service.ack.al:443",
"renew":"renew.ack.al:443"
}
}
Using config.json
saves repeatedly specifying this file's values on the command-line when you use ackalctl
and the proxies.
ackalctl
used with config.json
ackalctl \
--endpoint="server-01:443" \
--period="300s" \
--location_ids="the-dalles,tokyo" \
--services="ServiceA,ServiceB" \
create check
ackalctl
used without config.json
ackalctl \
--customer_id="${CUSTOMER_ID}" \
--ackal="service.ack.al:443" \
--renew="renew.ack.al:443" \
--endpoint="server-01:443" \
--period="300s" \
--location_ids="the-dalles,tokyo" \
--services="ServiceA,ServiceB" \
create check
Test ackalctl
You should now be able to run ackalctl
commands.
Let's start by simply listing location from which health checks may be run:
ackalctl \
list locations
If the above command returned a list of locations, then your environment is correctly configured and you can begin creating checks
If the command does not work, please review the steps above to ensure that you followed them correctly.