This projects follows a microservices architecture, as such we expect to have an instance of
HORAO
per provider. E.g. one for AWS, one for Azure, one for GCP, one for each management plane of OCHAMI or CSM, etc.
The providers follow the default authentication and authorization flow supplied by given providers.
Currently the following providers are supported:
Planned future providers:
In order to select a provider, the following environment variables need to be set:
CONTROLLER_BACKEND=AWS
This will select the AWS provider (use the key between brackets in the list above).
Data from the provider can be pulled (scanned), the following environment variables need to be set:
CONTROLLER_PULL_INTERVAL=60 #integer, default=60; set the interval in seconds to pull data from the provider
In the future we will include push (events) support where possible, the subscription mechanism will be provider specific. Note that a (slow) pull mechanism will always be needed to have a consistent state.
The AWS provider uses the boto3
library to connect to the AWS API. The following environment variables need to be set:
AWS_ACCESS_KEY_ID=access_key_id
AWS_SECRET_ACCESS_KEY=secret_access_key
AWS_REGION=region
For AWS we assume that a specific TAG with a specific value is set on the instances that need to be managed. The following environment variables need to be set:
AWS_TAG=tag_key
AWS_TAG_VALUE=tag_value
The Microsoft Azure provider uses the azure-mgmt-compute
library to connect to the Azure API. The following environment variables need to be set:
AZURE_CLIENT_ID=client_id
AZURE_CLIENT_SECRET=client_secret
AZURE_TENANT_ID=tenant_id
AZURE_SUBSCRIPTION_ID=subscription_id
For Azure we assume that a specific TAG with a specific value is set on the instances that need to be managed. The following environment variables need to be set:
AZURE_TAG=tag_key
The Google Cloud Platform provider uses the google-cloud-compute
library to connect to the GCP API. The following environment variables need to be set:
GCP_PROJECT=project
GCP_ZONE=zone
For GCP we assume that a specific TAG with a specific value is set on the instances that need to be managed. The following environment variables need to be set:
GCP_TAG=tag_key