Personal infrastructure project written in Ansible
Go to file
Kris Lamoureux 533dd40722
Upgrade Nextcloud setup to use compose files
- Integrated MariaDB role into Dockerbox configuration
- Moved proxy role to the end to avoid early endpoint activation
- Temporarily disabled select roles for future re-evaluation
- Introduced flush_handlers task for early MariaDB restart
- Moved a few Nextcloud tasks to handlers
- Configured Nextcloud to utilize the host's MariaDB instance
- Enhanced overall code linting quality
2024-04-21 21:45:33 -04:00
.github/workflows Limit Github actions to specific branches 2023-07-20 00:33:42 -04:00
dev Upgrade Nextcloud setup to use compose files 2024-04-21 21:45:33 -04:00
playbooks Introduce forward-ssh.sh method & reorganize 2023-09-15 23:46:45 -04:00
roles Upgrade Nextcloud setup to use compose files 2024-04-21 21:45:33 -04:00
scratch Add shared folder for external project development 2021-07-16 18:48:46 -04:00
.gitignore Update Vagrantfile to use external settings 2023-08-21 18:46:47 -04:00
ansible.cfg Add Makefile, roles_path, and SSH tunnel variable 2023-09-26 21:14:06 -04:00
forward-ssh.sh Prevent running 'vagrant ssh' as root 2024-03-04 23:42:40 -05:00
Jenkinsfile Expand options to pass Ansible playbook 2021-04-22 21:47:40 -04:00
LICENSE Add license file 2020-06-30 21:01:05 -04:00
Makefile Add Makefile, roles_path, and SSH tunnel variable 2023-09-26 21:14:06 -04:00
README.md Update README.md 2023-11-18 17:37:27 -05:00
Vagrantfile Add external compose support in the docker role 2023-10-09 23:47:49 -04:00

Homelab

This project is my personal IT homelab initiative for self-hosting and exploring Free and Open Source Software (FOSS) infrastructure. As a technology enthusiast and professional, this project is primarily a practical tool for hosting services. It serves as a playground for engaging with systems technology in functional, intriguing, and gratifying ways. Self-hosting empowers individuals to govern their digital space, ensuring that their online environments reflect personal ethics rather than centralized entities' opaque policies.

Built on Debian Stable, this project utilizes Ansible and Vagrant, providing relatively easy-to-use reproducible ephemeral environments to test infrastructure automation before pushing to live systems.

Quick Start

To configure a local virtual machine for testing, follow these simple steps.

Installation

  1. Clone this repository

    git clone https://git.krislamo.org/kris/homelab
    

    Optionally clone from the GitHub mirror instead:

    git clone https://github.com/krislamo/homelab
    
  2. Set the PLAYBOOK environmental variable to a development playbook name in the dev/ directory

    To list available options in the dev/ directory and choose a suitable PLAYBOOK, run:

    ls dev/*.yml | xargs -n 1 basename -s .yml
    

    Export the PLAYBOOK variable

    export PLAYBOOK=dockerbox
    
  3. Clean up any previous provision and build the VM

    make clean && make
    

Vagrant Settings

The Vagrantfile configures the environment based on settings from .vagrant.yml, with default values including:

  • PLAYBOOK: default
    • Runs a default playbook that does nothing.
    • You can set this by an environmental variable with the same name.
  • VAGRANT_BOX: debian/bookworm64
    • Current Debian Stable codename
  • VAGRANT_CPUS: 2
    • Threads or cores per node, depending on CPU architecture
  • VAGRANT_MEM: 2048
    • Specifies the amount of memory (in MB) allocated
  • SSH_FORWARD: false
    • Enable this if you need to forward SSH agents to the Vagrant machine

Copyright (C) 2019-2023 Kris Lamoureux

License: GPL v3

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.