#Flavour ${build.name} build { name = "${local.Harbor.Name}" description = <" ] ssh_clear_authorized_keys = true } provisioner "file" { destination = "/tmp/${build.name}.sh" source = "${path.cwd}/provisionning/${var.name}/${build.name}.sh" } provisioner "file" { destination = "/tmp/install-${build.name}.sh" source = "${path.cwd}/provisionning/${build.name}/install.sh" } provisioner "file" { destination = "/tmp/install-templater.sh" source = "${path.cwd}/provisionning/templater/install.sh" } // Install OpenNebula context tool provisioner "file" { destination = "/tmp/one-context.sh" source = "${path.cwd}/provisionning/${var.name}/one-context.sh" } // Deploy the opennebula context script to manage configuration provisioner "file" { destination = "/tmp/net-96-templater" source = "${path.cwd}/provisionning/one-context/net-96-templater" } provisioner "shell" { inline = [ "sh -cx 'sh /tmp/one-context.sh'", "sh -cx 'sh /tmp/${build.name}.sh'", "sh -cx 'sh /tmp/install-templater.sh'", "sh -cx 'sh /tmp/install-${build.name}.sh'", "sh -cx 'cp /tmp/net-96-templater /etc/one-context.d/net-96-templater'", "sh -cx 'chmod +x /etc/one-context.d/net-96-templater'" ] } provisioner "file" { name = "templater" destination = "${local.Config.ConfigFiles[0].destination}" content = templatefile("${path.cwd}/templates/conf/${build.name}/${local.Config.ConfigFiles[0].source}", local.Config) } // Create Builder directories on the image. provisioner "shell" { inline = [ "sh -cx 'mkdir -p ${local.builder_config.TemplateDir}/${build.name}'", "sh -cx 'chown ${local.Config.User}:${local.Config.Group} ${local.builder_config.TemplateDir}/${build.name}'", "sh -cx 'mkdir -p ${local.builder_config.ValueDir}/${build.name}'", "sh -cx 'chown ${local.Config.User}:${local.Config.Group} ${local.builder_config.ValueDir}/${build.name}'", "sh -cx 'mkdir -p ${local.Config.StorageRoot}'", "sh -cx 'chown ${local.Config.User}:${local.Config.Group} ${local.Config.StorageRoot}'" ] } // Copy configuration template on the image provisioner "file" { destination = "${local.builder_config.TemplateDir}/${build.name}/${local.Config.ConfigFiles[0].source}" source = "${path.cwd}/templates/conf/${build.name}/${local.Config.ConfigFiles[0].source}" } // Copy configuration values on the image provisioner "file" { destination = "${local.builder_config.ValueDir}/${build.name}/values.json" content = "${jsonencode(local.Config)}" } post-processor "shell-local" { name = "publish" inline = [ "/bin/sh ${path.cwd}/post-processors/sparsify.sh ${var.output_dir}/${var.version}/provisionned/${build.name} ${var.image_version}", "ruby ${path.cwd}/tools/one-templates -t image -T ${path.cwd}/templates/one/image/common.tpl -n ${local.output_name}-${var.version}-${build.name} -c '${build.name} base image' --image-file ${var.output_dir}/${var.version}/provisionned/${build.name}/${local.output_name}-${var.version}-${build.name}.img", "ruby ${path.cwd}/tools/one-templates -t vm -T ${path.cwd}/templates/one/vm/${build.name}.xml -n ${local.output_name}-${var.version}-${build.name} --image-name ${local.output_name}-${var.version}-${build.name}", ] } }