Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

x86 compatibility #5

Merged
merged 1 commit into from
May 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions packer/variables.pkrvars.hcl
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
consul_version = "enterprise-1.18.2"
nomad_version = "enterprise-1.7.7"
consul_version = "1.18"
nomad_version = "1.7"
92 changes: 92 additions & 0 deletions packer/x86_64-hashibox.pkr.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
packer {
required_plugins {
qemu = {
version = ">= 1.1.0"
source = "github.com/hashicorp/qemu"
}
}
}

variable "consul_version" {
type = string
default = "1.18"
description = "Consul version to install"
}

variable "nomad_version" {
type = string
default = "1.7"
description = "Nomad version to install"
}

variable "fedora_iso_url" {
type = string
default = "https://fedora.mirror.digitalpacific.com.au/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2"
description = "Fedora Cloud Image URL - qcow2 format"
}

variable "fedora_iso_checksum" {
type = string
default = "file:https://fedora.mirror.digitalpacific.com.au/linux/releases/40/Cloud/x86_64/images/Fedora-Cloud-40-1.14-x86_64-CHECKSUM"
description = "Checksum in the packer format of the cloud image"
}

source "qemu" "hashibox" {
iso_url = "${var.fedora_iso_url}"
iso_checksum = "${var.fedora_iso_checksum}"

headless = true

disk_compression = true
disk_size = "5G"
disk_interface = "virtio"
disk_image = true

format = "qcow2"
vm_name = "c-${var.consul_version}-n-${var.nomad_version}.qcow2"
boot_command = []
net_device = "virtio-net"

output_directory = ".artifacts/qemu/c-${var.consul_version}-n-${var.nomad_version}"

accelerator = "hvf"

cpus = 8
memory = 5120


qemuargs = [
["-cdrom", "userdata/cidata.iso"],
["-monitor", "none"],
["-no-user-config"]
]

communicator = "ssh"
shutdown_command = "echo fedora | sudo -S shutdown -P now"
ssh_password = "fedora"
ssh_username = "fedora"
ssh_timeout = "10m"
}


build {
sources = ["source.qemu.hashibox"]

provisioner "shell" {
environment_vars = [
"CONSUL_VERSION=${var.consul_version}",
"NOMAD_VERSION=${var.nomad_version}"
]
inline = [
"sudo dnf clean all",
"sudo dnf install -y unzip wget",
"sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo",
"sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin",

"sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/fedora/hashicorp.repo",
"sudo dnf install -y consul-$CONSUL_VERSION* nomad-$NOMAD_VERSION* containernetworking-plugins",

"sudo systemctl disable docker consul nomad"
]
}
}
83 changes: 83 additions & 0 deletions scenarios/nomad-only-quickstart/hashibox.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
images:
# Try to use a local image first.
- location: ~/artifacts/qemu/c-1.18-n-1.7.7/c-1.18-n-1.7.7.qcow2

mounts: []
containerd:
system: false
user: false
provision:
- mode: system # configure Nomad
script: |
#!/bin/bash
function setConfig {
local mode=$1
local cluster=$2

# Set the config files accordingly
if [[ $mode == "server" ]]; then
cat <<-EOF > /etc/nomad.d/nomad.hcl
data_dir = "/opt/nomad/data"
bind_addr = "0.0.0.0"

server {
#license_path = "/etc/nomad.d/license.hclic"
enabled = true
bootstrap_expect = 1

server_join {
retry_join = ["lima-$cluster-srv-01.internal"]
}
}
datacenter = "$cluster"

client {
enabled = true
servers = ["lima-$cluster-srv-01.internal"]
}
EOF

elif [[ $mode == "client" ]]; then
cat <<-EOF > /etc/nomad.d/nomad.hcl
data_dir = "/opt/nomad/data"
bind_addr = "0.0.0.0"
datacenter = "$cluster"

client {
enabled = true
servers = ["lima-$cluster-srv-01.internal"]
}
EOF
else
echo "Invalid mode for setConfig"
fi
}


# Check if the environment variable 'MODE' is set
if [[ -n $MODE ]]; then
echo "MODE is set to: $MODE"
else
echo "MODE is not set."
fi

# Check if the environment variable 'CLUSTER' is set
if [[ -n $CLUSTER ]]; then
echo "CLUSTER is set to: $CLUSTER"
else
echo "CLUSTER is not set."
fi

setConfig $MODE $CLUSTER
- mode:
script: |
systemctl enable --now docker
systemctl enable --now nomad
- mode: user
script: |
#!/bin/sh
nomad -autocomplete-install
networks:
- lima: user-v2
vmType: qemu