Playbook voor installatie en configuratie van een development lab server, als basis voor het ontwikkelen van een moderne infrastructuur. Automatische installatie en configuratie van o.a. Ansible, GitLab, Semaphore, Hashicorp Vault en Nexus Repository OSS.
Het playbook installeert de volgende rollen:
-
RedHat Cockpit
Browser-gebaseerde beheeromgeving voor Linux. Toegang viahttp://<hostname>:9090
.
Gebruikersnaam en wachtwoord worden gedefinieerd tijdens installatie via lab_username en lab_password variabelen.
Zie ook role cockpit -
Podman container infrastructure
Container infrastructuur. Kan worden beheerd via de Cockpit user interface.
Zie ook role podman -
Hashicorp Vault
Secret management. Geinstalleerd als container, benaderbaar viahttp://<hostname>:8200
.
Access token en unseal keys zijn opgeslagen in /data/vault/config folder.
Zie ook role vault -
Server-Config-Linux
Basis server configuratie rol met o.a configuratie automation account, configuratie tijdzone, base-server-config in Vault, etc.
Zie ook role server_config_linux -
MySQL
Installatie en configuratie van MySQL server. UNDER DEVELOPMENT.
Zie ook role mysql -
Ansible Semaphore
Grafische interface voor Ansible. Geinstalleerd als container, benaderbaar viahttp://<hostname>:3000
.
Zie ook role semaphore -
Gogs - Git service
Geinstalleerd als container, benaderbaar viahttp://<hostname>:10880
.
Zie ook role gogs -
Sonatype Nexus Repository OSS
Artifact repository. Geinstalleerd als container, benaderbaar viahttp://<hostname>:8081
.
User name is admin, initiele wachtwoord is opgeslagen in Vault.
Zie ook role nexus_repository
Overzicht ontwerp
Het playbook wordt gebruikt voor de configuratie van een lab server met een aantal geinstalleerde podman containers als Vault, Nexus Repository, MySQL, Semaphore en Gogs. Een voorbeeld typische infrastructuur is een Ansible Development server en Lab Playground server.
Ansible Development server
De Ansible Development server wordt gebruikt om de code te kopieren (clone) vanuit git en het ansible playbook te starten. Geadviseerd wordt een Linux VM met min. 2 vCPU en 3GB intern geheugen. De diskruimte is 20GB.
Voorbereidingen Ansible Development server:
Installeer volgende packages op development server: dnf install epel-release tar nano
.
epel-release: prerequisite voor ansible, tar: voor configuratie visual studio code remote ssh, nano: eenvoudige editor.
Installeer git en ansible: dnf install ansible git
.
configureer git: git config --global user.name "<github username>
en git config --global user.email "<github email>
.
Maak ssh certificaat aan via ssh-keygen: ssh-keygen -t ed25519 -C "<your_email@example.com>"
kopieer de publieke sleutel en kopieer naar github settings.
test git connectie: ssh -T git@github.com
Clone lab-playground repository: git clone <adres>
..
Installeer Ansible Galaxy collections via sh requirements.sh
.
Controleer de variabelen in het group_vars/all.yml
bestand en wijzig deze indien nodig.
Controleer de ip-adressen in het inventory/hosts.yml
bestand en wijzig deze indien nodig.
Lab Playground server
De Lab playground omgeving kan via dit playbook geinstalleerd worden op een Linux virtuele machine met 2 vCPU en 4GB geheugen. Geadviseerd wordt een diskruimte van 200Gb ivm mogelijke repository data.
Installatie van het playbook kan via onderstaande commandline. De -K parameter vraagt om het BECOME wachtwoord.
ansible-playbook install.yml -i inventory/hosts.yml -K
Onderstaande globale variabelen kunnen worden gebruikt:
-
uninstall: true | false
Bij installatie (install) van een role, wordt de role eerst ge-deinstalleerd (uninstall). -
lab_hostname: labserver.marcelvenema.com
-
lab_username: admin
-
lab_usercomment: "Admin user for Lab environment"
-
lab_password: Password29!
-
lab_email: marcel@marcelvenema.com
-
automation_username: Gedefinieerd in install.yaml
-
automation_password: not present, will be generated.
-
automation_email: "ansible@marcelvenema.com"
MIT
Marcel Venema