Schedule hosts on a QUADS server via its self-scheduling REST API.
- Supports SSO API token (
qat_) and legacy username/password authentication - Performs all self-service steps: registration, login, host discovery and scheduling
- Allows scheduling multiple hosts or passing additional cloud values e.g.
qinq: 1ornowipe - Allows setting a host model preference order, or use
allif you don't care - Supports just listing available servers or scheduling specific servers you want
- Supports listing your current, active assignments only
- Generates list of scheduled hosts and login/authentication details to a local file
- Generates helper commands for querying assignment validation status and terminating the assignment via it's
assignment_id
- Ansible: Ensure Ansible and community collections (e.g.
community.general.dict_kv) are installed from where you are running it.jqis needed for helper commands.
dnf install ansible ansible-core jq- QUADS Server Access: You need network access to the QUADS API server and valid credentials (SSO token or username/password).
Important
You must configure quads_config.yml first for at least quads_api_server, quads_username, and one authentication method.
Two authentication methods are supported. Use one of them.
SSO API Token (preferred): Obtain a qat_-prefixed token from the QUADS web portal under Profile > API Tokens. No password is needed.
Legacy username/password: Set quads_password in the config. If it's your first time, make up a password — the playbook will register you automatically.
| Parameter | Type | Description |
|---|---|---|
quads_api_server |
String | The FQDN or IP address of your QUADS API server (e.g., "quads.example.com"). |
quads_username |
String | Your username, which is the part of your email before the @ sign (e.g., "joe"). |
quads_user_domain |
String | The domain part of your email address (e.g., "example.com"). |
quads_api_token |
String | SSO API token (preferred). Obtain from the QUADS web portal Profile > API Tokens. Starts with qat_. |
quads_password |
String | Legacy password for the QUADS server. Used only when quads_api_token is not set. |
preferred_models |
List or String | A list of server models to schedule, in order of preference. The playbook will try to find a match for the first model, then the second, and so on. Use "all" to select any available model without preference. |
---
quads_api_server: "quads.example.com"
quads_username: "joe"
quads_user_domain: "example.com"
quads_api_token: "qat_your_token_here"
preferred_models:
- "r650"
- "r660"
- "r640"---
quads_api_server: "quads.example.com"
quads_username: "joe"
quads_user_domain: "example.com"
# quads_api_token: ""
quads_password: "make_a_password_up"
preferred_models:
- "r650"
- "r660"
- "r640"
# preferred_models: "all"Note
You must wrap workload_name description in single quotes like the below examples.
ansible-playbook quads_self_schedule.yml -e "list_active_only=true"ansible-playbook quads_self_schedule.yml -e "list_servers_only=true"ansible-playbook quads_self_schedule.yml -e "workload_name='My Test Workload'"ansible-playbook quads_self_schedule.yml -e "workload_name='My Test Workload'" -e "num_hosts='3'"ansible-playbook quads_self_schedule.yml \
-e "workload_name='My Test Workload'" \
-e "schedule_servers=host01.example.com,host2.example.com"ansible-playbook quads_self_schedule.yml -e "workload_name='My Test Workload'" -e "wipe=false"ansible-playbook quads_self_schedule.yml -e "workload_name='My Test Workload'" -e "qinq='1'"The following helper files are also generated to assist with the self-scheduling lifecycle:
| File | Description |
|---|---|
quads_credentials.yml |
Contains your username, password, and the API token used for the session. |
scheduled_hosts_..._YYYY-MM-DD_HH-MM-SS.yml |
A timestamped record of the hosts that were successfully scheduled. |
quads_commands_..._YYYY-MM-DD_HH-MM-SS.txt |
A timestamped text file with convenient curl commands to check status or terminate your assignment. |