genvid.toolbox.TerraformTool

class genvid.toolbox.TerraformTool(**kwargs)

Bases: genvid.toolbox.runtime.RuntimeTool, genvid.toolbox.docker.DockerTool

Main tool for managing the cloud environment using terraform.

ARTIFACTS_URL_TEMPLATE = '{images_domain_name}/'

The template for the base URL for loading the Docker images. It is formatted with the information inside the terraform_config property.

DESCRIPTION = 'Genvidtech Terraform Utility'
NAME = 'terraform'
SERVER_CLASSES = ('server', 'public_worker', 'internal_worker')

The list of server nodes classes.

TF

The location of the terraform executable.

TFS3DIR

The location of the terraform-s3-dir executable.

add_commands()
add_terraform_commands()

Add all the commands available from :class:TerraformTool.

Run it from add_commands() to add all the commands available from terraform to the parser. See also RuntimeTool.add_runtime_commands() for other commands available from :class:TerraformTool.

apply_cluster(*args, **kwargs)

Run terraform apply.

destroy_cluster(*args, **kwargs)

Run terraform destroy.

get_cluster_ips(public=False)

Return the list of the private ips of all nodes on the cluster.

If public is True, returns the public ips instead.

get_consul_ip()
get_ip()
output_cluster(*args, check=False, **kwargs)

Run terraform output.

plan_cluster(*args, **kwargs)

Run terraform plan.

refresh()

Refresh the terraform_config values.

run_command(command, options)
run_nomad_fs(*args, ip=None, **kwargs)

Run nomad fs on the server, using ssh.

This is necessary for nomad fs to be able to run on nodes which are only available through a reverse proxy.

run_terraform_command(command, options)

Detect if the command is a terraform command and execute it.

Call it from run_command() to handle terraform commands. Terraform commands are added with the help of add_terraform_commands().

Returns:
handled, result: A tuple with a boolean saying if the command were handled, and it’s result if that the case.
run_tf(*args, cwd=None, **kwargs)

Run terraform with the following arguments.

Note that the default cwd is set to self.ROOTDIR when not specified.

setup_jobs(**kwargs)
show_cluster(*args, **kwargs)

Run terraform show.

ssh(*cmd, ip=None)

Run cmd on the server designated by ip using ssh.

Used the first server ip if None is passed.

ssh_config()

Returns the ssh command line parameters to connect to the main

Used the first server ip if None is passedserver.

ssh_shell(ip=None)
status(*jobs)
terraform_config

A dictionary of some of the terraform output and variables.

You must call refresh() to refresh them.

update_images()

Update all docker images in the terraform configuration.