Instellen van Ansible Control Node

Stel een Ansible Control Node in op basis van Red Hat 8 op gsd-ansible.

Projecten: c2platform/rws/ansible-gis, c2platform.core


In deze tutorial worden stap-voor-stap instructies gegeven voor het opzetten van een Ansible Control Node  op Red Hat 8, specifiek op de gsd-ansible node. Hoewel het voornamelijk is bedoeld voor Ansible Ad-Hoc taken, kan deze control node ook dienen als een grafische gebruikersinterface (GUI) voor lichtgewicht ontwikkelingswerk, toegankelijk via RDP (Remote Desktop Protocol). Door deze richtlijnen te volgen, kun je een veelzijdige control node omgeving creëren die zowel snelle automatiseringstaken als handige ontwikkelingsmogelijkheden ondersteunt.


Overzicht

Deze handleiding richt zich op het opzetten van een Ansible Control Node / lichtgewicht ontwikkelomgeving. Deze installatie omvat Vagrant en Ansible voor de uitvoering van de volgende taken:

  1. Vagrant gebruikt de VirtualBox Provider om een Red Hat 8 VM te creëren, inclusief het registreren van de node bij Red Hat met behulp van een Developer licentie-abonnement. Zie Het stroomlijnen van RHEL registratie en abonnement automatisering voor meer informatie.
  2. Vagrant gebruikt de Ansible-beheerder om een playbook uit te voeren dat essentiële pakketten zoals pip, setuptools, psycopg2-binary, curl, git en tree installeert of upgradet. Daarnaast wordt Xrdp geconfigureerd om bij het opstarten te starten en wordt er een Red Hat Desktopomgeving ingesteld.
NodeOSProviderDoel
gsd-ansibleRed Hat 8VirtualBoxAnsible Controle Node en lichtgewicht ontwikkelomgeving

Het onderstaande diagram illustreert het standaard implementatieproces in de ontwikkelomgeving met behulp van Vagrant en Ansible. De volgende VMs worden gemaakt: gsd-ansible, gsd-agserver1 en gsd-rproxy1.

De Ansible Control Node, gsd-ansible, kan afzonderlijk worden gebruikt om de nodes te voorzien en te beheren met Ansible zonder afhankelijk te zijn van Vagrant.

Deze diagrammen tonen de twee provisioning benaderingen: één met behulp van Vagrant en Ansible samen, en de andere met Ansible onafhankelijk met de Ansible Control Node.

Vereisten

Installatie

Om de node in te stellen, voer je het volgende commando uit:

vagrant up gsd-ansible

Verifiëren

Om te verifiëren dat de node correct is aangemaakt/geïmplementeerd, wordt in deze sectie beschreven hoe je verbinding maakt met de node, een Ansible-omgeving creëert, Ansible installeert en vervolgens node gsd-rproxy1 voorziet met behulp van deze omgeving. Deze stappen bootsen de stappen na die elke engineer bij RWS moet volgen om hun eigen gepersonaliseerde Ansible-werkruimte in te richten.

RDP Verbinding

Je kunt nu een RDP-verbinding maken met deze node met behulp van bijvoorbeeld Remmina  . Je zou moeten kunnen verbinden met gebruiker vagrant met wachtwoord vagrant.

Ansible-omgeving

Installeer pyenv  :

curl https://pyenv.run | bash

Voeg de volgende regels toe aan ~/.bashrc:

export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

Installeer Python 3.10.6

source ~/.bashrc
pyenv install 3.10.6
pyenv global 3.10.6

Maak Python virtuele omgeving aan met penv virtualenv:

pyenv virtualenv rws
pyenv virtualenvs  # dit zal alle beschikbare virtuele omgevingen inclusief "rws" tonen
pyenv virtualenv-init rws
pyenv activate rws

Voeg in ~/.bashrc toe

eval "$(pyenv virtualenv-init -)"
pyenv activate rws

Installeer Ansible

Installeer Ansible, inclusief PIP-pakketten voor Kerberos en WinRM.

pip3 install -r requirements.txt  # ansible maakt dit bestand aan in de home directory van vagrant

Als alternatief kun je de volgende opdrachten uitvoeren:

pip3 install --upgrade pip
pip3 install ansible-core==2.11.12
pip3 install setuptools_rust
pip3 install yamllint==1.28.0 ansible-lint==6.8.6 pre-commit==2.20.0
pip3 install pywinrm==0.4.3
pip3 install requests-kerberos
pip3 install pywinrm[kerberos] requests-kerberos pykerberos

Monteer Dev Collecties

Zodra je je Ansible-omgeving hebt ingesteld, kun je verdergaan met verschillende taken zoals het klonen van het c2platform/rws/ansible-gis project, het downloaden van Ansible collecties, en het voorzien van nodes met Ansible.

Om ervoor te zorgen dat je omgeving functioneel is, is de makkelijkste manier echter om gebruik te maken van de /vagrant mount. Deze mount bevat het c2platform/rws/ansible-gis project van je host. Het enige missende onderdeel is de ansible-dev-collections map.

Om deze map te incorporeren in gsd-ansible, kun je een speciaal lokaal en verborgen bestandsbestand genaamd .sync_folders.yml maken met de volgende inhoud. Dit bestand staat in de git ignore lijst:

---
- src: ../ansible-dev-collections/
  target: /ansible-dev-collections

Provisioneren met Ansible

Zodra je opnieuw opstart, zou je de gsd omgeving moeten kunnen provisioneren zoals volgt:

vagrant reload gsd-ansible  # maakt /ansible-dev-collections mount aan
vagrant ssh gsd-ansible
cd /vagrant
ansible-playbook plays/mw/reverse-proxy.yml -i hosts.ini

Houd er rekening mee dat de bovenstaande provision ervan uitgaat dat je de gsd-agserver1 al hebt draaien.

Met de Ansible Control Node, gsd-ansible, kun je nu de nodes beheren met uitsluitend Ansible. Vagrant is niet langer betrokken bij het proces.

Zie Vagrant Sync mappen voor meer informatie over het .sync_folders.yml bestand.

Evaluatie

Het provisioning proces voor deze node wordt bepaald door het bestand in de map group_vars/ansible bestand, dat gebruik maakt van de bootstrap_packages lijst, evenals de plays/mgmt/ansible.yml play. Je kunt de bestanden vinden in het Ansible project c2platform/rws/ansible-gis.