adding more flavors and nuo recipes
This commit is contained in:
97
recipes/alpine/kind.pkr.hcl
Normal file
97
recipes/alpine/kind.pkr.hcl
Normal file
@ -0,0 +1,97 @@
|
||||
#Flavour kind
|
||||
build {
|
||||
name = "kind"
|
||||
description = <<EOF
|
||||
This builder builds a QEMU image from the base build output. The goal here is to install ${local.Kind.Name}
|
||||
with it's provisionning.
|
||||
EOF
|
||||
|
||||
source "source.qemu.nuo" {
|
||||
output_directory = "${var.output_dir}/${var.version}/provisionned/${local.Kind.Name}"
|
||||
vm_name = "${local.output_name}-${var.version}-${local.Kind.Name}.img"
|
||||
iso_url = "${var.output_dir}/${var.version}/base/${local.output_name}-${var.version}.img"
|
||||
iso_checksum = "none"
|
||||
disk_size = 20480
|
||||
disk_image = true
|
||||
boot_command = [ "<enter><enter><wait>" ]
|
||||
ssh_clear_authorized_keys = true
|
||||
}
|
||||
|
||||
source "source.vmware-vmx.nuo" {
|
||||
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"
|
||||
boot_command = [ "<enter><enter><wait>" ]
|
||||
ssh_clear_authorized_keys = true
|
||||
vmx_data_post = {
|
||||
"memsize" = "8192",
|
||||
"numvcpus" = "4",
|
||||
}
|
||||
}
|
||||
|
||||
// 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.Kind)}"
|
||||
}
|
||||
|
||||
// Generate default configuration for kind
|
||||
provisioner "shell" {
|
||||
max_retries = 3
|
||||
inline = [ "sh -cx '/usr/local/bin/btr -c ${local.builder_config.ValueDir}/ -t ${local.builder_config.TemplateDir}'" ]
|
||||
}
|
||||
|
||||
// Complete kind install
|
||||
provisioner "shell" {
|
||||
expect_disconnect = true
|
||||
max_retries = 6
|
||||
script = "${local.locations.provisionning}/${build.name}.sh"
|
||||
}
|
||||
|
||||
// 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'"
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
provisioner "shell" {
|
||||
inline = [
|
||||
"service docker start",
|
||||
"service containerd start",
|
||||
"sleep 5",
|
||||
"kubeadm config images pull" ]
|
||||
}
|
||||
}
|
41
recipes/alpine/locals.kind.pkr.hcl
Normal file
41
recipes/alpine/locals.kind.pkr.hcl
Normal file
@ -0,0 +1,41 @@
|
||||
locals {
|
||||
// Definition of the Kubernetes service (templater compatible)
|
||||
ServiceKubernetes = {
|
||||
ConfigFiles = []
|
||||
Repositories = {}
|
||||
Packages = {
|
||||
kubeadm = {
|
||||
name = "kind"
|
||||
action = "install"
|
||||
}
|
||||
kubectl = {
|
||||
name = "kubectl"
|
||||
action = "install"
|
||||
}
|
||||
}
|
||||
Vars = {}
|
||||
Users = {}
|
||||
Daemons = {
|
||||
ntpd = {
|
||||
name = "ntpd"
|
||||
type = "auto"
|
||||
enabled = true
|
||||
}
|
||||
local = {
|
||||
name = "local"
|
||||
type = "auto"
|
||||
enabled = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Definition of the Kubernetes full configuration (with all the services)
|
||||
Kind = {
|
||||
Name = "kind"
|
||||
Globals = local.Globals
|
||||
Services = {
|
||||
Docker = local.ServiceDocker
|
||||
Kubernetes = local.ServiceKubernetes
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
#set -xeo pipefail
|
||||
|
||||
# Run the installer
|
||||
yes | setup-alpine -e -f install.conf
|
||||
yes | setup-alpine -e -f /root/install.conf
|
||||
|
||||
# Copy ssh keys
|
||||
echo "Copy packer ssh key"
|
||||
|
0
recipes/alpine/provisionning/conf/kind/.flag
Normal file
0
recipes/alpine/provisionning/conf/kind/.flag
Normal file
26
recipes/alpine/templates/conf/cloud-init/user-data
Normal file
26
recipes/alpine/templates/conf/cloud-init/user-data
Normal file
@ -0,0 +1,26 @@
|
||||
#cloud-config
|
||||
ssh_pwauth: True
|
||||
user: ${user}
|
||||
password: ${password}
|
||||
chpasswd:
|
||||
expire: False
|
||||
ssh_authorized_keys:
|
||||
%{ for sk in ssh_keys ~}
|
||||
- ${sk}
|
||||
%{ endfor ~}
|
||||
%{ if write_files ~}
|
||||
write_files:
|
||||
%{ for fl in write_files ~}
|
||||
- path: ${fl.path}
|
||||
owner: ${fl.owner}:${fl.group}
|
||||
permissions: 0o${fl.permissions}
|
||||
defer: true
|
||||
content: ${fl.content}
|
||||
%{ endfor ~}
|
||||
%{if runcmd ~}
|
||||
# Work around network interface down after boot
|
||||
runcmd:
|
||||
%{ for cmd in runcmd ~}
|
||||
- ${cmd}
|
||||
%{ endfor ~}
|
||||
%{ endif ~}
|
Reference in New Issue
Block a user