Ctrl K
ComunidadGuías…

metal/Makefile

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
.POSIX:

WORKON_HOME ?= .direnv
PYTHON_VERSION := $(shell python --version | cut -d " " -f 2 | awk -F. '{print $$1"."$$2}')
VENV_BASE ?= $(WORKON_HOME)/python-$(PYTHON_VERSION)
PYTHON := ${VENV_BASE}/bin/python3
PYTHON_BIN_DIR := ${VENV_BASE}/bin

SSH_KEY_FILE ?= ~/.ssh/id_ed25519
ANSIBLE_EXTRA_ARGS ?=

default: prepare cluster

$(SSH_KEY_FILE):
	ssh-keygen -t ed25519 -f "$@"

.PHONY: venv
venv:
	@if [ ! -d "$(VENV_BASE)" ]; then \
		python3 -m venv $(VENV_BASE); \
	fi

.PHONY: requirements
requirements:
requirements: venv
	@echo Install requirements
	@${PYTHON_BIN_DIR}/pip install -r requirements.txt > /dev/null

# --ignore-errors: roles/geerlingguy.ntp is gitignored and galaxy-installed. When the
# directory already exists without .galaxy_install_info, galaxy refuses to replace it
# and exits 1, which would break every target that depends on requirements-ansible.
# Never pass --force here.
.PHONY: requirements-ansible
requirements-ansible:
requirements-ansible: requirements
	@echo Install ansible-galaxy requirements
	@${PYTHON_BIN_DIR}/ansible-galaxy install -r requirements.yml --ignore-errors > /dev/null
	@${PYTHON_BIN_DIR}/ansible-galaxy collection install -r requirements.yml > /dev/null

.PHONY: first-boot
first-boot:
first-boot: $(SSH_KEY_FILE) requirements-ansible
	${PYTHON_BIN_DIR}/ansible-playbook playbooks/install/prepare.yml \
		-e prepare_additional_disks_force_format=true \
		-e ansible_user=root \
		--ask-pass \
		$(ANSIBLE_EXTRA_ARGS) \
		--limit 'arm'
	${PYTHON_BIN_DIR}/ansible-playbook playbooks/install/prepare.yml \
		-e prepare_additional_disks_force_format=true \
		$(ANSIBLE_EXTRA_ARGS) \
		--limit 'all:!arm'

.PHONY: prepare
prepare:
prepare: $(SSH_KEY_FILE) requirements-ansible
	${PYTHON_BIN_DIR}/ansible-playbook \
		$(ANSIBLE_EXTRA_ARGS) \
		playbooks/install/prepare.yml

.PHONY: cluster
cluster:
cluster: $(SSH_KEY_FILE) requirements-ansible
	${PYTHON_BIN_DIR}/ansible-playbook \
		$(ANSIBLE_EXTRA_ARGS) \
		playbooks/install/cluster.yml

.PHONY: uninstall-k3s
uninstall-k3s:
uninstall-k3s: $(SSH_KEY_FILE) requirements-ansible
	${PYTHON_BIN_DIR}/ansible-playbook \
		$(ANSIBLE_EXTRA_ARGS) \
		playbooks/uninstall/k3s.yml

.PHONY: uninstall-longhorn
uninstall-longhorn:
uninstall-longhorn: $(SSH_KEY_FILE) requirements-ansible
	${PYTHON_BIN_DIR}/ansible-playbook \
		$(ANSIBLE_EXTRA_ARGS) \
		playbooks/uninstall/longhorn.yml

.PHONY: console
console:
console: $(SSH_KEY_FILE) requirements
	${PYTHON_BIN_DIR}/ansible-console \
		$(ANSIBLE_EXTRA_ARGS) \
		--become