MIT-licens  ·  Open Source

InfraBuilderOS

Bygg komplett IT-infrastruktur från terminalen.

TUI-baserat verktyg som genererar Ansible-projekt för att automatisera hela infrastrukturen — från nätverkskonfiguration och hypervisor-provisionering till OS-hardening och dokumentationsgenerering. 14 wizard-steg, 16 tjänstplugins, noll manuellt krångel.

Arbetsflöde
┌─────────────────────────────┐ ┌──────────────────────────────┐ TUI-wizard (14 steg) Ansible-katalog Textual / Python 3.11 site.yml + 01-08 playbooks inventory/, group_vars/ Nätverk ─ VMs ─ Tjänster ──► 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 behöver, samlat i en wizard

InfraBuilderOS täcker hela livscykeln — från initial nätverksdesign till driftverifiering och dokumentation — utan att du behöver lämna terminalen.

14 steg

14-stegs TUI-wizard

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

16 plugins

16 tjänstplugins

10 Linux-tjänster, 5 Windows-tjänster och 1 plattformsoberoende plugin. Beroenden löses automatiskt.

Proxmox

Hypervisor-stöd

Inbyggd integration mot Proxmox via community.proxmox-collectionen. Provisionera VMs direkt från wizarden.

Brandvägg

OPNsense & MikroTik

OPNsense via REST API (api_key/api_secret) och MikroTik RouterOS via SSH/API. CHR stöds.

CIS / STIG

OS-hardening

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

OOB

iDRAC & iLO

Out-of-band-hantering för 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

Jämför faktiskt tillstånd mot projektdefinitionen. Visar MATCH, DRIFT eller MISSING per host och tjänst.

6 typer

Dokumentationsgenerering

Genererar sex dokumenttyper i Markdown eller HTML — systemoverview, trafikmatriser, användarmanualer med mer.

USB

USB-portabelt

Körs från ett USB-minne med ett virtualenv utan att installera något på hosten. Ansible måste dock finnas på systemet.

YAML

Spara & ladda projekt

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

709 test

Automatiserade tester

709 tester täcker modeller, plugins, generator, driftkomparator, dokumentation, vault och wizard-flöde.

TUI-gränssnittet i fyra skärmdumpar

Wizarden körs helt i terminalen med Textual som rendering-motor. Med --ascii-flaggan fungerar den i PuTTY och alla terminaler utan Unicode-stöd.

Steg 01 · Welcome — python -m infrabuilder
InfraBuilderOS Step 1 of 14 InfraBuilderOS Infrastructure-as-Code wizard för Proxmox + Ansible Project Name: acme-prod Description: Production environment (3-tier + OOB) New Project Open Project Verify Existing ^QQuit ^SSave TabFocus next EnterSelect
Welcome. Startskarmen. Ange projektnamn och beskrivning — eller öppna en befintlig projektfil.
Steg 06 · Services — tjänst-tilldelning per VM
InfraBuilderOS Step 6 of 14 Service Assignment Select a VM to assign services: VMs > web01 (ubuntu_2204) [3] db01 (ubuntu_2204) [2] dc01 (windows_2022) [4] fw01 (opnsense) [1] log01 (alma_9) [1] Available Services — web01 [x]nginxNginx HTTP server [x]haproxyHAProxy load balancer [x]ntpChrony NTP (auto: nginx requires) [ ]apacheApache HTTP server [ ]dns_bindBIND9 DNS [ ]rsyslogCentral syslog [ ]zabbix_agentZabbix Agent 2 [ ]ssh_jumpserverSSH jump host [ ]caCertificate Authority 3 services enabled · 1 auto-added (dependency) ^QQuit ^SSave SpaceToggle NNext
Services. Aktivera tjänster per VM. ntp markerades automatiskt eftersom nginx kräver det.
Steg 11 · Vault — hemlighetsinsamling
InfraBuilderOS Step 11 of 14 Vault Secrets Scanned 5 vault references in project. Enter values below: vault_ca_passphrase ●●●●●●●●●●●●●●● SET vault_opnsense_api_key ●●●●●●●●●●●● SET vault_opnsense_api_secret enter secret… EMPTY vault_proxmox_token ●●●●●●●●●●●●●●●●●●●●●●●● SET vault_administrator_password enter secret… EMPTY 2 of 5 secrets missing · Save Vault disabled until all set ^QQuit ^SSave TabNext field ^VPaste
Vault. Wizarden scannar projektet efter vault_*-referenser och presenterar ett maskerat fält per nyckel.
Steg 13 · Verify — driftdetektering
InfraBuilderOS Step 13 of 14 Verification — Drift Detection Running checks against live infrastructure… done (12s) VM Check Status Detail web01 nginx service active MATCH port 80, 443 open web01 chrony NTP active MATCH sync to pool db01 zabbix_agent2 active DRIFT version 6.4, expected 7.x db01 port 10050 open MATCH tcp listen dc01 ad_dc service MATCH domain acme.local dc01 adfs service MISSING role not installed fw01 opnsense API reachable MATCH v24.7, 12 rules Summary — 12 checks across 5 hosts 9 MATCH 2 DRIFT 1 MISSING ^QQuit ^SSave RRe-run EExport report
Verify. Driftdetektering kör playbook 08-verify.yml mot levande hostar och visar MATCH, DRIFT eller MISSING per check.

14 steg från blank canvas till driftklar infrastruktur

Varje steg är ett eget skärmformulär i TUI:n. Du navigerar fritt mellan stegen och kan spara projektet när som helst med Ctrl+S.

  1. 01
    Welcome
    Ange projektnamn och beskrivning. Startar nytt projekt eller öppnar ett befintligt via --project.
  2. 02
    Network
    Välj nätverksmall (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 för VM-provisionering via community.proxmox.
  4. 04
    Firewall
    Välj 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. Välj OS-version (Ubuntu 22/24, AlmaLinux 8/9, Windows Server 2022/2025) och VLAN-tillhorighet.
  6. 06
    Services
    Aktivera tjänster per VM via kryssrutor. Beroenden löses automatiskt — aktiveras dns_ad läggs ad_dc till utan att du begär det.
  7. 07
    Hardening
    Välj 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 nätverksgränssnitt för nätverksstart.
  10. 10
    Summary
    Läsbar översikt över hela projektet — alla VMs, tjänster, VLAN och hardeningprofiler — innan generering startar.
  11. 11
    Vault
    Wizarden scannar projektet efter vault_-nyckelreferenser och presenterar ett maskerat inmatningsfallt för vart och ett. Sparas krypterat till vault.yml.
  12. 12
    Run
    Genererar Ansible-katalogen (playbooks, inventory, group_vars, roles) och kör playbooks via ansible-runner med realtidslogg i TUI:n.
  13. 13
    Verify
    Driftdetektering: jämför faktiskt tillstånd mot projektdefinitionen. Visar MATCH, DRIFT eller MISSING per host och tjänst med sammanfattning.
  14. 14
    Docs
    Generera sex dokumenttyper i Markdown eller HTML till valfri utdatakatalog. Innehåller systemoverview, trafikmatriser, användarmanualer och kravspecifikation.

Stödda operativsystem och komponenter

InfraBuilderOS stöder de vanligaste enterprise-operativsystemen, bade Linux och Windows, samt ledande brandväggar 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

Brandväggar

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

Hypervisor

Typ Ansible-collection
Proxmox VE community.proxmox

16 inbyggda tjänstplugins

Varje plugin är ett Python-objekt som deklarerar plattform, beroenden, portar, Ansible-variabler och driftcheckar. Beroenden löses automatiskt — ingen manuell ordning krävs.

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 Båda infrabuilder.ca / community.crypto

Tre färdiga nätverksmallar

Välj 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 för 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-nät

Som 3-Tier men med ett dedikerat OOB-VLAN för 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 nät

För enklare miljoer: ett enda platt produktionsnät 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 för OS-hardening. Konfigurera niva per VM i steg 7. STIG för Ubuntu är inte tillgängligt i ansible-lockdown; anvand CIS för 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 följande katalogstruktur, redo att köras med ansible-playbook site.yml -i inventory/hosts.ini.

<output-dir>/
├── ansible.cfg
├── site.yml                          # Master playbook (importerar alla faser)
├── 01-network.yml                    # Brandväggskonfiguration
├── 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 säkert 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 för 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-lösenord"
vault_opnsense_api_key: "abc123"
vault_opnsense_api_secret: "xyz789"
Kryptera vault.yml Bash
ansible-vault encrypt inventory/group_vars/all/vault.yml

Jämför faktiskt tillstånd mot projektdefinitionen

Steg 13 kör playbook 08-verify.yml mot den levande infrastrukturen och jämför resultatet med vad som är definierat i projektet. Varje tjänst-plugin implementerar get_inventory_checks() som genererar de Ansible-tasks som körs.

MATCH

Tjänsten är aktiv, portarna är öppna och konfigurationen stämmer överens med projektdefinitionen. Ingen åtgärd krävs.

DRIFT

Tjänsten körs men avviker från förväntat tillstånd — till exempel fel version, stängd port eller modifierad konfiguration.

MISSING

Tjänsten är definierad i projektet men hittades inte på hosten. Troligtvis en misslyckad eller ej utförd provisionering.

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

Sex dokumenttyper genereras automatiskt

Steg 14 genererar dokumentation direkt från projektmodellen. Bade Markdown och standalone-HTML stöds. Välj utdatakatalog direkt i TUI:n.

Typ Filnamn (Markdown) Innehåll
system_overview system_overview.md Översikt: VMs, tjänster, nätverk och topologi.
traffic_internal traffic_internal.md Intern trafikmatris mellan VMs och tjänster.
traffic_external traffic_external.md Extern trafik till och från brandväggen.
user_manual user_manual.md Användargränssnitt och dagliga arbetsflödena.
admin_manual admin_manual.md Administrationsinstruktioner och underhall.
prerequisites prerequisites.md Krav och förarbeten fore deploy.

Modulart — lägg till en tjänst med 1 fil

Att lägga till en ny tjänst kräver bara ett Python-objekt och en Ansible-roll. Pluginen dyker automatiskt upp i steg 6 för 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 Tjänst"

    @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 måste vara installerat först

    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 måste 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

för _cls in [
    ...,
    MinTjanstPlugin,   # <-- lägg till har
]:
    registry.register(_cls)

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