MIT-licens  ·  Open Source

InfraBuilderOS

Bygg komplett IT-infrastruktur fran terminalen.

TUI-baserat verktyg som genererar Ansible-projekt for att automatisera hela infrastrukturen — fran natverkskonfiguration och hypervisor-provisionering till OS-hardening och dokumentationsgenerering. 14 wizard-steg, 16 tjanstplugins, noll manuellt krångel.

Arbetsflode
┌─────────────────────────────┐ ┌──────────────────────────────┐ TUI-wizard (14 steg) Ansible-katalog Textual / Python 3.11 site.yml + 01-08 playbooks inventory/, group_vars/ Natverk ─ VMs ─ Tjanster ──► host_vars/, vault.yml Hardening ─ Docs ─ Vault roles/requirements.yml └─────────────────────────────┘ └──────────────────────────────┘ projekt-YAML ansible-playbook site.yml Spara/ladda med Provisionerad infrastruktur Ctrl+S / --project

Allt du behover, samlat i en wizard

InfraBuilderOS tacker hela livscykeln — fran initial natverksdesign till driftverifiering och dokumentation — utan att du behover lamna terminalen.

14 steg

14-stegs TUI-wizard

Guidar dig igenom hela infrastrukturdesignen med interaktiva formulär och navigationsmeny i sidopanelen.

16 plugins

16 tjanstplugins

10 Linux-tjanster, 5 Windows-tjanster och 1 plattformsoberoende plugin. Beroenden losas automatiskt.

Proxmox

Hypervisor-stod

Inbyggd integration mot Proxmox via community.proxmox-collectionen. Provisionera VMs direkt fran wizarden.

Brandvagg

OPNsense & MikroTik

OPNsense via REST API (api_key/api_secret) och MikroTik RouterOS via SSH/API. CHR stods.

CIS / STIG

OS-hardening

ansible-lockdown-roller for CIS L1/L2 och STIG mot Ubuntu, AlmaLinux och Windows Server.

OOB

iDRAC & iLO

Out-of-band-hantering for Dell (iDRAC) och HPE (iLO) servrar. Konfigureras i steg 8.

Vault

Vault-insamling

Wizarden scannar projektet efter vault_-nyckelreferenser och presenterar maskerade inmatningsfallt.

Verify

Driftdetektering

Jamfor faktiskt tillstand mot projektdefinitionen. Visar MATCH, DRIFT eller MISSING per host och tjanst.

6 typer

Dokumentationsgenerering

Genererar sex dokumenttyper i Markdown eller HTML — systemoverview, trafikmatriser, anvandarmanualer med mer.

USB

USB-portabelt

Kors fran ett USB-minne med ett virtualenv utan att installera nagot pa hosten. Ansible maste dock finnas pa systemet.

YAML

Spara & ladda projekt

Hela infrastrukturmodellen sparas som YAML. Snapshot-funktion skapar versionerade kopior (_v001.yml).

709 test

Automatiserade tester

709 tester tacker modeller, plugins, generator, driftkomparator, dokumentation, vault och wizard-flode.

14 steg fran blank canvas till driftklar infrastruktur

Varje steg ar ett eget skarmformular i TUI:n. Du navigerar fritt mellan stegen och kan spara projektet nar som helst med Ctrl+S.

  1. 01
    Welcome
    Ange projektnamn och beskrivning. Startar nytt projekt eller oppnar ett befintligt via --project.
  2. 02
    Network
    Valj natverksmall (three_tier, three_tier_oob, flat_oob). Justera VLAN-ID, subnater, DHCP-intervall och domannamn.
  3. 03
    Hypervisor
    Ange Proxmox-adress, nodnamn och API-token for VM-provisionering via community.proxmox.
  4. 04
    Firewall
    Valj OPNsense eller MikroTik RouterOS. Ange management-IP, API-nyckel och hemlighet (lagras som vault-referens).
  5. 05
    VMs
    Lagg till, redigera och ta bort virtuella maskiner. Valj OS-version (Ubuntu 22/24, AlmaLinux 8/9, Windows Server 2022/2025) och VLAN-tillhorighet.
  6. 06
    Services
    Aktivera tjanster per VM via kryssrutor. Beroenden losas automatiskt — aktiveras dns_ad laggs ad_dc till utan att du begar det.
  7. 07
    Hardening
    Valj hardening-profil per VM: CIS Level 1, CIS Level 2 eller STIG. Konfigurerbara parametrar som skip_reboot och disruption_high.
  8. 08
    OOB
    Konfigurera out-of-band-hantering via iDRAC (Dell) eller iLO (HPE) med IP-adress och autentiseringsuppgifter.
  9. 09
    PXE
    Aktivera PXE-startserver. Ange TFTP-rot och nateverksgranssnitt for natsvartsstart.
  10. 10
    Summary
    Lasbar oversikt over hela projektet — alla VMs, tjanster, VLAN och hardeningprofiler — innan generering startar.
  11. 11
    Vault
    Wizarden scannar projektet efter vault_-nyckelreferenser och presenterar ett maskerat inmatningsfallt for vart och ett. Sparas krypterat till vault.yml.
  12. 12
    Run
    Genererar Ansible-katalogen (playbooks, inventory, group_vars, roles) och kor playbooks via ansible-runner med realtidslogg i TUI:n.
  13. 13
    Verify
    Driftdetektering: jAmfor faktiskt tillstand mot projektdefinitionen. Visar MATCH, DRIFT eller MISSING per host och tjanst med sammanfattning.
  14. 14
    Docs
    Generera sex dokumenttyper i Markdown eller HTML till valfri utdatakatalog. Innehaller systemoverview, trafikmatriser, anvandarmanualer och kravspecifikation.

Stodda operativsystem och komponenter

InfraBuilderOS stoder de vanligaste enterprise-operativsystemen, bade Linux och Windows, samt ledande brandvaggar och Proxmox som hypervisor.

Operativsystem

OS Version Familj
Ubuntu 22.04 LTS Linux
Ubuntu 24.04 LTS Linux
AlmaLinux 8 Linux
AlmaLinux 9 Linux
Windows Server 2022 Windows
Windows Server 2025 Windows

Brandvaggar

Typ Ansible-anslutning Notering
OPNsense REST API api_key / api_secret. Standard-val.
MikroTik RouterOS SSH / RouterOS API CHR (Cloud Hosted Router) stods.

Hypervisor

Typ Ansible-collection
Proxmox VE community.proxmox

16 inbyggda tjanstplugins

Varje plugin ar ett Python-objekt som deklarerar plattform, beroenden, portar, Ansible-variabler och driftcheckar. Beroenden losas automatiskt — ingen manuell ordning kravs.

Plugin Visningsnamn Plattform Ansible-roll / Collection
apache Apache HTTP Server Linux geerlingguy.apache
nginx Nginx Linux geerlingguy.nginx
ntp Chrony NTP Linux geerlingguy.ntp
dns_bind BIND9 DNS Linux dns_bind (lokal)
rsyslog Central Rsyslog Linux rsyslog_server (lokal)
zabbix_agent Zabbix Agent 2 Linux community.zabbix.zabbix_agent
zabbix_server Zabbix Server Linux community.zabbix.zabbix_server
pxe PXE Boot Server Linux pxe_server (lokal)
haproxy HAProxy Linux haproxy (lokal)
ssh_jumpserver SSH Jump Server Linux jumpserver (lokal)
ad_dc Active Directory DC Windows infrabuilder.ad_dc
adfs AD FS Windows adfs (lokal)
dns_ad AD-integrerad DNS Windows infrabuilder.dns_ad
gpo Group Policy Objects Windows gpo (lokal)
rds Remote Desktop Services Windows rds (lokal)
ca Certificate Authority Bada infrabuilder.ca / community.crypto

Tre fardiga natverksmallar

Valj en mall i steg 2 som startpunkt. Alla VLAN-parametrar — ID, namn, subnot och DHCP-intervall — kan redigeras fritt efterat i TUI:n.

three_tier

3-Tier — Servers / Clients / Management

Klassisk trelagermodell med separata VLAN for servrar, klienter och management.

VLANNamnRollSubnotDHCP
10serverslan192.168.10.0/24100–200
20clientslan192.168.20.0/24100–250
99managementmgmt192.168.99.0/24Nej
three_tier_oob

3-Tier + OOB — Med out-of-band-nAt

Som 3-Tier men med ett dedikerat OOB-VLAN for iDRAC/iLO-hantering.

VLANNamnRollSubnotDHCP
10serverslan192.168.10.0/24100–200
20clientslan192.168.20.0/24100–250
99managementmgmt192.168.99.0/24Nej
100ooboob192.168.100.0/24100–200
flat_oob

Flat + OOB — Enkelt platt nat

For enklare miljoer: ett enda platt produktionsnAt kombinerat med ett OOB-VLAN.

VLANNamnRollSubnotDHCP
1defaultlan192.168.1.0/24100–250
100ooboob192.168.100.0/24100–200

CIS och STIG via ansible-lockdown

InfraBuilderOS anvander ansible-lockdown-rollerna for OS-hardening. Konfigurera niva per VM i steg 7. STIG for Ubuntu ar inte tillgangligt i ansible-lockdown; anvand CIS for Ubuntu-hostar.

Framework Niva OS Ansible-roll
CIS L1 / L2 Ubuntu 22.04 ansible-lockdown.ubuntu22_cis
CIS L1 / L2 Ubuntu 24.04 ansible-lockdown.ubuntu24_cis
CIS L1 / L2 AlmaLinux 8 ansible-lockdown.rhel8_cis
CIS L1 / L2 AlmaLinux 9 ansible-lockdown.rhel9_cis
CIS L1 / L2 Windows Server 2022 / 2025 ansible-lockdown.windows_2022_cis
STIG L1 / L2 AlmaLinux 8 ansible-lockdown.rhel8_stig
STIG L1 / L2 AlmaLinux 9 ansible-lockdown.rhel9_stig

Konfigurerbara parametrar per profil: skip_reboot, disruption_high, enabled_sections och custom_vars.

Ansible-katalogen som genereras

I steg 12 skapar generatorn foljande katalogstruktur, redo att koras med ansible-playbook site.yml -i inventory/hosts.ini.

<output-dir>/
├── ansible.cfg
├── site.yml                          # Master playbook (importerar alla faser)
├── 01-network.yml                    # Brandvaggskonfiguration
├── 02-hypervisor.yml                 # Proxmox-konfiguration
├── 03-vms.yml                        # Skapa virtuella maskiner
├── 04-base-config.yml               # Basinstallning (hostname, SSH, osv.)
├── 05-services.yml                   # Tjanstinstallation via plugins
├── 06-hardening.yml                  # OS-hardening (CIS/STIG)
├── 07-oob.yml                        # OOB-konfiguration (iDRAC/iLO)
├── 08-verify.yml                     # Driftverifiering
├── inventory/
│   ├── hosts.ini                     # Inventarielista
│   └── group_vars/
│       ├── all.yml                   # Globala variabler (utan vault)
│       ├── all/
│       │   ├── vars.yml              # Globala variabler (med vault)
│       │   └── vault.yml             # Krypterade hemligheter (ansible-vault)
│       ├── linux.yml                 # Linux-specifika variabler
│       ├── windows.yml               # Windows-specifika variabler
│       └── firewall.yml              # MikroTik-anslutningsvariabler
│   └── host_vars/
│       ├── webb01.yml                # Per-host-variabler (en fil per VM)
│       └── dc01.yml
└── roles/
    └── requirements.yml              # ansible-galaxy-beroenden

Hemligheter hanteras sAkert i TUI:n

I steg 11 scannar wizarden alla vault_-nyckelreferenser i projektet — till exempel vault_ca_passphrase, opnsense_api_key — och presenterar ett maskerat inmatningsfallt for vart och ett.

Varden lagras i minnet och skrivs av generatorn till inventory/group_vars/all/vault.yml. Kryptera efterat med ansible-vault.

inventory/group_vars/all/vault.yml YAML
---
vault_ca_passphrase: "hemligt-losenord"
vault_opnsense_api_key: "abc123"
vault_opnsense_api_secret: "xyz789"
Kryptera vault.yml Bash
ansible-vault encrypt inventory/group_vars/all/vault.yml

Jamfor faktiskt tillstand mot projektdefinitionen

Steg 13 kor playbook 08-verify.yml mot den levande infrastrukturen och jamfor resultatet med vad som ar definierat i projektet. Varje tjanst-plugin implementerar get_inventory_checks() som genererar de Ansible-tasks som kors.

MATCH

Tjansten ar aktiv, portarna ar oppna och konfigurationen stammer overens med projektdefinitionen. Inget atgard kravs.

DRIFT

Tjansten kors men avviker fran forvantat tillstand — till exempel fel version, stangd port eller modifierad konfiguration.

MISSING

Tjansten ar definierad i projektet men hittades inte pa hosten. Troligtvis en misslyckad eller ej utford provisionering.

TUI:n visar resultaten uppdelade per host med en sammanfattning av antal MATCH, DRIFT och MISSING. Varje host kan expanderas for att se detaljerade kontrollresultat.

Sex dokumenttyper genereras automatiskt

Steg 14 genererar dokumentation direkt fran projektmodellen. Bade Markdown och standalone-HTML stods. Valj utdatakatalog direkt i TUI:n.

Typ Filnamn (Markdown) Innehall
system_overview system_overview.md Oversikt: VMs, tjanster, natverk och topologi.
traffic_internal traffic_internal.md Intern trafikmatris mellan VMs och tjanster.
traffic_external traffic_external.md Extern trafik till och fran brandvAggen.
user_manual user_manual.md Anvandargranssnitt och dagliga arbetsfloden.
admin_manual admin_manual.md Administrationsinstruktioner och underhall.
prerequisites prerequisites.md Krav och forarbeten fore deploy.

Modulart — lagg till en tjanst med 1 fil

Att lagga till en ny tjanst krAver bara ett Python-objekt och en Ansible-roll. Pluginen dyker automatiskt upp i steg 6 for alla VMs med ett OS som listas i supported_os_versions.

infrabuilder/services/min_tjanst.py Python
from infrabuilder.services.base import ServicePlugin

class MinTjanstPlugin(ServicePlugin):

    @property
    def name(self) -> str:
        return "min_tjanst"

    @property
    def display_name(self) -> str:
        return "Min Tjanst"

    @property
    def platform(self) -> str:
        return "linux"   # eller "windows" eller "both"

    @property
    def supported_os_versions(self) -> list[str]:
        return ["ubuntu_2204", "ubuntu_2404", "alma_8", "alma_9"]

    def get_role_name(self) -> str:
        return "namespace.min_tjanst_roll"

    def get_ansible_vars(self, config: dict) -> dict:
        return {"min_tjanst_port": config.get("port", 8080)}

    def get_dependencies(self) -> list[str]:
        return []   # t.ex. ["ntp"] om NTP maste vara installerat forst

    def get_ports(self) -> list[dict]:
        return [{"port": 8080, "proto": "tcp"}]

    def validate(self, config: dict) -> list[str]:
        errors = []
        port = config.get("port", 8080)
        if not isinstance(port, int) or not (1 <= port <= 65535):
            errors.append("port maste vara ett heltal mellan 1 och 65535")
        return errors

    def get_inventory_checks(self) -> list[dict]:
        return [
            {
                "name": "Check min_tjanst is running",
                "ansible.builtin.service_facts": {},
            }
        ]

    def default_config(self) -> dict:
        return {"port": 8080}
Registrering
infrabuilder/services/__init__.py Python
from infrabuilder.services.min_tjanst import MinTjanstPlugin  # noqa: F401

for _cls in [
    ...,
    MinTjanstPlugin,   # <-- lagg till har
]:
    registry.register(_cls)

Skapa sedan en Ansible-roll under roles/min_tjanst_roll/ eller registrera den i roles/requirements.yml for automatisk nedladdning via ansible-galaxy.