blob: 8468fcbe762a3c6b5bb61f9629a70ba0cb1ae83a [file] [log] [blame]
packer {
required_plugins {
openstack = {
version = ">= 1.0.0"
source = "github.com/hashicorp/openstack"
}
}
}
variable "cloud_auth_url" {
type = string
default = null
}
variable "cloud_tenant" {
type = string
default = null
}
variable "cloud_user" {
type = string
default = null
}
variable "cloud_pass" {
type = string
default = null
}
variable "source_ami_filter_name" {
type = string
default = null
}
variable "source_ami_filter_product_code" {
type = string
default = null
}
variable "source_ami_filter_owner" {
type = string
default = null
}
variable "ansible_roles_path" {
type = string
default = ".galaxy"
}
variable "arch" {
type = string
default = "x86_64"
}
variable "base_image" {
type = string
default = null
}
variable "cloud_network" {
type = string
default = null
}
variable "cloud_region" {
type = string
default = "ca-ymq-1"
}
variable "cloud_user_data" {
type = string
default = null
}
variable "distro" {
type = string
default = null
}
variable "docker_source_image" {
type = string
default = null
}
variable "flavor" {
type = string
default = "v2-highcpu-1"
}
variable "ssh_proxy_host" {
type = string
default = ""
}
variable "ssh_user" {
type = string
default = null
}
variable "vm_image_disk_format" {
type = string
default = ""
}
variable "vm_use_block_storage" {
type = string
default = "true"
}
variable "vm_volume_size" {
type = string
default = "20"
}
source "docker" "helm" {
changes = ["ENTRYPOINT [\"\"]", "CMD [\"\"]"]
commit = true
image = "${var.docker_source_image}"
}
source "openstack" "helm" {
domain_name = "Default"
flavor = "${var.flavor}"
identity_endpoint = "${var.cloud_auth_url}"
image_name = "ZZCI - ${var.distro} - helm - ${var.arch} - ${legacy_isotime("20060102-150405.000")}"
instance_name = "${var.distro}-builder-${uuidv4()}"
metadata = {
ci_managed = "yes"
}
networks = ["${var.cloud_network}"]
password = "${var.cloud_pass}"
region = "ca-ymq-1"
source_image_name = "${var.base_image}"
ssh_proxy_host = "${var.ssh_proxy_host}"
ssh_username = "${var.ssh_user}"
tenant_name = "${var.cloud_tenant}"
user_data_file = "${var.cloud_user_data}"
username = "${var.cloud_user}"
}
build {
sources = ["source.docker.helm", "source.openstack.helm"]
provisioner "shell" {
execute_command = "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else {{ .Vars }} sudo -E '{{ .Path }}'; fi"
scripts = ["common-packer/provision/install-python.sh"]
}
provisioner "shell-local" {
command = "./common-packer/ansible-galaxy.sh ${var.ansible_roles_path}"
}
provisioner "ansible" {
ansible_env_vars = [
"ANSIBLE_NOCOWS=1",
"ANSIBLE_PIPELINING=True",
"ANSIBLE_ROLES_PATH=${var.ansible_roles_path}",
"ANSIBLE_CALLBACK_WHITELIST=profile_tasks",
"ANSIBLE_STDOUT_CALLBACK=debug"
]
command = "./common-packer/ansible-playbook.sh"
extra_arguments = [
"--scp-extra-args", "'-O'",
"--ssh-extra-args", "-o IdentitiesOnly=yes -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa"
]
playbook_file = "provision/helm.yaml"
skip_version_check = true
}
}