#Flavour ${build.name} build { name = "nuo-harbor" description = <" ] 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 = [ "" ] 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" ] } }