mirror of
https://github.com/roddhjav/apparmor.d.git
synced 2025-03-04 06:34:43 +01:00
92 lines
2.6 KiB
HCL
92 lines
2.6 KiB
HCL
# apparmor.d - Full set of apparmor profiles
|
|
# Copyright (C) 2023-2024 Alexandre Pujol <alexandre@pujol.io>
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
locals {
|
|
name = "${var.prefix}${var.dist}-${var.flavor}"
|
|
}
|
|
|
|
source "qemu" "default" {
|
|
disk_image = true
|
|
iso_url = var.DM[var.dist].img_url
|
|
iso_checksum = "file:${var.DM[var.dist].img_checksum}"
|
|
iso_target_path = pathexpand("${var.iso_dir}/${basename("${var.DM[var.dist].img_url}")}")
|
|
cpu_model = "host"
|
|
cpus = var.cpus
|
|
memory = var.ram
|
|
disk_size = var.disk_size
|
|
accelerator = "kvm"
|
|
headless = true
|
|
ssh_username = var.username
|
|
ssh_password = var.password
|
|
ssh_port = 22
|
|
ssh_wait_timeout = "1000s"
|
|
disk_compression = true
|
|
disk_detect_zeroes = "unmap"
|
|
disk_discard = "unmap"
|
|
output_directory = pathexpand(var.output)
|
|
vm_name = "${local.name}.qcow2"
|
|
boot_wait = "10s"
|
|
firmware = pathexpand(var.firmware)
|
|
shutdown_command = "echo ${var.password} | sudo -S /sbin/shutdown -hP now"
|
|
cd_label = "cidata"
|
|
cd_content = {
|
|
"meta-data" = ""
|
|
"user-data" = format("%s\n%s",
|
|
templatefile("${path.cwd}/tests/cloud-init/common.yml",
|
|
{
|
|
username = "${var.username}"
|
|
password = "${var.password}"
|
|
ssh_key = file("${var.ssh_publickey}")
|
|
hostname = "${local.name}"
|
|
}
|
|
),
|
|
file("${path.cwd}/tests/cloud-init/${var.dist}-${var.flavor}.user-data.yml")
|
|
)
|
|
}
|
|
}
|
|
|
|
build {
|
|
sources = [
|
|
"source.qemu.default",
|
|
]
|
|
|
|
# Upload artifacts
|
|
provisioner "file" {
|
|
destination = "/tmp/"
|
|
sources = [
|
|
"${path.cwd}/tests/packer/src/",
|
|
"${path.cwd}/tests/packer/init.sh",
|
|
"${path.cwd}/tests/packer/clean.sh",
|
|
"${path.cwd}/.pkg/",
|
|
]
|
|
}
|
|
|
|
# Full system provisioning
|
|
provisioner "shell" {
|
|
execute_command = "echo '${var.password}' | sudo -S sh -c '{{ .Vars }} {{ .Path }}'"
|
|
inline = [
|
|
# Wait for cloud-init to finish
|
|
"while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for Cloud-Init...'; sleep 20; done",
|
|
|
|
# Ensure cloud-init is successful
|
|
"cloud-init status",
|
|
|
|
# Remove logs and artifacts so cloud-init can re-run
|
|
"cloud-init clean",
|
|
|
|
# Install local files and config
|
|
"bash /tmp/init.sh",
|
|
|
|
# Minimize the image
|
|
"bash /tmp/clean.sh",
|
|
]
|
|
}
|
|
|
|
post-processor "shell-local" {
|
|
inline = [
|
|
"mv ${var.output}/${local.name}.qcow2 ${var.base_dir}/${local.name}.qcow2",
|
|
]
|
|
}
|
|
|
|
}
|