Om een geautomatiseerde taak uit te voeren op een remote host met Ansible, is het noodzakelijk om, zoals te verwachten, bepaalde variabelen in te vullen en ermee te werken. Dit type taak is bijvoorbeeld nodig om een externe host online te zetten, login- en gebruikersrechten toe te staan en een Python-omgeving op te zetten.
Het is mogelijk om te SSH naar een externe host en te controleren of de host aan alle criteria voldoet. Als automatiseringstool biedt Ansible echter modules waarmee u deze vervelende, tijdrovende taken in één opdrachtregel kunt uitvoeren.
Deze tutorial laat je zien hoe je de Ansible ingebouwde ping-module gebruikt om verschillende set-variabelen uit te voeren op externe hosts. Het Ansible-pingverzoek is een eenvoudig maar handig hulpmiddel dat u kunt gebruiken om de beschikbaarheid en bruikbaarheid van externe hosts te testen test.
We gaan nu nader bekijken hoe de Ansible-ping werkt.
OPMERKING: Dit gedeelte is enigszins theoretisch. Als je alleen het technische gedeelte van het artikel nodig hebt, kun je deze sectie overslaan. Toch raden we aan dit gedeelte te lezen, omdat het nuttige inzichten en informatie over de ping-module biedt.
Met dat opgemerkt, gaan we nu verder met het introduceren van de ping-module.
Over de Ansible ping-module
Het Ansible-pingverzoek wordt gecontroleerd op de externe host. Deze module controleert specifiek op:
- Of de externe host actief en toegankelijk is.
- Of de Python-omgeving de vereiste playbooks met succes kan uitvoeren.
- De gebruikerslogin en privileges.
Nadat een ping-verzoek naar de externe host is verzonden, retourneert de module een waarde die aangeeft of de ping succesvol was. Standaard retourneert de ping-module de tekenreeks 'pong' bij succes en een uitzondering bij mislukking (indien opgegeven).
PRO-TIP: Om ervoor te zorgen dat uw Ansible-playbooks op de externe doelhosts niet falen, gebruikt u de ping-module om te controleren of aan de vereisten wordt voldaan en voert u de taken alleen uit als een succesvolle uitvoer wordt verkregen.
Kenmerken van de Ansible ping-module
De ping-module is vrij eenvoudig en het volgende is een lijst met de functies die door deze module worden geboden:
- Geen ICMP-ping; het is eerder een kleine module die een geldige Python-omgeving vereist op externe hosts.
- Externe hosts van Windows zouden in plaats daarvan de win_ping-module moeten gebruiken.
- Biedt een net_ping-module voor netwerkapparaten.
- Accepteert slechts een enkele parameter om een uitzondering op te heffen.
- Wordt standaard gebruikt bij het aanroepen van het ansible-commando in de /usr/bin/ansible-directory om inlogrechten en een geldige Python-omgeving te verifiëren.
- Retourneert de tekenreeks 'pong' bij succes.
Hoe de Ansible ping-module te gebruiken
We zullen nu een paar voorbeelden bekijken die de Ansible ping-module gebruiken.
De AD HOC ping-opdracht gebruiken
De eenvoudigste manier om de Ansible ping-module uit te voeren, is door een eenvoudige AD HOC-opdracht in de terminal uit te voeren.
Het AD HOC-commando is als volgt:
ansible all -m ping -vDe bovenstaande opdracht begint met het aanroepen van Ansible, gevolgd door het specifieke patroon van de host. In dit geval willen we 'alle' hosts pingen. Het volgende deel, '-m', specificeert de module die we willen gebruiken. De '-v' staat voor verbose.
Bij succes krijgt u een uitvoer zoals hieronder weergegeven:
/etc/ansible/ansible gebruiken.cfg als configuratiebestand 35.222.210.12| SUCCES =>
"ansible_facts":
"discovered_interpreter_python": "/usr/bin/python" ,
"gewijzigd": false,
"ping": "pong"
Als de externe hosts niet beschikbaar zijn (misschien zijn ze offline), krijgt u een uitvoer zoals hieronder weergegeven:
/etc/ansible/ansible gebruiken.cfg als configuratiebestand 35.222.210.12| ONBEREIKBAAR! =>
"gewijzigd": false,
"msg": "Kan geen verbinding maken met de host via ssh: ssh: verbinding maken met host 35.222.210.12 poort 22: Time-out voor verbinding",
"onbereikbaar": waar
De ping-module gebruiken in Playbooks
Je kunt de ping-module ook in een playbook gebruiken. In de meeste gevallen bouw je geen playbook dat alleen een ping-verzoek uitvoert. U kunt echter alle taken binnen de voorwaarden van het ping-verzoek plaatsen.
Overweeg het volgende eenvoudige draaiboek:
- hosts: alleworden: ja
taken:
- ping
Het is je misschien opgevallen dat ik in het bovenstaande draaiboek de richtlijn 'worden' heb opgenomen. Dit is geen vereiste, maar ik ben gevallen tegengekomen waarin de ping-module faalt voor een standaardgebruiker. U kunt nu het playbook uitvoeren en controleren of de hostserver voldoet aan de vereisten voor een succesvol 'pong'-antwoord.
ansible-playbook ping.ymlAls de ping mislukt, krijgt u de volgende 'onbereikbare' foutmelding:
fataal: [35.222.210.12]: ONBEREIKBAAR! => "gewijzigd": false, "msg": "Kan geen verbinding maken met de host via ssh: ssh: verbinding maken met host 35.222.210.12 poort 22: Time-out verbinding", "onbereikbaar": trueDe raise-uitzondering gebruiken met de ping-module
U kunt gegevens ook specificeren als een crash om een uitzondering te veroorzaken. Dit verandert de standaard terugkeer van 'pong' naar 'crash.'
Beschouw het volgende draaiboek:
- hosts: alleworden: ja
taken:
- ping:
crash: gegevens
Het uitvoeren van het playbook met uitzondering zou de volgende waarde moeten retourneren:
ansible-playbook ping_behalve.yml
Conclusie
Deze tutorial liet je het diverse nut van de ping-module zien. Hoewel deze module geen complexe parameters bevat zoals de meeste Ansible-modules, bevat deze toch krachtige mogelijkheden. U kunt bijvoorbeeld de ping-module gebruiken om te controleren of een fout te wijten is aan een ontbrekende Python-omgeving en een taak maken om de vereiste omgeving op de externe host te installeren.