Ansible Managed Nodes configureren en ad-hocopdrachten uitvoeren - Deel 3
In de vorige twee artikelen van deze Ansible-serie hebben we de kerncomponenten van Ansible en het instellen van Ansible Control Node uitgelegd. In dit deel 3 laten we zien hoe u door Ansible beheerde knooppunten kunt configureren om ad-hocopdrachten uit te voeren op externe hosts.
Stel wachtwoordloze SSH-verificatie in op door Ansible beheerde knooppunten
Als samenvatting van ons laatste onderwerp: het beheren van externe hosts met Ansible vereist het instellen van wachtwoordloze SSH-authenticatie tussen het Ansible-controleknooppunt en de beheerde hosts. Dit omvat het genereren van een sleutelpaar (openbaar en privé SSH-sleutelpaar) op het Ansible Control-knooppunt en het kopiëren van de openbare sleutel naar alle externe hosts. Dit zal een cruciale stap voorwaarts zijn en uw werk veel gemakkelijker maken.
Configureer bevoegdheidsescalatie op beheerde knooppunten
Wanneer u bent aangemeld als een gewone gebruiker, moet u mogelijk bepaalde taken uitvoeren op beheerde knooppunten waarvoor verhoogde rechten of rootrechten vereist zijn. Deze taken omvatten pakketbeheer, het toevoegen van nieuwe gebruikers en groepen en het wijzigen van systeemconfiguraties om er maar een paar te noemen. Om dit te bereiken moet u bepaalde richtlijnen in het draaiboek aanroepen om de taken uit te voeren als een bevoorrechte gebruiker op de externe hosts.
worden
Met Ansible kunt u een andere gebruiker 'worden' op het beheerde knooppunt, anders dan degene die momenteel is ingelogd. De worden:ja
-richtlijn verhoogt uw rechten en stelt u in staat taken uit te voeren die rootrechten vereisen, zoals het installeren en bijwerken van pakketten en het opnieuw opstarten van het systeem.
Overweeg een playbook httpd.yml
dat de Apache-webserver installeert en start zoals weergegeven:
---
- name: install and start Apache webserver
hosts: webservers
tasks:
- name: install httpd
yum: name=httpd state=latest
become: yes
- name: check httpd status
service: name=httpd state=started
Met de word: ja
richtlijn kunt u opdrachten uitvoeren als rootgebruiker op de externe host.
word_gebruiker
Een andere richtlijn die u kunt gebruiken om een andere gebruiker te worden, is become_user. Hierdoor kunt u bij het inloggen overschakelen naar een sudo-gebruiker op de externe host en niet naar de gebruiker waarmee u inlogt.
Als u bijvoorbeeld een opdracht wilt uitvoeren als tecmint-gebruiker op de afstandsbediening, gebruikt u de instructie zoals weergegeven.
- name: Run a command as the apache user
command: somecommand
become: yes
become_user: tecmint
word_methode
Deze richtlijn overschrijft de standaardmethode die is ingesteld in het bestand ansible.cfg, die meestal is ingesteld op sudo.
word_flags
Deze worden gebruikt op speel- of taakniveau, bijvoorbeeld wanneer u naar een gebruiker moet overschakelen terwijl de shell is ingesteld op nologin.
Bijvoorbeeld,
- name: Run a command as nobody
command: somecommand
become: true
become_method: su
become_user: nobody
become_flags: '-s /bin/sh'
Opdrachtregelopties bij bevoegdheidsescalatie
Laten we eens kijken naar enkele opdrachtregelopties die u kunt gebruiken om uw bevoegdheden te verhogen bij het uitvoeren van opdrachten:
--ask-become-pass
,-K
– Hiermee wordt u gevraagd om het wachtwoord van de sudo-gebruiker op het externe systeem waarmee u verbinding probeert te maken.
ansible-playbook myplaybook.yml --ask-become-pass
--become
,-b
– Hiermee kunt u de taak uitvoeren als rootgebruiker zonder om een wachtwoord te vragen.
ansible-playbook myplaybook.yml --become
--become-user=BECOME_USER
– Hiermee kunt u taken uitvoeren als een andere gebruiker.
ansible-playbook myplaybook.yml --become-user=tecmint
Valideer een werkende configuratie met behulp van ad-hoc Ansible-opdrachten
Soms wilt u misschien snelle en eenvoudige taken uitvoeren op externe hosts of servers in Ansible zonder noodzakelijkerwijs een draaiboek te hoeven maken. In dat geval zou u een ad-hoc opdracht moeten uitvoeren.
Wat is een ad-hocopdracht?
Een ansible ad-hocopdracht is een opdracht van één regel waarmee u eenvoudige taken op een eenvoudige maar efficiënte manier kunt uitvoeren zonder dat u draaiboeken hoeft te maken. Dergelijke taken omvatten het kopiëren van bestanden tussen hosts, het opnieuw opstarten van servers, het toevoegen en verwijderen van gebruikers en het installeren van een enkel pakket.
In deze tutorial verkennen we verschillende toepassingen van Ansible Ad-Hoc-opdrachten. We gaan het onderstaande inventarisbestand gebruiken voor een demonstratie.
[webservers]
173.82.115.165
[database_servers]
173.82.202.239
Basisgebruik van ad-hocopdrachten
Het meest elementaire gebruik van Ansible-Adhoc-opdrachten is het pingen van een host of een groep hosts.
ansible -m ping all
In het bovenstaande commando is de parameter -m
de moduleoptie. Ping is de ad-hocopdracht en de tweede parameter vertegenwoordigt alle hosts in het inventarisbestand. De uitvoer van de opdracht wordt hieronder weergegeven:
Om een bepaalde groep hosts te pingen, vervangt u de parameter ‘all’ door de groepsnaam. In het onderstaande voorbeeld testen we de connectiviteit met hosts onder de webserversgroep.
ansible -m ping webservers
Bovendien kunt u het kenmerk -a
gebruiken om gewone Linux-opdrachten tussen dubbele aanhalingstekens op te geven. Om bijvoorbeeld de systeemuptime van externe systemen te controleren, voert u het volgende uit:
ansible -a "uptime" all
Om het schijfgebruik van externe hosts te controleren, voert u het programma uit.
ansible -a "df -Th" all
Er zijn honderden en honderden modules die u kunt gebruiken met de Adhoc-opdracht. Voer de onderstaande opdracht uit om de volledige lijst met modules met hun beschrijvingen te bekijken.
ansible-doc -l
Voer de opdracht uit om gedetailleerde informatie over een bepaalde module te bekijken.
ansible-doc module_name
Als je bijvoorbeeld wilt zoeken naar meer details over de yum-module, voer je het volgende uit:
ansible-doc yum
Pakketten/diensten beheren met Ansible
Ansible adhoc-opdrachten kunnen worden gebruikt voor het installeren en verwijderen van pakketten met behulp van yum en apt pakketbeheerders.
Om de Apache-webserver te installeren op de CentOS 7-host onder de groep webservers in het inventarisbestand, voert u de opdracht uit:
ansible webservers -m yum -a "name=httpd state=present"
Om de installatie van de Apache-webserver te verifiëren, logt u in op de externe client en voert u het programma uit.
rpm -qa | grep httpd
Om Apache te verwijderen, wijzigt u eenvoudig de status van aanwezig in afwezig.
ansible webservers -m yum -a "name=httpd state=absent"
Nogmaals, om de verwijdering van httpd run te bevestigen.
rpm -qa | grep httpd
Zoals waargenomen zijn Apache-webserverpakketten opgeschoond.
Gebruikers en groepen aanmaken met Ansible
Bij het aanmaken van gebruikers komt de module ‘gebruiker’ goed van pas. Om een nieuwe gebruiker james met wachtwoord redhat aan te maken op het clientsysteem database_server, geeft u de opdracht.
ansible database_server -m user -a "name=james password=redhat"
Om het aanmaken van de nieuwe gebruiker te bevestigen, voert u de opdracht uit:
ansible database_servers -a "id james"
Om de gebruiker te verwijderen, voert u de opdracht uit:
ansible database_servers -m user -a "name=james state=absent"
Privilege escalatie
Als u Ansible als gewone gebruiker gebruikt, biedt Ansible privilege-escalatie op externe hosts met behulp van de optie --become
om rootrechten te verkrijgen en -k
om om het wachtwoord te vragen.
Als u bijvoorbeeld het Ansible adhoc-commando 'netstat -pnltu' wilt uitvoeren met de bevoorrechte optie –-become
en optie -K
om te vragen naar de root-gebruikerswachtwoord om de opdracht uit te voeren.
ansible webservers -m shell -a 'netstat -pnltu' --become -K
Om een andere gebruiker dan root te worden, gebruik je het --become-user
attribuut.
Om bijvoorbeeld ‘df -Th‘ uit te voeren als tecmint-gebruiker op de externe hosts en te vragen om het wachtwoord, voert u het volgende uit:
ansible all -m shell -a 'df -Th' --become-user tecmint -K
Feiten verzamelen over hostsystemen
Feiten verwijzen naar gedetailleerde informatie over een systeem. Dit omvat informatie over het IP-adres, systeemarchitectuur, geheugen en CPU om er maar een paar te noemen.
Om informatie over externe hosts op te halen, voert u de opdracht uit:
ansible all -m setup
Bestandsoverdracht/kopieer bestanden
Ansible gebruikt de module kopiëren om bestanden veilig van de Ansible-besturing naar meerdere externe hosts te kopiëren.
Hieronder ziet u een voorbeeld van een kopieerbewerking:
ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"
De opdracht kopieert het bestand /var/log/secure in het Ansible Control-knooppunt naar externe hosts in de webserversgroep in de bestemming /tmp.
U kunt de bestandsmodule gebruiken om de rechten en het bestandseigendom te wijzigen.
ansible webservers -m file -a "dest=/tmp/secure mode=600"
Bovendien kunt u de eigenaar- en groepsargumenten toevoegen, zoals weergegeven:
ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"
Je kunt ook mappen maken, op een vergelijkbare manier als mkdir -p
, zoals weergegeven.
ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"
Bijvoorbeeld,
ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"
Conclusie
In dit artikel werpen we licht op hoe u beheerde knooppunten kunt configureren om Ansible ad-hoc-opdrachten uit te voeren om externe hosts te beheren. We hopen dat je het nuttig vond. Geef het een kans en laat ons weten hoe het ging.