Vicky, which is the babysitter of Timmy in The Fairly OddParents, is a CD tool for environments with many constraints and dependencies that usually cannot be represented.
Vicky consists out of multiple components to make a spreaded deployment possible.
- vicky
- Main Task Scheduler | Commands fairies to work on tasks
- fairy
- Fairy, can run multiple times. | Asks for tasks from vicky and runs them locally
- dashboard
- Web-UI
- vickyctl
- CLI application to manage vicky
Each component can be developed and deployed individually.
We need to start an instance of vicky, S3 storage (here, minio) and postgres to run anything.
These are provided to you in the deployment folder as a docker compose file.
- Generate TLS client certificates for etcd authentication
nix run .\#generate-certs- Certificates are located at
certs
- Enter
deployment - Start docker-compose collection
docker-compose up -d
-
Setup spawns a single garage node without any cluster configuration. This is not useful.
-
A cluster must be created & a key must be generated.
-
Steps
docker exec -it <ID of Docker Container> /garagecalls the garage binary in the docker container.- Every following
garageoperation means doing it in Docker.
- Every following
garage statusshows all nodes, it should be a single nodes without any roles or zones or everything.- If there is something configured, you may have already initialized stuff.
garage layout assign <NODE ID> -z wob1 -c 1T -t wob- This creates a new cluster configuration.
garage layout showgarage layout apply --version 1garage bucket create vicky- Creates bucket
vicky
- Creates bucket
garage key create vicky- Creates access key with name
vickyand prints access key id and secret key.- Note: vicky is not the access key!
- Copy this into the appropriate locations in configurations.
- Creates access key with name
garage bucket allow vicky --key vicky --read --write
TODO @yu-re-ka: Add Information
- Copy
vicky/config.example.tomltovicky/config.tomlRocket.example.tomlcontains the correct configuration to run with the provided development environment.
- Edit
vicky/config.toml- Add own machine token to configuration
- This is needed for
fairylater.
- This is needed for
- Add OIDC authentication provider to configuration
- Add own machine token to configuration
- Enter
vicky - Run
cargo run --bin vicky
- Copy
fairy/config.example.tomltofairy/config.toml - Edit
fairy/config.toml- Add
machine_tokenfrom last step into this configuration.
- Add
- Enter
fairy - Run
cargo run --bin fairy
- Enter
dashboard - Install Dependencies
npm ciindashboardFolder
- Run
npm run start
- Enter vickyctl
- Run
cargo runfor help - Provide
VICKY_URLandVICKY_TOKENas env variables to the program so that it can connect to vicky.- Example:
VICKY_URL=http://127.0.0.1:8000 VICKY_TOKEN=abc1234 cargo run task create --name "Deployment 1" --flake-url github:wobcom/example-vicky --lock-name "Cool Lock" --lock-type WRITE
- Example:
Usage: vickyctl <COMMAND>
Commands:
task Manage tasks on the vicky delegation server
tasks Show all tasks vicky is managing
locks Show all poisoned locks vicky is managing
resolve Show all poisoned locks vicky is managing
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version