packer.pkr.hcl
locals {
client_id = vault("/kv/data/azure", "client_id")
client_secret = vault("/kv/data/azure", "client_secret")
tenant_id = vault("/kv/data/azure", "tenant_id")
subscription_id = vault("/kv/data/azure", "subscription_id")
resource_group_name = var.resource_name
virtual_network_name = "kbid-d-krc-vnet-002"
virtual_network_subnet_name = "d-mgmt-snet-001"
virtual_network_resource_group_name = "kbid-d-krc-mgmt-rg"
timestamp = formatdate("YYYYMMDD_hhmmss", timeadd(timestamp(), "9h"))
}
variable "placeholder" {
default = "placekitten.com"
description = "Image-as-a-service URL. Some other fun ones to try are fillmurray.com, placecage.com, placebeard.it, loremflickr.com, baconmockup.com, placeimg.com, placebear.com, placeskull.com, stevensegallery.com, placedog.net"
}
source "azure-arm" "basic-example" {
client_id = local.client_id
client_secret = local.client_secret
subscription_id = local.subscription_id
tenant_id = local.tenant_id
managed_image_resource_group_name = local.resource_group_name
managed_image_name = "${var.image_name}-${local.timestamp}"
os_type = "Linux"
image_publisher = "RedHat"
image_offer = "RHEL"
image_sku = "8_4"
azure_tags = {
dept = "KBHC Terraform POC"
}
build_resource_group_name = local.resource_group_name
virtual_network_name = local.virtual_network_name
virtual_network_subnet_name = local.virtual_network_subnet_name
virtual_network_resource_group_name = local.virtual_network_resource_group_name
vm_size = "Standard_A2_v2"
}
build {
sources = ["sources.azure-arm.basic-example"]
provisioner "file" {
source = "./files/"
destination = "/tmp"
}
provisioner "shell" {
inline = [
"sudo cp /tmp/sshd /etc/pam.d/sshd",
"sudo cp /tmp/sshd_config /etc/ssh/sshd_config",
"sudo mkdir -p /etc/vault.d",
"sudo cp /tmp/vault.hcl /etc/vault.d/vault.hcl",
"sudo cp /tmp/vault-ssh-helper /usr/bin/vault-ssh-helper",
"echo \"=== Vault_Check ===\"",
"curl http://10.0.9.10:8200",
"/usr/bin/vault-ssh-helper -verify-only -config=/etc/vault.d/vault.hcl -dev",
"echo \"=== Add User ===\"",
"sudo adduser jboss",
"echo password | sudo passwd --stdin jboss",
"echo 'jboss ALL=(ALL) NOPASSWD: ALL' | sudo tee -a /etc/sudoers",
"echo \"=== SELINUX DISABLE ===\"",
"sudo sed -ie 's/SELINUX=enforcing/SELINUX=disabled /g' /etc/selinux/config"
]
}
provisioner "shell" {
inline = [
"sudo yum -y update",
"sleep 15",
"sudo yum -y update",
"sudo yum -y install httpd",
"sudo systemctl enable httpd",
"sudo systemctl start httpd",
"chmod +x /tmp/deploy_app.sh",
"sudo PLACEHOLDER=${var.placeholder} WIDTH=600 HEIGHT=800 PREFIX=gs /tmp/deploy_app.sh",
"sudo firewall-cmd --zone=public --permanent --add-port=80/tcp",
"sudo firewall-cmd --reload",
]
}
}