wip: alpine 3.16

This commit is contained in:
Yann Autissier 2022-10-12 00:50:02 +00:00
parent b665296f2c
commit 54bf6bbbe0
19 changed files with 246 additions and 170 deletions

View File

@ -6,7 +6,7 @@
gather_facts: false
pre_tasks:
- name: raw - install ansible requirements for alpine linux
raw: "[ -f /etc/alpine-release ] && /sbin/apk update && { which python3 >/dev/null 2>&1 || /sbin/apk add python3; } && { which sudo >/dev/null 2>&1 || /sbin/apk add sudo; } && { /bin/tar --version 2>/dev/null |grep busybox >/dev/null && /sbin/apk add tar; } && { ls /usr/lib/ssh/sftp-server >/dev/null 2>&1 || /sbin/apk add openssh-sftp-server; } || true"
raw: "[ -f /etc/alpine-release ] && /sbin/apk update && { which python3 >/dev/null 2>&1 || /sbin/apk add python3; } && { /bin/tar --version 2>/dev/null |grep busybox >/dev/null && /sbin/apk add tar; } && { ls /usr/lib/ssh/sftp-server >/dev/null 2>&1 || /sbin/apk add openssh-sftp-server; } || true"
tags:
- bootstrap

View File

@ -4,13 +4,13 @@ ARG DOCKER_BUILD_DIR
ARG COMPOSE_REMOTE=https://github.com/docker/compose
ARG COMPOSE_VERSION=2.5.0
ARG OPERATING_SYSTEM=Linux
ARG PROCESSOR_ARCHITECTURE=x86_64
ARG SYSTEM=Linux
ARG MACHINE=x86_64
RUN apk update \
&& apk add --no-cache ca-certificates \
&& OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${PROCESSOR_ARCHITECTURE})"; \
&& OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${MACHINE})"; \
wget -qO /usr/bin/docker-compose ${COMPOSE_REMOTE}/releases/download/v${COMPOSE_VERSION}/docker-compose-${OS}-${ARCH} \
&& chmod +x /usr/bin/docker-compose

View File

@ -4,13 +4,13 @@ ARG DOCKER_BUILD_DIR
ARG FABIO_REMOTE=https://github.com/fabiolb/fabio
ARG FABIO_VERSION=1.6.0
ARG OPERATING_SYSTEM=Linux
ARG PROCESSOR_ARCHITECTURE=x86_64
ARG SYSTEM=Linux
ARG MACHINE=x86_64
RUN apk update \
&& apk add --no-cache ca-certificates \
&& OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${PROCESSOR_ARCHITECTURE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
&& OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${MACHINE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
wget -qO /usr/bin/fabio ${FABIO_REMOTE}/releases/download/v${FABIO_VERSION}/fabio-${FABIO_VERSION}-${OS}_${ARCH} \
&& chmod +x /usr/bin/fabio

View File

@ -3,8 +3,8 @@ LABEL maintainer aynic.os <support+docker@asycn.io>
ARG DOCKER_BUILD_DIR
ARG GIT_AUTHOR_NAME
ARG GIT_AUTHOR_EMAIL
ARG OPERATING_SYSTEM=Linux
ARG PROCESSOR_ARCHITECTURE=x86_64
ARG SYSTEM=Linux
ARG MACHINE=x86_64
ENV GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
ENV GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
@ -42,11 +42,11 @@ RUN git clone https://github.com/ingydotnet/git-subrepo \
ARG IPFS_VERSION=0.14.0
RUN { OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${PROCESSOR_ARCHITECTURE})"; \
RUN { OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${MACHINE})"; \
wget -qO - https://github.com/koalaman/shellcheck/releases/download/stable/shellcheck-stable.${OS}.${ARCH}.tar.xz \
|tar --strip-components 1 -C /usr/local/bin -xJf - shellcheck-stable/shellcheck; } \
&& { ARCH="$(echo ${PROCESSOR_ARCHITECTURE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
&& { ARCH="$(echo ${MACHINE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
wget -qO - https://github.com/ipfs/kubo/releases/download/v${IPFS_VERSION}/kubo_v${IPFS_VERSION}_${OS}-${ARCH}.tar.gz \
|tar --strip-components 1 -C /usr/local/bin -xzf - kubo/ipfs; } \
&& mkdir -p /usr/local/lib/shellspec \

View File

@ -2,9 +2,12 @@ FROM alpine:latest as dist
LABEL maintainer aynic.os <support+docker@asycn.io>
ARG DOCKER_BUILD_DIR
ARG ARCH="$(uname -m |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"
ARG OS="$(uname -o |awk '{print tolower($0)}')"
ARG PACKER_VERSION=1.6.6
ARG MACHINE="$(uname -m)"
ARG SYSTEM="$(uname -s)"
ARG ARCH="$(echo ${MACHINE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"
ARG OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"
ARG PACKER_VERSION=1.8.3
RUN apk --no-cache add \
ansible \
@ -17,13 +20,13 @@ RUN apk --no-cache add \
socat \
wget
ADD https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_linux_amd64.zip ./
ADD https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_${OS}_${ARCH}.zip ./
ADD https://releases.hashicorp.com/packer/${PACKER_VERSION}/packer_${PACKER_VERSION}_SHA256SUMS ./
RUN sed -i '/.*linux_amd64.zip/!d' packer_${PACKER_VERSION}_SHA256SUMS
RUN sha256sum -cs packer_${PACKER_VERSION}_SHA256SUMS\
&& unzip packer_${PACKER_VERSION}_linux_amd64.zip -d /bin
RUN rm -f packer_${PACKER_VERSION}_linux_amd64.zip
RUN sed -i '/.*'"${OS}"'_'"${ARCH}"'.zip/!d' packer_${PACKER_VERSION}_SHA256SUMS \
&& sha256sum -cs packer_${PACKER_VERSION}_SHA256SUMS \
&& unzip "packer_${PACKER_VERSION}_${OS}_${ARCH}.zip" -d /bin \
&& rm -f "packer_${PACKER_VERSION}_${OS}_${ARCH}.zip"
ENTRYPOINT ["/bin/packer"]

View File

@ -3,8 +3,8 @@ LABEL maintainer aynic.os <support+docker@asycn.io>
ARG DOCKER_BUILD_DIR
ARG GIT_AUTHOR_NAME
ARG GIT_AUTHOR_EMAIL
ARG OPERATING_SYSTEM=Linux
ARG PROCESSOR_ARCHITECTURE=x86_64
ARG SYSTEM=Linux
ARG MACHINE=x86_64
ENV GIT_AUTHOR_NAME=${GIT_AUTHOR_NAME}
ENV GIT_AUTHOR_EMAIL=${GIT_AUTHOR_EMAIL}
@ -41,12 +41,12 @@ RUN chmod +r /include.sh \
ARG IPFS_VERSION=0.14.0
RUN { OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${PROCESSOR_ARCHITECTURE})"; \
RUN { OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${MACHINE})"; \
wget -qO - https://github.com/koalaman/shellcheck/releases/download/stable/shellcheck-stable.${OS}.${ARCH}.tar.xz \
|tar --strip-components 1 -C /usr/local/bin -xJf - shellcheck-stable/shellcheck; } \
&& { OS="$(echo ${OPERATING_SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${PROCESSOR_ARCHITECTURE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
&& { OS="$(echo ${SYSTEM} |awk '{print tolower($0)}')"; \
ARCH="$(echo ${MACHINE} |awk '/x86_64/ {print "amd64"}; /aarch64/ {print "arm64"}')"; \
wget -qO - https://github.com/ipfs/kubo/releases/download/v${IPFS_VERSION}/kubo_v${IPFS_VERSION}_${OS}-${ARCH}.tar.gz \
|tar --strip-components 1 -C /usr/local/bin -xzf - kubo/ipfs; } \
&& mkdir -p /usr/local/lib/shellspec \

View File

@ -26,7 +26,7 @@ DOCKER_BUILD_NO_CACHE ?= false
DOCKER_BUILD_TARGET ?= $(if $(filter $(ENV),$(DOCKER_BUILD_TARGETS)),$(ENV),$(DOCKER_BUILD_TARGET_DEFAULT))
DOCKER_BUILD_TARGET_DEFAULT ?= master
DOCKER_BUILD_TARGETS ?= $(ENV_DEPLOY)
DOCKER_BUILD_VARS ?= APP BRANCH COMPOSE_VERSION DOCKER_GID DOCKER_REPOSITORY GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME OPERATING_SYSTEM PROCESSOR_ARCHITECTURE SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PRIVATE_IP_RANGE SSH_PUBLIC_HOST_KEYS SSH_REMOTE_HOSTS UID USER VERSION
DOCKER_BUILD_VARS ?= APP BRANCH COMPOSE_VERSION DOCKER_GID DOCKER_REPOSITORY GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME SYSTEM MACHINE SSH_BASTION_HOSTNAME SSH_BASTION_USERNAME SSH_PRIVATE_IP_RANGE SSH_PUBLIC_HOST_KEYS SSH_REMOTE_HOSTS UID USER VERSION
DOCKER_COMPOSE ?= $(if $(DOCKER_RUN),docker/compose:$(COMPOSE_VERSION),$(or $(shell docker compose >/dev/null 2>&1 && printf 'docker compose\n'),docker-compose)) $(COMPOSE_ARGS)
DOCKER_COMPOSE_DOWN_OPTIONS ?=
DOCKER_COMPOSE_RUN_OPTIONS ?= --rm

View File

@ -14,11 +14,11 @@ ifeq ($(filter 0 $(DOCKER_GID),$(GIDS)),)
endif
endif
# target setup-nfsd: Call setup-nfsd-osx if SETUP_NFSD=true and OPERATING_SYSTEM=Darwin
# target setup-nfsd: Call setup-nfsd-osx if SETUP_NFSD=true and SYSTEM=Darwin
.PHONY: setup-nfsd
setup-nfsd:
ifeq ($(SETUP_NFSD),true)
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
$(call setup-nfsd-osx)
endif
endif

View File

@ -26,7 +26,7 @@ USER_DOCKER_REPOSITORY ?= $(subst -,/,$(subst _,/,$(USER_COMPOSE_PROJEC
USER_DOCKER_VOLUME ?= $(USER_COMPOSE_PROJECT_NAME)_myos
# https://github.com/docker/libnetwork/pull/2348
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
DOCKER_HOST_IFACE ?= $(shell docker run --rm -it --net=host alpine /sbin/ip -4 route list match 0/0 2>/dev/null |awk '{print $$5}' |awk '!seen[$$0]++' |head -1)
DOCKER_HOST_INET4 ?= $(shell docker run --rm -it --net=host alpine /sbin/ip -4 addr show $(DOCKER_HOST_IFACE) 2>/dev/null |awk '$$1 == "inet" {sub(/\/.*/,"",$$2); print $$2}' |head -1)
DOCKER_INTERNAL_DOCKER_GATEWAY ?= $(shell docker run --rm -it alpine getent hosts gateway.docker.internal 2>/dev/null |awk '{print $$1}' |head -1)

View File

@ -53,7 +53,7 @@ ENV_ARGS ?= $(env_args)
ENV_FILE ?= $(wildcard $(CONFIG)/$(ENV)/$(APP)/.env .env)
ENV_LIST ?= $(shell ls .git/refs/heads/ 2>/dev/null)
ENV_RESET ?= false
ENV_VARS ?= APP BRANCH DOMAIN ENV HOME HOSTNAME GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME GROUP MONOREPO MONOREPO_DIR OPERATING_SYSTEM PROCESSOR_ARCHITECTURE TAG UID USER VERSION
ENV_VARS ?= APP BRANCH DOMAIN ENV HOME HOSTNAME GID GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME GROUP MACHINE MONOREPO MONOREPO_DIR SYSTEM TAG UID USER VERSION
GID ?= $(shell id -g 2>/dev/null)
GIDS ?= $(shell id -G 2>/dev/null)
GIT_AUTHOR_EMAIL ?= $(or $(shell git config user.email 2>/dev/null),$(USER)@my.os)
@ -123,15 +123,15 @@ endif
# Guess OS
ifeq ($(OSTYPE),cygwin)
OPERATING_SYSTEM := cygwin
SYSTEM := cygwin
else ifeq ($(OS),Windows_NT)
OPERATING_SYSTEM := Windows_NT
SYSTEM := Windows_NT
else
PROCESSOR_ARCHITECTURE := $(shell uname -m 2>/dev/null)
OPERATING_SYSTEM := $(shell uname -s 2>/dev/null)
SYSTEM := $(shell uname -s 2>/dev/null)
endif
MACHINE := $(shell uname -m 2>/dev/null)
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
SED_SUFFIX := ''
endif

View File

@ -24,7 +24,7 @@ config: $(APPS)
# target copy: Copy files and folders to all APPS
.PHONY: copy
copy:
$(foreach app,$(APPS),$(foreach file,$(ARGS),$(if $(wildcard $(file)),$(RUN) $(if $(filter Linux,$(OPERATING_SYSTEM)),cp -a --parents $(file) $(app)/,rsync -a $(file) $(app)/$(file)) &&)) true &&) true
$(foreach app,$(APPS),$(foreach file,$(ARGS),$(if $(wildcard $(file)),$(RUN) $(if $(filter Linux,$(SYSTEM)),cp -a --parents $(file) $(app)/,rsync -a $(file) $(app)/$(file)) &&)) true &&) true
# target deploy: Fire APPS target
.PHONY: deploy

View File

@ -1,105 +0,0 @@
{
"builders": [
{
"accelerator": "{{user `accelerator`}}",
"boot_command": [
"{{user `username`}}<enter>",
"passwd<enter>{{user `password`}}<enter>{{user `password`}}<enter>",
"ifconfig eth0 up \u0026\u0026 udhcpc -i eth0<enter>",
"apk add --repository http://dl-cdn.alpinelinux.org/alpine/v{{user `alpine_version`}}/main dropbear dropbear-openrc openssh-sftp-server<enter>",
"rc-update add dropbear<enter>",
"echo -e 'auto eth0\\niface eth0 inet dhcp' > /etc/network/interfaces<enter>",
"rc-service dropbear start<enter>",
"<wait>"
],
"boot_wait": "{{user `boot_wait`}}",
"disk_interface": "virtio",
"disk_size": "{{user `iso_size`}}",
"format": "raw",
"headless": true,
"host_port_max": "{{user `ssh_port_max`}}",
"host_port_min": "{{user `ssh_port_min`}}",
"iso_checksum": "file:http://dl-cdn.alpinelinux.org/alpine/v{{user `alpine_version`}}/releases/{{user `alpine_arch`}}/alpine-virt-{{user `alpine_release`}}-{{user `alpine_arch`}}.iso.sha256",
"iso_url": "http://dl-cdn.alpinelinux.org/alpine/v{{user `alpine_version`}}/releases/{{user `alpine_arch`}}/alpine-virt-{{user `alpine_release`}}-{{user `alpine_arch`}}.iso",
"net_device": "virtio-net",
"output_directory": "{{user `output`}}",
"qemuargs": [
[
"-device",
"virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x7"
],
[
"-object",
"rng-random,filename=/dev/urandom,id=rng0"
]
],
"shutdown_command": "/sbin/poweroff",
"ssh_file_transfer_method": "sftp",
"ssh_password": "{{user `password`}}",
"ssh_port": 22,
"ssh_timeout": "{{user `ssh_wait_timeout`}}",
"ssh_username": "{{user `username`}}",
"type": "qemu",
"vm_name": "{{user `iso_name`}}.iso",
"vnc_bind_address": "{{user `vnc_bind_address`}}",
"vnc_port_max": "{{user `vnc_port_max`}}",
"vnc_port_min": "{{user `vnc_port_min`}}"
}
],
"provisioners": [
{
"environment_vars": [
"ALPINE_VERSION={{user `alpine_version`}}",
"HOSTNAME={{user `hostname`}}"
],
"script": "packer/alpine/setup.sh",
"type": "shell"
},
{
"expect_disconnect": true,
"inline": [
"/usr/bin/eject -s",
"/sbin/reboot"
],
"type": "shell"
},
{
"extra_arguments": [
"--extra-vars",
"{{user `ansible_extra_vars`}}",
"{{user `ansible_verbose`}}"
],
"inventory_directory": "ansible/inventories",
"pause_before": "16s",
"playbook_file": "ansible/playbook.yml",
"sftp_command": "/usr/lib/ssh/sftp-server -e",
"type": "ansible",
"user": "{{user `ansible_user`}}"
}
],
"variables": {
"accelerator": "kvm",
"alpine_arch": "x86_64",
"alpine_release": "3.12.0",
"alpine_version": "3.12",
"ansible_extra_vars": "target=default",
"ansible_user": "root",
"ansible_verbose": "-v",
"boot_wait": "8s",
"hostname": "alpine",
"iso_name": "alpine-3.12.0-x86_64",
"iso_size": "1024",
"output": "build/iso",
"password": "alpine",
"qemuargs": "",
"ssh_port_max": "2222",
"ssh_port_min": "2222",
"ssh_wait_timeout": "32s",
"template": "alpine",
"username": "root",
"vnc_bind_address": "127.0.0.1",
"vnc_port_max": "5900",
"vnc_port_min": "5900"
}
}

View File

@ -0,0 +1,176 @@
variable "accelerator" {
type = string
default = "kvm"
}
variable "alpine_arch" {
type = string
default = "x86_64"
}
variable "alpine_release" {
type = string
default = "3.16.0"
}
variable "alpine_version" {
type = string
default = "3.16"
}
variable "ansible_extra_vars" {
type = string
default = "target=default"
}
variable "ansible_user" {
type = string
default = "root"
}
variable "ansible_verbose" {
type = string
default = "-v"
}
variable "boot_wait" {
type = string
default = "8s"
}
variable "hostname" {
type = string
default = "alpine"
}
variable "iso_name" {
type = string
default = "alpine-3.16.0-x86_64"
}
variable "iso_size" {
type = string
default = "1024"
}
variable "nameserver" {
type = string
default = "1.1.1.1"
}
variable "output" {
type = string
default = "build/iso"
}
variable "password" {
type = string
default = "alpine"
}
variable "pause_before" {
type = string
default = "24s"
}
variable "qemuargs" {
type = string
default = ""
}
variable "ssh_port_max" {
type = string
default = "2222"
}
variable "ssh_port_min" {
type = string
default = "2222"
}
variable "ssh_timeout" {
type = string
default = "42s"
}
variable "template" {
type = string
default = "alpine"
}
variable "username" {
type = string
default = "root"
}
variable "vnc_bind_address" {
type = string
default = "127.0.0.1"
}
variable "vnc_port_max" {
type = string
default = "5900"
}
variable "vnc_port_min" {
type = string
default = "5900"
}
source "qemu" "autogenerated_1" {
accelerator = "${var.accelerator}"
boot_command = ["${var.username}<enter>", "passwd<enter>${var.password}<enter>${var.password}<enter>", "ifconfig eth0 up && udhcpc -i eth0<enter>", "apk add --repository http://dl-cdn.alpinelinux.org/alpine/v${var.alpine_version}/main dropbear dropbear-openrc openssh-sftp-server<enter>", "rc-update add dropbear<enter>", "echo -e 'auto eth0\\niface eth0 inet dhcp' > /etc/network/interfaces<enter>", "mkdir -p /etc/dropbear<enter>", "dropbearkey -t ed25519 -f /etc/dropbear/dropbear_ed25519_host_key<enter>", "rc-service dropbear start<enter>", "<wait>"]
boot_wait = "${var.boot_wait}"
disk_interface = "virtio"
disk_size = "${var.iso_size}"
format = "raw"
headless = true
host_port_max = "${var.ssh_port_max}"
host_port_min = "${var.ssh_port_min}"
iso_checksum = "file:http://dl-cdn.alpinelinux.org/alpine/v${var.alpine_version}/releases/${var.alpine_arch}/alpine-virt-${var.alpine_release}-${var.alpine_arch}.iso.sha256"
iso_url = "http://dl-cdn.alpinelinux.org/alpine/v${var.alpine_version}/releases/${var.alpine_arch}/alpine-virt-${var.alpine_release}-${var.alpine_arch}.iso"
net_device = "virtio-net"
output_directory = "${var.output}"
qemuargs = [["-device", "virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x7"], ["-object", "rng-random,filename=/dev/urandom,id=rng0"]]
// qemuargs = ["${var.qemuargs}"]
shutdown_command = "/sbin/poweroff"
ssh_file_transfer_method = "sftp"
ssh_password = "${var.password}"
ssh_port = 22
ssh_timeout = "${var.ssh_timeout}"
ssh_username = "${var.username}"
vm_name = "${var.iso_name}.iso"
vnc_bind_address = "${var.vnc_bind_address}"
vnc_port_max = "${var.vnc_port_max}"
vnc_port_min = "${var.vnc_port_min}"
}
build {
sources = ["source.qemu.autogenerated_1"]
provisioner "shell" {
environment_vars = ["ALPINE_VERSION=${var.alpine_version}", "HOSTNAME=${var.hostname}", "NAMESERVER=${var.nameserver}"]
script = "packer/alpine/setup.sh"
}
provisioner "shell" {
expect_disconnect = true
inline = ["/usr/bin/eject -s", "/sbin/reboot"]
}
provisioner "ansible" {
// https://github.com/hashicorp/packer-plugin-ansible/issues/69
ansible_ssh_extra_args = ["-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"]
extra_arguments = ["--extra-vars", "${var.ansible_extra_vars}", "${var.ansible_verbose}"]
inventory_directory = "ansible/inventories"
pause_before = "${var.pause_before}"
playbook_file = "ansible/playbook.yml"
sftp_command = "/usr/lib/ssh/sftp-server -e"
use_proxy = "true"
use_sftp = "true"
user = "${var.ansible_user}"
}
}

View File

@ -3,11 +3,11 @@
export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
ALPINE_VERSION="${ALPINE_VERSION:-3.10}"
ALPINE_VERSION="${ALPINE_VERSION:-3.16}"
APKREPOSOPTS="http://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VERSION}/main http://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VERSION}/community"
BOOT_SIZE="32"
DISKOPTS="-s 0 -m sys /dev/vda"
DNSOPTS="-n 8.8.8.8"
DNSOPTS="-n ${NAMESERVER:-1.1.1.1}"
HOSTNAME="${HOSTNAME:-alpine}"
HOSTNAMEOPTS="-n ${HOSTNAME}"
INTERFACESOPTS="auto lo
@ -15,9 +15,6 @@ iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
"
KEYMAPOPTS="fr fr"
NTPOPTS="-c openntpd"
@ -35,7 +32,7 @@ http://dl-8.alpinelinux.org/alpine/"
/sbin/setup-hostname ${HOSTNAMEOPTS}
echo "${INTERFACESOPTS}" | /sbin/setup-interfaces -i
# /etc/init.d/networking --quiet start >/dev/null
# /sbin/setup-dns ${DNSOPTS}
/sbin/setup-dns ${DNSOPTS}
/sbin/setup-timezone ${TIMEZONEOPTS}
/sbin/setup-proxy -q ${PROXYOPTS}
/sbin/setup-apkrepos ${APKREPOSOPTS}

View File

@ -1,5 +1,5 @@
PACKER_ALPINE_ARCH ?= x86_64
PACKER_ALPINE_RELEASE ?= 3.12.0
PACKER_ALPINE_RELEASE ?= 3.16.2
PACKER_BUILD_VARS += alpine_arch alpine_release alpine_version
alpine_arch ?= $(PACKER_ALPINE_ARCH)
alpine_release ?= $(PACKER_ALPINE_RELEASE)

View File

@ -3,9 +3,9 @@ DOCKER_RUN_OPTIONS_PACKER ?= -it -p $(PACKER_SSH_PORT):$(PACKER_SSH_PORT)
ENV_VARS += PACKER_CACHE_DIR PACKER_KEY_INTERVAL PACKER_LOG
KVM_GID ?= $(call gid,kvm)
PACKER_ARCH ?= $(PACKER_ALPINE_ARCH)
PACKER_BOOT_WAIT ?= 11s
PACKER_BOOT_WAIT ?= 24s
PACKER_BUILD_ARGS ?= -on-error=cleanup $(foreach var,$(PACKER_BUILD_VARS),$(if $($(var)),-var $(var)='$($(var))'))
PACKER_BUILD_VARS += accelerator boot_wait hostname iso_name iso_size output password qemuargs ssh_wait_timeout template username
PACKER_BUILD_VARS += accelerator boot_wait hostname iso_name iso_size nameserver output password pause_before qemuargs ssh_timeout template username
PACKER_BUILD_VARS += ansible_extra_vars ansible_user ansible_verbose
PACKER_CACHE_DIR ?= build/cache
PACKER_HOSTNAME ?= $(PACKER_TEMPLATE)
@ -14,19 +14,21 @@ PACKER_ISO_FILES ?= $(wildcard build/iso/*/*/*.iso)
PACKER_ISO_FILE = $(PACKER_OUTPUT)/$(PACKER_ISO_NAME).iso
PACKER_ISO_INFO = $(PACKER_OUTPUT)/$(PACKER_ISO_NAME).nfo
PACKER_ISO_NAME = $(PACKER_TEMPLATE)-$(PACKER_RELEASE)-$(PACKER_ARCH)
PACKER_ISO_SIZE ?= 1024
PACKER_KEY_INTERVAL ?= 10ms
PACKER_ISO_SIZE ?= 2048
PACKER_KEY_INTERVAL ?= 11ms
PACKER_LOG ?= 1
PACKER_NAMESERVER ?= 1.1.1.1
PACKER_OUTPUT ?= build/iso/$(ENV)/$(PACKER_TEMPLATE)/$(PACKER_RELEASE)-$(PACKER_ARCH)
PACKER_PASSWORD ?= $(PACKER_TEMPLATE)
PACKER_PAUSE_BEFORE ?= 24s
PACKER_QEMU_ACCELERATOR ?= kvm
PACKER_QEMU_ARCH ?= $(PACKER_ARCH)
PACKER_QEMU_ARGS ?= -machine type=pc,accel=$(PACKER_QEMU_ACCELERATOR) -device virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x7 -object rng-random,filename=/dev/urandom,id=rng0
PACKER_RELEASE ?= $(PACKER_ALPINE_RELEASE)
PACKER_SSH_ADDRESS ?= $(if $(ssh_bind_address),$(ssh_bind_address),0.0.0.0)
PACKER_SSH_PORT ?= $(if $(ssh_port_max),$(ssh_port_max),2222)
PACKER_SSH_WAIT_TIMEOUT ?= 42s
PACKER_TEMPLATES ?= $(wildcard packer/*/*.json)
PACKER_SSH_TIMEOUT ?= 42s
PACKER_TEMPLATES ?= $(wildcard packer/*/*.json packer/*/*.pkr.hcl)
PACKER_TEMPLATE ?= alpine
PACKER_USERNAME ?= root
PACKER_VNC_PORT ?= $(if $(vnc_port_max),$(vnc_port_max),5900)
@ -51,8 +53,9 @@ iso_name ?= $(PACKER_ISO_NAME)
iso_size ?= $(PACKER_ISO_SIZE)
output ?= $(PACKER_OUTPUT)
password ?= $(PACKER_PASSWORD)
pause_before ?= $(PACKER_PAUSE_BEFORE)
qemuargs ?= $(call arrays_of_dquoted_args, $(PACKER_QEMU_ARGS))
ssh_wait_timeout ?= $(PACKER_SSH_WAIT_TIMEOUT)
ssh_timeout ?= $(PACKER_SSH_TIMEOUT)
template ?= $(PACKER_TEMPLATE)
username ?= $(PACKER_USERNAME)
@ -62,16 +65,17 @@ password := $(or $(shell pwgen -csy -r\' 64 1 2>/dev/null
endif
endif
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
ifneq ($(DOCKER), true)
PACKER_QEMU_ACCELERATOR := hvf
PACKER_QEMU_ARGS += -cpu host
else
PACKER_QEMU_ACCELERATOR := tcg
PACKER_QEMU_ARGS += -cpu max,vendor=GenuineIntel,vmware-cpuid-freq=on,+invtsc,+aes,+vmx
endif
else ifeq ($(OPERATING_SYSTEM),Linux)
else ifeq ($(SYSTEM),Linux)
DOCKER_RUN_OPTIONS_PACKER += $(if $(KVM_GID),--group-add $(KVM_GID)) --device /dev/kvm
else ifeq ($(OPERATING_SYSTEM),Windows_NT)
else ifeq ($(SYSTEM),Windows_NT)
PACKER_QEMU_ACCELERATOR := hax
endif
@ -90,12 +94,13 @@ endef
# function packer-build: Call packer build with arg 1, Add build infos to file PACKER_ISO_INFO
define packer-build
$(eval PACKER_TEMPLATE := $(notdir $(basename $(1))))
$(eval PACKER_TEMPLATE := $(notdir $(basename $(basename $(1)))))
echo Building $(PACKER_ISO_FILE)
$(call packer,build $(PACKER_BUILD_ARGS) $(1))
echo 'aws_id: $(ANSIBLE_AWS_ACCESS_KEY_ID)' > $(PACKER_ISO_INFO)
echo 'aws_key: $(ANSIBLE_AWS_SECRET_ACCESS_KEY)' >> $(PACKER_ISO_INFO)
echo 'aws_region: $(ANSIBLE_AWS_DEFAULT_REGION)' >> $(PACKER_ISO_INFO)
echo 'dns: $(nameserver)' >> $(PACKER_ISO_INFO)
echo 'docker_image_tag: $(ANSIBLE_DOCKER_IMAGE_TAG)' >> $(PACKER_ISO_INFO)
echo 'docker_registry: $(ANSIBLE_DOCKER_REGISTRY)' >> $(PACKER_ISO_INFO)
echo 'env: $(ENV)' >> $(PACKER_ISO_INFO)
@ -114,4 +119,4 @@ define packer-build
echo 'user: $(username)' >> $(PACKER_ISO_INFO)
endef
arrays_of_dquoted_args = $(subst $(dquote) $(dquote),$(dquote)$(comma) $(dquote),$(subst $(dquote) $(dquote)-,$(dquote) ]$(comma) [ $(dquote)-,$(patsubst %,$(dquote)%$(dquote),$1)))
arrays_of_dquoted_args = [ $(subst $(dquote) $(dquote),$(dquote)$(comma) $(dquote),$(subst $(dquote) $(dquote)-,$(dquote) ]$(comma) [ $(dquote)-,$(patsubst %,$(dquote)%$(dquote),$1))) ]

View File

@ -18,7 +18,7 @@ packer-build-templates: $(PACKER_TEMPLATES) ## Build all packer templates
# target $(PACKER_TEMPLATES): Call packer-build $@
.PHONY: $(PACKER_TEMPLATES)
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
$(PACKER_TEMPLATES): DOCKER ?= false
endif
$(PACKER_TEMPLATES):
@ -27,8 +27,8 @@ $(PACKER_TEMPLATES):
# target packer-build-%: Call packer-build with file packer/*/%.json
.PHONY: packer-build-%
packer-build-%: docker-build-packer
$(if $(wildcard packer/*/$*.json),\
$(call packer-build,$(wildcard packer/*/$*.json)))
$(if $(wildcard packer/*/$*.json packer/*/$*.pkr.hcl),\
$(call packer-build,$(firstword $(wildcard packer/*/$*.json packer/*/$*.pkr.hcl))))
# target packer-qemu: Fire packer-quemu-% for PACKER_ISO_NAME
.PHONY: packer-qemu
@ -36,7 +36,7 @@ packer-qemu: packer-qemu-$(PACKER_ISO_NAME) ## Launch iso image in qemu
# target packer-qemu-%: Call packer-qemu PACKER_OUTPUT/%.iso
.PHONY: packer-qemu-%
ifeq ($(OPERATING_SYSTEM),Darwin)
ifeq ($(SYSTEM),Darwin)
packer-qemu-%: DOCKER ?= false
endif
packer-qemu-%: docker-build-packer ## Run iso image in qemu

View File

@ -1,5 +1,5 @@
ENV_VARS += IPFS_DAEMON_ARGS IPFS_PROFILE IPFS_VERSION
IPFS_PROFILE ?= $(if $(filter-out amd64 x86_64,$(PROCESSOR_ARCHITECTURE)),lowpower,server)
IPFS_PROFILE ?= $(if $(filter-out amd64 x86_64,$(MACHINE)),lowpower,server)
IPFS_VERSION ?= 0.15.0
.PHONY: bootstrap-stack-ipfs

View File

@ -47,8 +47,8 @@ services:
args:
- DOCKER_BUILD_DIR=docker/fabio
- FABIO_VERSION=1.6.0
- OPERATING_SYSTEM=${OPERATING_SYSTEM}
- PROCESSOR_ARCHITECTURE=${PROCESSOR_ARCHITECTURE}
- SYSTEM=${SYSTEM}
- MACHINE=${MACHINE}
context: ../..
dockerfile: docker/fabio/Dockerfile
container_name: ${NODE_COMPOSE_PROJECT_NAME}-fabio