Templater
The Templater handles the creation and deletion of virtual machine templates for the openstack environment from Template type Deputy packages.
Endpoints
The Templater has two gRPC endpoints:
create
Creates a template from a given Deputy package. Duplicate templates of the same Deputy source package are not uploaded. This is achieved by naming the templates after the checksum of the source package.
During the creation of the template the existing network devices are removed. It is still recommended to remove them by hand when before creating the VM Deputy package as it may be prone to errors depending on the openstack version.
If the template already exists in the openstack environment, the deputy package is not downloaded into the handler and the Accounts info is not extracted from it. The Accounts field will be empty in the response. The accounts information is stored on the Rangers database as well as in redis storage, if that is lost the template will need to be deleted and then reuploaded for it to populate the Database again.
Request
message Source {
string name = 1;
string version = 2;
}
Successful Response
message TemplateResponse {
Identifier identifier = 1;
repeated Account accounts = 2;
}
For reference, the Identifier
and Account
messages are defined as follows:
message Identifier {
string value = 1;
}
message Account {
string username = 1;
string password = 2;
string private_key = 3;
}
delete
Deletes a previously uploaded template.
Request
message Identifier {
string value = 1;
}
Successful Response
message Empty {}
Configuration
The following environment variables are available for the Templater handler configuration:
Global Settings
Variable | Mandatory | Type | Description |
---|---|---|---|
GLOBAL_HOST | Yes | string | Address where the Templater handler listens |
GLOBAL_INSECURE | Yes | bool | Enables or disables SSL certificate verification |
Service Ports
Variable | Mandatory | Type | Description |
---|---|---|---|
TEMPLATER_PORT | Yes | integer | Port where the Templater handler listens |
DevStack Credentials
Variable | Mandatory | Type | Description |
---|---|---|---|
AUTH_URL | Yes | string | OpenStack authentication endpoint |
CREDENTIAL_ID | Yes | string | OpenStack credential username |
CREDENTIAL_SECRET | Yes | string | OpenStack credential password |
DOMAIN | Yes | string | OpenStack domain (default: Default ) |
PROJECT | Yes | string | OpenStack project name |
GATEWAY_NETWORK | Yes | string | Gateway network for the OpenStack environment |
REGION | Yes | string | Region name for the OpenStack environment |
HYPERVISOR | Yes | string | OpenStack hypervisor connection URL |
HYPERVISOR_USER | Yes | string | Username for the OpenStack hypervisor |
HYPERVISOR_PASSWORD | Yes | string | Password for the OpenStack hypervisor |
Logging Configuration
Variable | Mandatory | Type | Description |
---|---|---|---|
LOG_LEVEL | No | string | Logging level (e.g., INFO, DEBUG, WARN) |
LOG_DIR | No | string | Directory where logs are stored |
LOG_FILE_NAME | No | string | Name of the log file |
Redis Configuration
Variable | Mandatory | Type | Description |
---|---|---|---|
REDIS_HOST | Yes | string | Redis server address |
REDIS_PORT | Yes | integer | Port where the Redis server is running |
REDIS_PASSWORD | Yes | string | Password for Redis authentication |
Optional Environment Variables
Variable | Mandatory | Type | Description |
---|---|---|---|
HYPERVISOR_WAIT_TIMEOUT | No | integer | Timeout in seconds for the hypervisor to be ready |
HYPERVISOR_WAIT_INTERVAL | No | integer | Interval in seconds to check if the hypervisor is ready |
Example .env
Configuration
# Global Settings
GLOBAL_HOST=0.0.0.0
GLOBAL_INSECURE=True
# Service Ports
TEMPLATER_PORT=8000
# DevStack Credentials
AUTH_URL=https://openstack-auth-url:5000/v3
CREDENTIAL_ID=openstack_client_id
CREDENTIAL_SECRET=openstack_application_secret
DOMAIN=openstack_domain
PROJECT=openstack_project
GATEWAY_NETWORK=openstack_gateway_network
REGION=openstack_region
HYPERVISOR=qemu+tcp://hostname/system
HYPERVISOR_USER=openstack_hypervisor_user
HYPERVISOR_PASSWORD=openstack_hypervisor_password
# Logging Configuration
LOG_LEVEL=INFO
LOG_DIR=/var/log
LOG_FILE_NAME=ocr_openstack_plugin
# Redis Configuration
REDIS_HOST=redis-host
REDIS_PORT=6379
REDIS_PASSWORD=redis_password
# Optional
HYPERVISOR_WAIT_TIMEOUT=300
HYPERVISOR_WAIT_INTERVAL=5