#Flavour kubernetes build { name = "kubernetes" description = <" ] ssh_clear_authorized_keys = true } // Install templater and bootstraper provisioner "shell" { script = "${local.locations.provisionning}/templater-install.sh" } // 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.locations.templates}/conf/${build.name}/" } // Copy configuration values on the image provisioner "file" { destination = "${local.builder_config.ValueDir}/${build.name}.json" content = "${jsonencode(local.Kubernetes)}" } // Copy Sharemetrics script provisioner "file" { destination = "/etc/local.d/sharemetrics.start" source = "${local.locations.provisionning}/conf/${build.name}/sharemetrics.start" } provisioner "file" { destination = "/etc/local.d/initkubernetes.start" source = "${local.locations.provisionning}/conf/${build.name}/initkubernetes.start" } provisioner "shell" { inline = [ "chmod +x /etc/local.d/sharemetrics.start", "chmod +x /etc/local.d/initkubernetes.start" ] } // Generate default configuration for kubernetes provisioner "shell" { max_retries = 3 inline = [ "sh -cx '/usr/local/bin/btr -c ${local.builder_config.ValueDir}/ -t ${local.builder_config.TemplateDir}'" ] } // Complete kubernetes install provisioner "shell" { expect_disconnect = true max_retries = 6 script = "${local.locations.provisionning}/${build.name}.sh" } // Install OpenNebula context tool provisioner "shell" { script = "${local.locations.provisionning}/one-context.sh" } // Deploy the opennebula context script to manage configuration provisioner "file" { destination = "/etc/one-context.d/net-96-templater" source = "${local.locations.provisionning}/conf/one-context/net-96-templater" } provisioner "shell" { inline = [ "chmod +x /etc/one-context.d/net-96-templater" ] } provisioner "shell" { inline = [ "service docker start", "service containerd start", "sleep 5", "kubeadm config images pull" ] } post-processor "shell-local" { inline = [ "/bin/sh ${path.cwd}/post-processors/sparsify.sh ${var.output_dir}/${var.version}/provisionned/${local.Kubernetes.Name} ${var.image_version}", "ruby ${local.locations.tools}/one-templates -t image -m 640 -T ${local.locations.templates}/one/image/common.tpl -n ${local.output_name}-${var.version}-${local.Kubernetes.Name} -c '${local.Kubernetes.Name} base image' --image-file ${var.output_dir}/${var.version}/provisionned/${local.Kubernetes.Name}/${local.output_name}-${var.version}-${local.Kubernetes.Name}.img", "ruby ${local.locations.tools}/one-templates -t vm -m 640 -T ${local.locations.templates}/one/vm/kubeleader.xml -n ${local.output_name}-${var.version}-${local.Kubernetes.Name}Leader --image-name ${local.output_name}-${var.version}-${local.Kubernetes.Name}", "ruby ${local.locations.tools}/one-templates -t vm -m 640 -T ${local.locations.templates}/one/vm/kubemaster.xml -n ${local.output_name}-${var.version}-${local.Kubernetes.Name}Master --image-name ${local.output_name}-${var.version}-${local.Kubernetes.Name}", "ruby ${local.locations.tools}/one-templates -t vm -m 640 -T ${local.locations.templates}/one/vm/kubeworker.xml -n ${local.output_name}-${var.version}-${local.Kubernetes.Name}Worker --image-name ${local.output_name}-${var.version}-${local.Kubernetes.Name}", "ruby ${local.locations.tools}/one-templates -t service -m 640 -T ${local.locations.templates}/one/service/${build.name}-cluster.json -n ${build.name}-cluster-${local.output_name}-${var.version} --vm-name ${local.output_name}-${var.version}-${local.Kubernetes.Name}", ] } }