137 lines
4.0 KiB
HCL
137 lines
4.0 KiB
HCL
|
#Flavour ${build.name}
|
||
|
build {
|
||
|
name = "nuo-harbor"
|
||
|
description = <<EOF
|
||
|
This builder builds a QEMU image from the base build output. The goal here is to install loki
|
||
|
with it's provisionning.
|
||
|
EOF
|
||
|
|
||
|
source "source.vmware-vmx.alpine" {
|
||
|
output_directory = "${var.output_dir}/${var.version}/provisionned/vmware/nuo-harbor"
|
||
|
vm_name = "${local.output_name}-${var.version}-nuo-harbor.img"
|
||
|
source_path = "${var.output_dir}/${var.version}/base/${local.output_name}-${var.version}.img.vmx"
|
||
|
// BUG https://github.com/hashicorp/packer-plugin-vmware/issues/119
|
||
|
disk_additional_size = [ 81920 ]
|
||
|
//
|
||
|
boot_command = [ "<enter><enter><wait>" ]
|
||
|
ssh_clear_authorized_keys = true
|
||
|
vmx_data = {
|
||
|
"scsi1.pcislotnumber" = "16"
|
||
|
"scsi1.present" = "TRUE"
|
||
|
"scsi1.virtualdev" = "lsilogic"
|
||
|
"scsi1:0.filename" = "disk-1.vmdk"
|
||
|
"scsi1:0.present" = "TRUE"
|
||
|
"scsi1:0.redo" = ""
|
||
|
}
|
||
|
vmx_data_post = {
|
||
|
"memsize" = "4096",
|
||
|
"numvcpus" = "2",
|
||
|
}
|
||
|
}
|
||
|
|
||
|
source "source.qemu.alpine" {
|
||
|
output_directory = "${var.output_dir}/${var.version}/provisionned/${local.Config.Name}"
|
||
|
vm_name = "${local.output_name}-${var.version}-${local.Config.Name}.img"
|
||
|
iso_url = "${var.output_dir}/${var.version}/base/${local.output_name}-${var.version}.img"
|
||
|
iso_checksum = "none"
|
||
|
disk_size = 81920
|
||
|
disk_image = true
|
||
|
boot_command = [ "<enter><enter><wait>" ]
|
||
|
ssh_clear_authorized_keys = true
|
||
|
}
|
||
|
|
||
|
provisioner "shell" {
|
||
|
script = "${local.dirs.provisionning}/tools/additionnal-disk"
|
||
|
environment_vars = [
|
||
|
"PV_DEVICE=/dev/sdb",
|
||
|
"VG_NAME=data",
|
||
|
"LV_NAME=harbor-data",
|
||
|
"LV_MTP=/srv/harbor",
|
||
|
"LV_FS=ext4"
|
||
|
]
|
||
|
}
|
||
|
|
||
|
// Install templater and bootstraper
|
||
|
provisioner "shell" {
|
||
|
script = "${local.dirs.provisionning}/templater-install.sh"
|
||
|
}
|
||
|
|
||
|
// Copy static configurations to /etc
|
||
|
provisioner "file" {
|
||
|
destination = "/etc"
|
||
|
source = "${local.dirs.provisionning}/conf/${build.name}/"
|
||
|
}
|
||
|
|
||
|
// Copy configuration values on the image
|
||
|
provisioner "shell" {
|
||
|
inline = [
|
||
|
"sh -cx 'mkdir -p ${local.builder_config.TemplateDir}'",
|
||
|
"sh -cx 'mkdir -p ${local.builder_config.ValueDir}'"
|
||
|
]
|
||
|
}
|
||
|
|
||
|
// Copy configuration templates to the image
|
||
|
provisioner "file" {
|
||
|
destination = "${local.builder_config.TemplateDir}/"
|
||
|
source = "${local.dirs.templates}/conf/${build.name}/"
|
||
|
}
|
||
|
// Copy Docker configuration templates to the image
|
||
|
provisioner "file" {
|
||
|
destination = "${local.builder_config.TemplateDir}/"
|
||
|
source = "${local.dirs.templates}/conf/docker/"
|
||
|
}
|
||
|
|
||
|
// Copy configuration values on the image
|
||
|
provisioner "file" {
|
||
|
destination = "${local.builder_config.ValueDir}/${build.name}.json"
|
||
|
content = "${jsonencode(local.NuoHarbor)}"
|
||
|
}
|
||
|
|
||
|
provisioner "file" {
|
||
|
destination = "/etc/local.d/templater.start"
|
||
|
source = "${local.locations.provisionning}/conf/common/templater.start"
|
||
|
}
|
||
|
|
||
|
// Copy ssh Cadoles keys
|
||
|
provisioner "file" {
|
||
|
destination = "/tmp"
|
||
|
source = "${local.locations.provisionning}/ssh/cadoles/"
|
||
|
}
|
||
|
|
||
|
// Copy CNOUS SSH keys
|
||
|
provisioner "file" {
|
||
|
destination = "/tmp"
|
||
|
source = "${local.locations.provisionning}/ssh/cnous/"
|
||
|
}
|
||
|
|
||
|
provisioner "shell" {
|
||
|
inline = [
|
||
|
"sh -cx 'cat /tmp/*.pub >> /root/.ssh/authorized_keys'",
|
||
|
"sh -cx 'chmod -R 600 /root/.ssh/authorized_keys'"
|
||
|
]
|
||
|
}
|
||
|
|
||
|
// Generate default configuration for the server
|
||
|
provisioner "shell" {
|
||
|
max_retries = 3
|
||
|
inline = [ "sh -cx '/usr/local/bin/btr -c ${local.builder_config.ValueDir}/ -t ${local.builder_config.TemplateDir}'" ]
|
||
|
}
|
||
|
|
||
|
provisioner "shell" {
|
||
|
environment_vars = [
|
||
|
"HARBOR_SSL_CERT=${local.NuoHarbor.Services.Harbor.Vars.HarborSSLCert}",
|
||
|
"HARBOR_SSL_KEY=${local.NuoHarbor.Services.Harbor.Vars.HarborSSLPrivKey}",
|
||
|
"HARBOR_DOMAIN=${local.NuoHarbor.Services.Harbor.Vars.HarborDomain}"
|
||
|
]
|
||
|
script = "${local.dirs.provisionning}/${build.name}.sh"
|
||
|
}
|
||
|
|
||
|
provisioner "shell" {
|
||
|
inline = [
|
||
|
"chmod +x /etc/local.d/templater.start"
|
||
|
]
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|