Terug naar blog

Serverinstallatie automatiseren met Ansible en Ubuntu 20.04

Serverinstallatie automatiseren met Ansible en Ubuntu 20.04

Inleiding

Tegenwoordig moeten servers zeer frequent worden aangemaakt en vernietigd. Dat komt omdat servers soms een hoge uitvoeringsbelasting krijgen, terwijl op andere momenten de belasting afneemt, waardoor systeembronnen worden verspild. Een bekend voorbeeld zijn e-commercewebsites tijdens de feestdagen die veel verkeer trekken. Wanneer de aard van de applicatie schaalbaar moet zijn, is er altijd behoefte aan configuratiebeheertools om het algehele proces van het maken van servers eenvoudiger te maken. Ansible is een geweldige configuratiebeheertool die het aanmaken van servers automatiseert met behulp van standaardprocedures, waardoor menselijke fouten worden verminderd.

Ansible vereist geen speciale software die op de nodes van de servers moet worden geïnstalleerd. Het beschikt over alle tools die nodig zijn om scripts te schrijven, te bouwen en de automatisering ervan te vergemakkelijken. Deze handleiding licht toe hoe u Ansible kunt gebruiken om de stappen te automatiseren die zijn beschreven in onze Hoe u uw Ubuntu-server instelt handleiding.

Vereisten

Om deze gids te voltooien, gebruiken we Ubuntu 20.04. Verder heeft u ook het volgende nodig:

  • Een Ansible Control Node: Een Ubuntu-machine met de nieuwste Ubuntu-versie. De master-binary van Ansible moet op deze machine zijn geïnstalleerd en actief zijn. Deze machine moet verbinding kunnen maken met de Ansible-nodes. Voor deze verbindingen moet u SSH-sleutels gebruiken. Om problemen bij het verbinden te voorkomen, moet u ervoor zorgen dat op uw Ansible-control-node een firewall is ingeschakeld. Als u hulp nodig heeft, bekijk dan onze Ansible installeren en configureren op Ubuntu 20.04 blog.

  • Ansible Hosts: Er zijn een of meer hosts nodig om verbinding mee te maken. De hosts zijn in wezen de beheerde nodes in Ansible. Dit moeten Ubuntu-servers zijn.

Functies van het Ansible Playbook

U kunt alle hieronder genoemde stappen handmatig uitvoeren. We zullen deze uitvoering echter automatiseren. Wanneer u dit playbook uitvoert, zal het de volgende bewerkingen op uw machine uitvoeren:

  1. Het installeert aptitude, wat door Ansible de voorkeur heeft als pakketbeheerder.

  2. Het maakt een beheerdersgroep aan genaamd wheel met sudo-rechten zonder wachtwoord.

  3. Het maakt een nieuwe sudo-gebruiker aan.

  4. Het kopieert een lokale SSH-sleutel naar de authorized_keys. Deze wordt gebruikt voor een nieuwe beheerdersgebruiker op een externe host.

  5. Het schakelt de op wachtwoord gebaseerde authenticatie voor de root-gebruiker uit.

  6. Het installeert de benodigde pakketten.

  7. Het configureert de UFW-firewall om alleen SSH-verbindingen toe te staan. Alle andere verbindingen worden geblokkeerd.

Zodra het Playbook klaar is met uitvoeren, is er een nieuwe gebruiker beschikbaar. U kunt deze gebruiker gebruiken om in te loggen op het systeem.

Het Ansible Playbook gebruiken

Om de server in te stellen, heeft u het initiële server-setup-playbook en de bijbehorende afhankelijkheden nodig. Als u het voor de eerste keer gebruikt, moet u de repository klonen met de onderstaande link:

Als de repository al op uw systeem bestaat, voer dan de onderstaande opdracht uit om de nieuwste updates op te halen:

U krijgt de onderstaande bestandsstructuur op uw machine:

Hieronder vindt u de beschrijving van de bestanden:

  • vars/default.yml: Dit bestand bevat de variabelen om de Ansible-node te configureren.

  • playbook.yml: Dit bestand bevat de taken die op de server moeten worden uitgevoerd.

Het bestand vars/default.yml ziet er ongeveer zo uit:

Hieronder vindt u de beschrijving van deze variabelen. Als u ze wilt bewerken, kunt u de waarden vervangen door uw eigen waarden:

  1. create_user: Dit is de gebruiker die wordt aangemaakt. Deze gebruiker heeft sudo-rechten.

  2. copy_local_key: Dit bevat het pad naar de lokale SSH openbare sleutel. Deze wordt gekopieerd naar de externe server als authorized_key.

  3. sys_packages: Als u een of meer pakketten op uw server wilt installeren, vermeld ze hier dan als een array.

Zodra u dit bestand hebt bewerkt, slaat u de inhoud op. Druk daarna in nano op CTRL+X , Y. Vervolgens, ENTER om de inhoud van het bestand op te slaan.

Nu bent u klaar om dit playbook op meerdere servers uit te voeren. Standaard zijn Playbooks klaar om te worden uitgevoerd op de servers in uw inventaris. Als u het Playbook op specifieke servers wilt gebruiken, kunt u de -l vlag gebruiken. Stel nu dat de externe server meerdere gebruikers heeft, dan kunt u de -u vlag gebruiken om aan te geven met welke gebruiker verbinding moet worden gemaakt.

Als uw servernaam my_server is en de gebruikersnaam my_user is, voer dan de onderstaande opdracht uit om deze op de Ansible-nodes uit te voeren:

U krijgt een uitvoer die lijkt op:

Zodra deze uitvoering is voltooid, kunt u verbinding maken met de onderstaande opdracht:

Onthoud dat my_user de naam was die we hadden gebruikt in het vars/default.yml-bestand. U moet ook het server-IP wijzigen in het IP-adres van uw server in de bovenstaande opdracht. Als u de variabele copy_local_key had opgegeven om naar een aangepaste SSH-sleutel te verwijzen, geef de locatie dan op met de -i optie:

Log vervolgens in op uw server om de regels van de UFW-firewall te controleren:

U krijgt de volgende uitvoer:

De bovenstaande uitvoer bevestigt dat de UFW-firewall met succes is voltooid. Dit was de laatste stap in ons playbook. Als dit correct is uitgevoerd, betekent dit dat de uitvoering succesvol is geweest.

De inhoud van het Ansible Playbook

De Playbook-bestanden die we in deze handleiding hebben gebruikt, worden gehost op ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub. Als u de inhoud van elk bestand wilt bekijken om te gebruiken of te bewerken, klikt u op de knop Raw bovenaan elk script.

Ter snelle referentie delen we de volledige inhoud van het Playbook samen met de relevante bestanden:

  • vars/default.yml

Dit bestand bevat de waarden die door de playbook-taken worden gebruikt. Dit omvat waarden zoals de naam van de gebruiker, privileges, SSH-sleutels, pakketten die moeten worden geïnstalleerd als onderdeel van de initiële installatie, enzovoort:

  • playbook.yml

Het playbook.yml-bestand bevat de taken die moeten worden uitgevoerd. Eerst vermeldt het bestand alle hosts waarop de taken gericht zijn. Als u alle servers wilt specificeren, stelt u de waarde van deze sleutel in op all. Vervolgens, als u de uit te voeren taken wilt specificeren met sudo-privileges, stelt u de waarde van de variabele in op become: true. Ten slotte moet dit bestand de inhoud van het bovenstaande bevatten vars/default.yml-bestand. We voegen deze hierna toe om de instellingen uit dit bestand te laden:

Conclusie

Automatisering is essentieel in de IT en zorgt ervoor dat alle processen foutloos verlopen en de standaardpraktijken en -procedures volgen. Omdat de meeste software tegenwoordig via het web wordt geleverd en een gedistribueerd karakter heeft, is het een dagelijkse taak geworden om nieuwe servers te maken, bijvoorbeeld voor verschillende omgevingen zoals staging of productie, of zelfs demo-omgevingen.

In deze handleiding hebben we gedemonstreerd hoe u servers kunt automatiseren met behulp van Ansible, een krachtige en gebruiksvriendelijke tool die u veel tijd kan besparen.

Veel computerplezier!

author

Shreyas Patil

Auteur · CloudSigma

Preslav Dobrev is een creatief ontwerper bij CloudSigma, met de nadruk op een consistente bedrijfsidentiteit door middel van traditionele en innovatieve marketingkanalen. Hij is bedreven in het samenvoegen van artistieke visie met strategische marketing om impactvolle merkverhalen te creëren.

Reacties

Nog geen reacties. Wees de eerste.