Skip to content

Latest commit

 

History

History
63 lines (46 loc) · 6.39 KB

File metadata and controls

63 lines (46 loc) · 6.39 KB

Terraform Openstack virtual_machine Module

This terraform module provides a convenience for instantiating a virtual machine in an Openstack project.

Requirements

Name Version
terraform >=1.5.0
ansible ~> 1.2.0
openstack ~>1.54.1
random ~> 3.6.1

Providers

Name Version
ansible 1.2.0
openstack 1.54.1
random 3.6.1

Modules

No modules.

Resources

Name Type
ansible_host.virtual_machine resource
openstack_compute_instance_v2.virtual_machine resource
openstack_networking_floatingip_associate_v2.floating_ip resource
openstack_networking_floatingip_v2.floating_ip resource
random_id.virtual_machine resource
openstack_compute_flavor_v2.flavor data source
openstack_images_image_v2.image data source
openstack_networking_network_v2.network data source
openstack_networking_port_v2.port data source

Inputs

Name Description Type Default Required
virtual_machine virtual_machine = {
name : "The name of the virtual machine instance when listed on the hypervisor."
contact : "The primary contact for the resources, this should be the username and must be able to receive email by appending your domain to it (e.g. ${contact}@example.com) (this person can explain what/why)."
description: "The optional description of the virtual machine instance."
flavor : "The name of the flavor that determines the amount of cpu, memory, and disk allocated to the virtual machine (e.g. m1.medium)."
image : "The image used to instantiate the virtual machine."
domain : "The optional network domain used for constructing a fqdn for the virtual machine."
groups : "An array of Ansible inventory group names that the virtual machine should be associated with."
hostname : "The optional short (unqualified) hostname of the instance to be created."
network : "The network the virtual machine resides on."
floating_ip_pool : "The name of the floating IP pool from which to allocate a floating IP address."
attach_floating_ip : "Whether to attach a floating IP address to the virtual machine."
security_groups : "An array of security group names that should be applied to the virtual machine."
ssh_keypair : "The name of a SSH keypair already loaded in the Openstack project for the authenticating user which will be associated with the default cloud-init user."
root_password : "Password for the root user of the instance (plain-text or hashed)."
user = {
username : "User used to access the instance."
display_name : "Full name of the user used to access the instance."
password : "The optional password for user used to access the instance (plain-text or hashed)."
homedir : "The optional home directory for user used to access the instance (defaults to /home)."
ssh_public_key : "SSH public key used to access the instance."
sudo_rule : "Sudo rule applied to the user used to access the instance (e.g. 'ALL=(ALL) ALL')."
uid : "The optional user ID of the user used to access the instance."
}
enable_ansible_inventory : "Whether to create an Ansible inventory host entry for the virtual machine."
}
object({
name = string
contact = string
description = string
flavor = string
image = string
domain = string
groups = list(string)
hostname = string
network = string
floating_ip_pool = string
attach_floating_ip = bool
security_groups = list(string)
ssh_keypair = string
root_password = string
user = object({
username = string
display_name = string
password = string
homedir = string
ssh_public_key = string
sudo_rule = string
uid = number
})
enable_ansible_inventory = bool
})
n/a yes

Outputs

Name Description
id The unique id of the virtual machine.
name The name of the virtual machine instance when listed on the hypervisor.
virtual_machine The Openstack Compute Instance representation of the virtual machine.

Examples

Licensing

GNU General Public License v3.0 or later

See LICENSE to see the full text.