Skip to content
Snippets Groups Projects
Commit ee027cd8 authored by Bo-Chun Chen's avatar Bo-Chun Chen
Browse files

feat: add app-template packer template

parent 6a2cc9bb
No related tags found
No related merge requests found
This a packer hcl template for creating a image. For documentation on packer, see [here](https://www.packer.io/docs); for information about the openstack-specific builder, see [here](https://www.packer.io/plugins/builders/openstack)
packer {
required_plugins {
openstack = {
version = "~> 1"
source = "github.com/hashicorp/openstack"
}
ansible = {
version = "~> 1"
source = "github.com/hashicorp/ansible"
}
}
}
source "openstack" "example" {
skip_create_image = var.skip_create_image
image_name = local.local_image_name
source_image = var.source_image
image_members = var.image_membership
image_auto_accept_members = var.auto_accept_members
image_tags = var.image_tags
image_disk_format = var.image_format
volume_size = var.volume_size
flavor = var.flavor
instance_name = var.build_instance_name
use_blockstorage_volume = true
floating_ip_network = var.floating_ip_network
networks = var.networks
security_groups = var.security_groups
ssh_username = var.ssh_username
}
build {
sources = ["source.openstack.example"]
provisioner "shell" {
inline = [
"echo Hello",
"echo from `hostname`"
]
}
# For more provision, check at https://developer.hashicorp.com/packer/docs/provisioners
# Example of ansible provisioner:
provisioner "ansible" {
playbook_file = "./ansible/playbook.yml"
}
}
variable "root_ssh_key" {
type = string
default = ""
description = "The root key to use for ssh"
}
variable "image_name" {
type = string
default = "cluster-image"
description = "Name of the image in openstack"
}
variable "image_format" {
type = string
default = "qcow2"
description = "The format of the resulting image"
}
variable "image_tags" {
type = list(string)
default = []
description = "List of tags to be associated to the resulting image"
}
variable "image_membership" {
type = list(string)
default = []
description = "Projects/tenants to share the image in openstack with"
}
variable "auto_accept_members" {
type = bool
default = false
description = "A boolean value for auto accepting image in the projects/tenants defined in image_membership."
}
variable "skip_create_image" {
type = bool
default = false
description = "A boolean value for skipping image creation at the end of the build"
}
variable "source_image" {
type = string
default = ""
description = "The name of the source image to use"
}
variable "flavor" {
type = string
default = ""
description = "The name of the flavor to use"
}
variable "floating_ip_network" {
type = string
default = "uab-campus"
description = "floating ip network to use with (temporary) ip assignmnet to a vm"
}
variable "networks" {
type = list(string)
default = []
description = "List of network UUIDs to assign to the network"
}
variable "security_groups" {
type = list(string)
default = []
description = "A list of security groups to add - you should make sure ssh access is open to the machine"
}
variable "build_instance_name" {
type = string
default = "ood"
description = "A name of build instance used for image build"
}
variable "ssh_username" {
type = string
default = "centos"
description = "The default username to use for SSH"
}
variable "volume_size" {
type = number
default = 20
description = "The default volume size for building iamge"
}
variable "ANSIBLE_DEBUG" {
type = string
default = "false"
description = "to turn on debugging"
}
variable "ANSIBLE_VERBOSITY" {
type = string
default = "0"
description = "to increase verbosity - 0|1|2|3|4"
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment