Mahdollisten hallittujen solmujen määrittäminen ja ad-hoc-komentojen suorittaminen - Osa 3


Tämän Ansible-sarjan kahdessa edellisessä artikkelissa olemme selostaneet Ansiblen ydinkomponentteja ja Ansible-ohjaussolmun määrittämistä. Tässä osassa 3 näytämme, kuinka voit määrittää Ansiblen hallitut solmut suorittamaan ad-hoc-komentoja etäisännissä.

Määritä salasanaton SSH-todennus mahdollisille hallinnoiduille solmuille

Viimeisimmän aiheemme yhteenveto: etäisäntien hallinta Ansiblella edellyttää salasanattoman SSH-todennuksen määrittämistä Ansible-ohjaussolmun ja hallittujen isäntien välille. Tämä sisältää avainparin (julkinen ja yksityinen SSH-avainpari) luomisen Ansible Control -solmussa ja julkisen avaimen kopioimisen kaikkiin etäisäntään. Tämä on ratkaiseva askel eteenpäin ja tekee työstäsi paljon helpompaa.

Määritä käyttöoikeuksien eskalointi hallituissa solmuissa

Kun olet kirjautunut sisään tavallisena käyttäjänä, saatat joutua suorittamaan tiettyjä tehtäviä hallituissa solmuissa, jotka edellyttävät korotettuja oikeuksia tai pääkäyttäjän oikeuksia. Näitä tehtäviä ovat pakettien hallinta, uusien käyttäjien ja ryhmien lisääminen sekä järjestelmän kokoonpanojen muokkaaminen vain muutaman mainitakseni. Tämän saavuttamiseksi sinun on vedottava tiettyihin ohjeisiin ohjekirjassa suorittaaksesi tehtävät etuoikeutettuna käyttäjänä etäisännissä.

tulla

Ansible antaa sinun 'tulea' toiseksi hallitun solmun käyttäjäksi, joka ei ole tällä hetkellä kirjautunut sisään. become:yes-käsky lisää oikeuksiasi ja antaa sinun suorittaa tehtäviä, jotka vaativat pääkäyttäjän oikeuksia, kuten pakettien asennuksen ja päivityksen sekä järjestelmän uudelleenkäynnistyksen.

Harkitse ohjekirjaa httpd.yml, joka asentaa ja käynnistää Apache-verkkopalvelimen kuvan osoittamalla tavalla:

---
- 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

become: yes -käsky antaa sinun suorittaa komentoja etäisännän pääkäyttäjänä.

tulla_käyttäjäksi

Toinen ohje, jonka avulla voit tulla toiseksi käyttäjäksi, on become_user. Tämän avulla voit vaihtaa etäisännän sudo-käyttäjään kirjautuessasi sisään, etkä käyttäjäksi, jolla kirjaudut sisään.

Jos esimerkiksi haluat suorittaa komennon tecmint-käyttäjänä etälaitteessa, käytä ohjetta kuvan mukaisesti.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

tulla_menetelmäksi

Tämä käsky ohittaa ansible.cfg-tiedostossa määritetyn oletusmenetelmän, joka on yleensä asetettu sudo-tilaan.

tulla_lippuiksi

Näitä käytetään peli- tai tehtävätasolla, esimerkiksi kun sinun on vaihdettava käyttäjäksi, kun komentotulkki on asetettu nologin-tilaan.

Esimerkiksi,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Komentorivivaihtoehdot käyttöoikeuksien eskalaatiossa

Katsotaanpa joitain komentorivivaihtoehtoja, joilla voit nostaa oikeuksiasi komentoja suoritettaessa:

  • ---ask-become-pass, -K – Tämä pyytää sinua antamaan sen etäjärjestelmän sudo-käyttäjän salasanan, johon yrität muodostaa yhteyden.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Tämän avulla voit suorittaa tehtävän pääkäyttäjänä ilman salasanaa.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Sen avulla voit suorittaa tehtäviä toisena käyttäjänä.
ansible-playbook myplaybook.yml --become-user=tecmint

Vahvista toimiva kokoonpano Ad-Hoc Ansible Commands -komentojen avulla

Joskus saatat haluta suorittaa nopeita ja yksinkertaisia tehtäviä etäisännillä tai palvelimilla Ansiblessa ilman, että sinun tarvitsee luoda pelikirjaa. Siinä tapauksessa sinun on suoritettava ad-hoc-komento.

Mikä on Adhoc-komento?

Mahdollinen ad-hoc-komento on yksirivinen komento, jonka avulla voit suorittaa yksinkertaisia tehtäviä yksinkertaisella mutta tehokkaalla tavalla ilman, että sinun tarvitsee luoda pelikirjoja. Tällaisia tehtäviä ovat tiedostojen kopioiminen isäntien välillä, palvelinten uudelleenkäynnistys, käyttäjien lisääminen ja poistaminen sekä yksittäisen paketin asentaminen.

Tässä opetusohjelmassa tutkimme erilaisia Ansible Ad-Hoc -komentojen sovelluksia. Käytämme alla olevaa inventaaritiedostoa esittelyyn.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Adhoc-komentojen peruskäyttö

Ansible-Adhoc-komentojen peruskäyttö on isännän tai isäntäryhmän pingaus.

ansible -m ping all

Yllä olevassa komennossa parametri -m on moduulivaihtoehto. Ping on adhoc-komento ja toinen parametri edustaa kaikkia inventaariotiedoston isäntiä. Komennon tulos näkyy alla:

Jos haluat pingata tietyn isäntäryhmän, korvaa parametri 'all' ryhmän nimellä. Alla olevassa esimerkissä testaamme yhteyttä verkkopalvelimet-ryhmän isäntien kanssa.

ansible -m ping webservers

Lisäksi voit käyttää attribuuttia -a määrittääksesi tavalliset Linux-komennot lainausmerkeissä. Jos haluat esimerkiksi tarkistaa etäjärjestelmien järjestelmän käyttöajan, suorita:

ansible -a "uptime" all

Voit tarkistaa etäisäntien levynkäytön suorittamalla.

ansible -a "df -Th" all

Adhoc-komennolla voi käyttää satoja ja satoja moduuleja. Jos haluat tarkastella koko moduuliluetteloa ja niiden kuvauksia, suorita alla oleva komento.

ansible-doc -l

Jos haluat tarkastella yksityiskohtaisia tietoja tietystä moduulista, suorita komento.

ansible-doc module_name

Jos haluat esimerkiksi etsiä lisätietoja yum-moduulin suorituksesta:

ansible-doc yum

Pakettien/palvelujen hallinta Ansiblen avulla

Mahdollisia adhoc-komentoja voidaan käyttää pakettien asennukseen ja poistamiseen käyttämällä yum- ja apt-pakettien hallintaohjelmia.

Asentaaksesi Apache-verkkopalvelimen CentOS 7 -isäntään luettelotiedoston verkkopalvelimet-ryhmään, suorita komento:

ansible webservers -m yum -a "name=httpd  state=present"

Tarkista Apache-verkkopalvelimen asennus kirjautumalla sisään etäasiakkaaseen ja suorittamalla.

rpm -qa | grep httpd

Jos haluat poistaa Apachen asennuksen, muuta tila present -tilasta poissa.

ansible webservers -m yum -a "name=httpd  state=absent"

Jälleen httpd run:n poistamisen vahvistamiseksi.

rpm -qa | grep httpd

Kuten havaittiin, Apache-verkkopalvelinpaketit on tyhjennetty.

Käyttäjien ja ryhmien luominen Ansiblen avulla

Käyttäjiä luotaessa käyttäjä-moduuli on hyödyllinen. Luo uusi käyttäjä james salasanalla redhat asiakasjärjestelmän tietokantapalvelimeen antamalla komento.

ansible database_server -m user -a "name=james password=redhat"

Vahvista uuden käyttäjän luominen suorittamalla komento:

ansible database_servers -a "id james"

Poista käyttäjä suorittamalla komento:

ansible database_servers -m user -a "name=james state=absent"

Etuoikeuksien eskalointi

Jos käytät Ansiblea tavallisena käyttäjänä, Ansible tarjoaa oikeuksien eskaloinnin etäisännissä käyttämällä --become-vaihtoehtoa pääkäyttäjän oikeuksien hankkimiseen ja -k-vaihtoehtoa salasanan kysymiseen.

Jos esimerkiksi haluat suorittaa Ansible adhoc -komennon netstat -pnltu etuoikeutetulla vaihtoehdolla –-become ja vaihtoehdolla -K. root-käyttäjän salasana komennon suorittamiseksi.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Jos haluat tulla muuksi käyttäjäksi kuin pääkäyttäjäksi, käytä attribuuttia --become-user.

Voit esimerkiksi suorittaa 'df -Th' tecmint-käyttäjänä etäisännissä ja pyytää salasanaa:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Tietojen kerääminen isäntäjärjestelmistä

Faktat viittaavat yksityiskohtaisiin tietoihin järjestelmästä. Tämä sisältää tietoja IP-osoitteesta, järjestelmäarkkitehtuurista, muistista ja suorittimesta muutamia mainitakseni.

Voit hakea tietoja etäisännistä suorittamalla komennon:

ansible all -m setup 

Tiedostojen siirto/kopiointi

Ansible käyttää moduulia copy kopioidakseen tiedostoja turvallisesti Ansible-ohjaimesta useisiin etäisänteihin.

Alla on esimerkki kopiointitoiminnosta:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Komento kopioi Ansible Control -solmun /var/log/secure-tiedoston etäisäntään verkkopalvelinryhmän /tmp-kohteeseen.

Voit muuttaa käyttöoikeuksia ja tiedostojen omistajuutta tiedostomoduulin avulla.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Lisäksi voit liittää omistaja- ja ryhmäargumentit kuvan osoittamalla tavalla:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Voit myös luoda hakemistoja samalla tavalla kuin mkdir -p, kuten kuvassa.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Esimerkiksi,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

Johtopäätös

Tässä artikkelissa valotamme, kuinka voit määrittää hallitut solmut suorittamaan mahdollisia ad-hoc-komentoja etäisäntien hallintaan. Toivomme, että pidit siitä hyödyllisenä. Kokeile ja kerro meille kuinka kävi.