Skip to content

lisenet/homelab-ansible

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5e16c6f · Feb 24, 2025
Nov 25, 2023
Oct 3, 2023
May 10, 2024
Feb 24, 2025
May 11, 2024
Mar 15, 2022
Aug 30, 2023
Mar 17, 2022
Feb 24, 2025
Nov 12, 2022
Oct 22, 2023
Feb 24, 2025

Repository files navigation

homelab-ansible

Ansible infrastructure for my homelab.

version python license last commit commit activity issues pull_requests_closed

Version Table

Software versions used by this repository:

Package Version
ansible 11.2.0
ansible-core 2.18.2
ansible-lint 25.1.3
python 3.11

Install Ansible

This repository uses Ansible version that requires Python 3.11.

Install required packages.

Use apt for Debian based systems:

sudo apt install -y python3.11 python3.11-pip

Use yum for Red Hat based systems:

sudo yum install -y python3.11 python3.11-pip python3.11-netaddr

Use pip in your selected Python environment to install the Ansible package of your choice for the current user:

TMPDIR="${HOME}/tmp" python3.11 -m pip install --user ansible==11.2.0

Optional: Ansible-lint and pre-commit

Ansible Lint is a command-line tool for linting playbooks, roles and collection.

Note that ansible-core 2.12+ was made as a direct dependency with Ansible Lint release v6.0.0. This means that when you install the ansible-lint package >=v6.0.0, it also installs ansible-core and ansible packages as dependencies. Package yamllint is installed as a dependency as well.

Install packages:

python3.11 -m pip install --user ansible-lint==25.1.3

To use Ansible-lint with pre-commit, use the following command to create a pre-commit configuration file:

cat <<EOF > .pre-commit-config.yaml
- repo: https://github.com/ansible/ansible-lint
  rev: v25.11.3
  hooks:
    - id: ansible-lint
      files: \.(yaml|yml)$
EOF

Install pre-commit package:

python3.11 -m pip install --user pre-commit==3.3.3

Enable pre-commit for the git repository:

pre-commit install

Passwordless SSH Authentication

Servers built with Kickstart/Packer have root SSH keys pre-configured. If that is not the case, then see below.

Configure passwordless root SSH authentication from the device where Ansible is installed (e.g. your laptop):

ssh-copy-id -f -i ./roles/hl.users/files/id_rsa_root.pub root@10.11.1.XX

Set Ansible User Password

Create a file vault.key to store your Ansible Vault secret (see ansible.cfg for vault_password_file). Use Ansible Vault to create an encrypted file ./roles/hl.users/defaults/secure.yml to store your user password:

ansible-vault create ./roles/hl.users/defaults/secure.yml

The variable for user password is user_password.

Configuration with Ansible

Configure PXE Hosts

ansible-playbook ./playbooks/configure-pxe-hosts.yml --extra-vars "download_pxe_boot_media=true download_packer_media=true"

Configure KVM Hosts

ansible-playbook ./playbooks/configure-kvm-hosts.yml

Configure Admin Hosts

ansible-playbook ./playbooks/configure-admin-hosts.yml

Configure Kubernetes Hosts

Prepare Kubernetes hosts for cluster deployment:

ansible-playbook ./playbooks/configure-k8s-hosts.yml

Configure Kubernetes cluster for the first time:

ansible-playbook ./playbooks/configure-k8s-cluster.yml

Configure OpenVAS Hosts

ansible-playbook ./playbooks/configure-openvas-hosts.yml

Configure Dell Hosts

ansible-playbook ./playbooks/configure-dell-hosts.yml

Optional: Configure Hosts File

This is optional because of the local DNS server:

ansible-playbook ./playbooks/configure-hostsfile.yml

Optional: Configure New Relic Agent

ansible-playbook ./playbooks/configure-newrelic-hosts.yml

Ansible-configured PXE Boot Server

Note that user password for PXE boot Kickstart files is set to packer.

Homelab PXE Boot Menu

Homelab Network Diagram

Homelab Network Diagram