232 lines
5.0 KiB
Markdown
232 lines
5.0 KiB
Markdown
# Tasker (Jobs Server)
|
|
|
|
The **Tasker** component runs scheduled and on-demand tasks for the Stoplight platform.
|
|
|
|
> #### Networking Details
|
|
>
|
|
> The default port for the Tasker component is TCP port **9432**. This port can
|
|
> be customized via configuration.
|
|
>
|
|
> Tasker must be able to receive incoming connections from the following components:
|
|
>
|
|
> * API
|
|
>
|
|
> Tasker must be able to make outgoing connections to the following components:
|
|
>
|
|
> * API
|
|
> * Redis
|
|
> * Pubs
|
|
|
|
> #### Component Dependencies
|
|
>
|
|
> Make sure the following components are available **before** starting the Tasker
|
|
> service:
|
|
>
|
|
> * Redis
|
|
|
|
## Installation
|
|
|
|
Tasker can be installed with Docker or via RPM package.
|
|
|
|
### RPM Package
|
|
|
|
Prior to installing the RPM package, you will need to have the Stoplight package
|
|
repository installed and configured with your user-specific credentials.
|
|
|
|
#### Setting up the Package Repository
|
|
|
|
You can setup the Stoplight package repo by copying-and-pasting the contents
|
|
below into a terminal:
|
|
|
|
```bash
|
|
# expose credentials to environment first
|
|
REPO_USERNAME="myusername"
|
|
REPO_PASSWORD="mypassword"
|
|
|
|
# write credentials to repo file
|
|
cat <<EOF | sudo tee /etc/yum.repos.d/stoplight.repo
|
|
[stoplight]
|
|
name=Stoplight Package Repository
|
|
baseurl=https://$REPO_USERNAME:$REPO_PASSWORD@pkg.stoplight.io/rpm
|
|
enabled=1
|
|
gpgcheck=1
|
|
repo_gpgcheck=1
|
|
gpgkey=https://pkg.stoplight.io/stoplight.key
|
|
EOF
|
|
```
|
|
|
|
> Make sure that the repository credentials are set before issuing the `cat` command above.
|
|
|
|
#### Installing the Tasker Package
|
|
|
|
Once the repository is configured properly, you can install the Tasker component using the command:
|
|
|
|
```bash
|
|
sudo yum install tasker -y
|
|
```
|
|
|
|
### Docker
|
|
|
|
To install the Tasker component with Docker, run the command below:
|
|
|
|
```bash
|
|
docker pull quay.io/stoplight/tasker
|
|
```
|
|
|
|
> Note, if you have not already authenticated with the Stoplight container
|
|
> registry, you will be prompted for credentials.
|
|
|
|
## Configuration
|
|
|
|
To configure the Tasker component, you will need to provide runtime settings and
|
|
connection details for a running Redis instance.
|
|
|
|
### Variables
|
|
|
|
#### TASKER_HTTP_BIND
|
|
|
|
The `TASKER_HTTP_BIND` variable is the bind address and port used for serving
|
|
the Tasker HTTP API.
|
|
|
|
```
|
|
TASKER_HTTP_BIND="localhost:9432"
|
|
```
|
|
|
|
#### TASKER_MODE
|
|
|
|
The `TASKER_MODE` variable is the operation mode that Tasker should use when
|
|
executing jobs. Valid values for `TASKER_MODE` are `docker` and `shell`.
|
|
|
|
```
|
|
TASKER_MODE="shell"
|
|
```
|
|
|
|
> If not specified, Tasker defaults to using `docker` mode.
|
|
|
|
#### CORE_ROOT
|
|
|
|
The `CORE_ROOT` denotes the absolute path to the stoplight-hub-builder package
|
|
root.
|
|
|
|
```
|
|
CORE_ROOT="/opt/stoplight-hub-builder"
|
|
```
|
|
|
|
> This variable is only required when running in `shell` mode.
|
|
|
|
#### TASKER_REDIS_HOSTPORT
|
|
|
|
The `TASKER_REDIS_HOSTPORT` variable denotes the Redis instance host:port to connect to.
|
|
|
|
```
|
|
TASKER_REDIS_HOSTPORT="redis://redis:6379"
|
|
```
|
|
|
|
> Redis must be available before starting service.
|
|
|
|
#### TASKER_REDIS_PASSWORD
|
|
|
|
The `TASKER_REDIS_PASSWORD` variable is an optional password to use when
|
|
connecting to the Redis instance.
|
|
|
|
```
|
|
TASKER_REDIS_PASSWORD=""
|
|
```
|
|
|
|
#### TASKER_REDIS_DATABASE
|
|
|
|
The `TASKER_REDIS_DATABASE` variable is the Redis database used by Tasker for
|
|
storing job state.
|
|
|
|
```
|
|
TASKER_REDIS_DATABASE="0"
|
|
```
|
|
|
|
#### TASKER_REDIS_NAMESPACE
|
|
|
|
The `TASKER_REDIS_NAMESPACE` variable is the Redis namespace used by Tasker for
|
|
storing job state.
|
|
|
|
```
|
|
TASKER_REDIS_NAMESPACE="tasker"
|
|
```
|
|
|
|
### RPM Package
|
|
|
|
The Tasker configuration is located at:
|
|
|
|
```bash
|
|
/etc/tasker/tasker.cfg
|
|
```
|
|
|
|
Be sure to customize any variables as needed to match your environment
|
|
**before** starting the Tasker service.
|
|
|
|
> Any changes to the Tasker configuration requires a service restart in order to
|
|
> take effect.
|
|
|
|
### Docker
|
|
|
|
To expose configuration variables to the Docker runtime, either write them to a
|
|
file and use the `--env-file` argument:
|
|
|
|
```bash
|
|
cat <<EOF>tasker-env-vars
|
|
TASKER_HTTP_BIND="..."
|
|
...
|
|
EOF
|
|
|
|
docker run --env-file tasker-env-vars ...
|
|
```
|
|
|
|
Alternatively, you can expose them one at a time with the `-e` flag:
|
|
|
|
```bash
|
|
docker run -e TASKER_HTTP_BIND=0.0.0.0:9432 ...
|
|
```
|
|
|
|
## Running
|
|
|
|
### RPM Package
|
|
|
|
To start the Tasker server, run the command:
|
|
|
|
```bash
|
|
sudo systemctl start tasker
|
|
```
|
|
|
|
Once started, you can see the status of the service using the command:
|
|
|
|
```bash
|
|
sudo systemctl status tasker
|
|
```
|
|
|
|
### Docker
|
|
|
|
To start the Tasker container, use the command:
|
|
|
|
```bash
|
|
docker run \
|
|
--restart on-failure \
|
|
--env-file tasker-env-vars \
|
|
-p 9432:9432 \
|
|
quay.io/stoplight/tasker:latest
|
|
```
|
|
|
|
If started properly, the container should be marked with a healthy status after
|
|
30 seconds. Use the `docker ps` command to verify the container was started and
|
|
is running properly.
|
|
|
|
## Post-install Validations
|
|
|
|
Once the Tasker component is running, you can verify the installation was
|
|
successful issuing an `HTTP GET` request to the `/health` endpoint:
|
|
|
|
```bash
|
|
# remember to update the scheme, host, and port here to match your installation
|
|
curl -v http://localhost:9432/health
|
|
```
|
|
|
|
If Tasker was installed and configured properly, you will receive an `HTTP 200`
|
|
response back.
|