SH-salasanapohjaisen sisäänkirjautumisen käyttäminen Ansibessa käyttämällä sshpassia
Tässä artikkelissa näytän, miten Ansible-pelikirjoja voi käyttää SSH-salasanapohjaista sisäänkirjautumista sshpassin avulla.
- Edellytykset
- Sshpassin asentaminen Ubuntuun/Debianiin
- Sshpassin asentaminen CentOS 8/RHEL 8:ssa
- Ansible-projektin hakemiston perustaminen
- Salasanapohjaisen SSH-kirjautumisen testaaminen Ansibessa
- Ansible Salasanapohjainen SSH-kirjautuminen pelikirjoja varten
- Ansible sudo Salasanalla sisäänkirjautuminen leikkikirjoja varten
- Automaattisen salasanapohjaisen SSH-kirjautumisen ja sudo-salasanalla kirjautumisen määrittäminen
Edellytykset
Jos haluat kokeilla tässä artikkelissa käsiteltyjä esimerkkejä,
1) Sinulla on oltava Ansible asennettuna tietokoneellesi.
2) Sinulla on oltava vähintään Ubuntu/Debian-isäntä, johon voit muodostaa yhteyden Ansibesta.
LinuxHint-sivustolla on useita artikkeleita, jotka on omistettu Ansiblen asentamiseen. Voit tutustua niihin tarvittaessa asentaaksesi tarvittavat ohjelmat järjestelmääsi.
Tarvitset myös sshpassin asennettuna koneellesi, johon Ansible pitäisi olla asennettuna. Näytän tässä artikkelissa, miten sshpass asennetaan Ubuntuun/Debianiin ja CentOS/RHELiin. Älä huoli, jos sinulla ei ole näitä ohjelmia jo asennettuna järjestelmääsi.
Sshpassin asentaminen Ubuntuun/Debianiin
Ohjelma sshpass on saatavilla Ubuntun/Debianin virallisessa pakettivarastossa. Voit helposti asentaa tämän ohjelman tietokoneellesi.
Päivitä ensin APT-pakettivaraston välimuisti seuraavalla komennolla:
Asenna nyt sshpass seuraavalla komennolla:
sshpass:n pitäisi nyt olla asennettuna.
Sshpassin asentaminen CentOS 8/RHEL 8:ssa
sshpass on saatavilla CentOS 8/RHEL 8:n EPEL-arkistossa. Sinulla on oltava EPEL-repository käytössä, jotta voit asentaa sshpassin.
Päivitä ensin DNF-pakettien arkistovälimuisti seuraavan komennon avulla:
Asenna seuraavaksi EPEL-arkistopaketti seuraavan komennon avulla:
EPEL-tietovarastopaketin pitäisi nyt olla asennettu ja EPEL-tietovaraston pitäisi olla käytössä.
Päivitä DNF-pakettien arkistovälimuisti uudelleen seuraavasti:
Asenna sshpass seuraavan komennon avulla:
sshpass pitäisi olla asennettu.
Ansible-projektin hakemiston perustaminen
Ennen kuin siirrymme pidemmälle, olisi hyvä luoda projektin hakemistorakenne, jotta asiat pysyvät hieman järjestyksessä.
Luoaksesi projektihakemiston sshpass/ ja kaikki tarvittavat alihakemistot (nykyisessä työhakemistossasi), suorita seuraava komento:
Navigoi projektihakemistoon seuraavasti:
Luo hosts-luettelotiedosto seuraavasti:
Lisää inventaariotiedostoon isäntäsi IP- tai DNS-nimi.
Kun olet valmis tässä vaiheessa, tallenna tiedosto painamalla <Ctrl> + X ja sen jälkeen Y ja <Enter>.
Luo Ansible-konfiguraatiotiedosto projektin hakemistoon seuraavasti:
Kirjoita nyt seuraavat rivit ansible.cfg-tiedostoon.
Kun olet lopettanut tämän vaiheen, tallenna tiedosto painamalla <Ctrl> + X, jonka jälkeen Y ja <Enter>.
Salasanapohjaisen SSH-kirjautumisen testaaminen Ansibessa
Yritä seuraavaksi pingata inventaariotiedostossa olevat isännät seuraavasti:
Huomautus: Tässä -u-vaihtoehtoa käytetään kertomaan ansibelle, millä käyttäjällä kirjaudutaan. Tässä tapauksessa se on käyttäjä shovon. Korvaa tämä käyttäjätunnus omallasi tästä lähtien koko demon ajan.
Kuten näet, en pysty kirjautumaan isäntäkoneeseen enkä suorittamaan mitään komentoja.
Voidaksesi pakottaa Ansiblen kysymään käyttäjän salasanaa, suorita ansible-komento -ask-pass-argumentilla seuraavasti:
Kuten huomaat, Ansible kysyy käyttäjän SSH-salasanan. Kirjoita nyt SSH-salasana (käyttäjän kirjautumissalasana) ja paina <Enter>.
Isäntä voidaan pingata seuraavasti:
Ansible Salasanapohjainen SSH-kirjautuminen pelikirjoja varten
Voit käyttää salasanapohjaista SSH-kirjautumista Ansible-pelikirjoja suoritettaessa. Tarkastellaan esimerkkiä.
Luo ensin uusi pelikirja askpass1.yaml hakemistoon playbooks/ seuraavasti:
Kirjoita seuraavat rivit askpass1.yaml playbook-tiedosto:
user: shovon
tasks:
– name: Ping all hosts
ping:
– name: Print a message
debug:
msg: ’All set’
Kun olet lopettanut tämän vaiheen, tallenna tiedosto painamalla <Ctrl> + X, jonka jälkeen Y ja <Enter>.
Ajoita askpass1.yaml-pelikirja seuraavasti:
Kuten huomaatte, en pysty muodostamaan yhteyttä isäntään. Näet, että tämä johtuu siitä, etten ajanut ansible-playbook-komentoa -ask-pass-vaihtoehdolla.
Aja askpass1.yaml-pelikirjaa -ask-pass-vaihtoehdolla seuraavasti:
Kuten näet, Ansible kysyy SSH-salasanaa. Kirjoita SSH-salasana ja paina <Enter>.
Leikkikirjan askpass1.yaml pitäisi nyt toimia onnistuneesti.
Ansible sudo Salasanalla sisäänkirjautuminen leikkikirjoja varten
Vaihtoehto -ask-pass kysyy pelkkää SSH-kirjautumissalasana. Entä jos haluat kirjoittaa myös sudo-salasanan? Näet, miten tämä tehdään seuraavissa vaiheissa.
Luo ensin uusi playbook askpass2.yaml hakemistoon playbooks/ seuraavasti:
Kirjoita seuraavat rivit askpass2.yaml-tiedostoon.
user: shovon
become: True
tasks:
– name: Install apache2 Package
apt:
name: apache2
state: latest
– name: Make sure apache2 service is running
service:
name: apache2
state: started
enabled: True
– name: Kopioi index.html-tiedosto palvelimelle
copy:
src: ../files/index.html
dest: /var/www/html/index.html
mode: 0644
owner: www-data
group: www-data
Tässä olen käyttänyt komentoa become: True kertoakseni Ansibelle, että se suorittaa tämän pelikirjan sudo-oikeuksilla. Kun olet saanut tämän vaiheen valmiiksi, tallenna askpass2.yaml-tiedosto painamalla <Ctrl> + X ja sen jälkeen Y ja <Enter>.
Luo indeksi.html-tiedosto files/-hakemistoon seuraavasti:
Kirjoita index.html-tiedostoon seuraavat HTML-koodit:
<html>
<head>
<title>Homepage</title>
</head>
<body>
<h1>Hello World</h1>
<p>Se toimii</p>
</body>
</html>
Kun olet valmis tässä vaiheessa, tallenna tiedosto painamalla <Ctrl> + X ja sen jälkeen Y ja <Enter>.
Voit suorittaa askpass2.yaml-pelikirjan -ask-pass-vaihtoehdolla seuraavasti:
Tällöin sinulta kysytään SSH-salasanaa, kuten aiemminkin.
Mutta leikkikirjaa ei välttämättä vieläkään suoriteta, vaikka antaisit SSH-salasanan. Tämä johtuu siitä, että sinun on kerrottava Ansiblelle, että se kysyy sudo-salasanan lisäksi myös SSH-salasanaa.
Voit kertoa Ansiblelle, että se kysyy sudo-salasanaa käyttämällä -ask-become-pass -vaihtoehtoa leikkikirjaa suoritettaessa seuraavasti:
Nyt Ansible kysyy SSH-salasanaa.
Seuraavaksi Ansible kysyy sudo-salasanaa. Jos sudo-salasanasi on sama kuin SSH-salasanasi (mikä on todennäköisintä), jätä se tyhjäksi ja paina <Enter>.
Kuten näet, pelikirja suoritettiin onnistuneesti.
Automaattisen salasanapohjaisen SSH-kirjautumisen ja sudo-salasanalla kirjautumisen määrittäminen
Olet ehkä halukas käyttämään salasanapohjaista SSH- ja sudo-kirjautumista, mutta et halua kirjoittaa SSH-salasanaa ja sudo-salasanaa joka kerta, kun suoritat playbookin. Jos näin on, tämä osio on sinua varten.
Käyttääksesi salasanapohjaista SSH-kirjautumista ja sudo-kirjautumista ilman, että salasanoja kysytään, sinun tarvitsee vain lisätä inventaariotiedostoosi ansible_ssh_pass- ja ansible_become_pass-isäntä- tai ryhmämuuttujat.
Avaa ensin hostsin inventaariotiedosto seuraavasti:
Jos inventaariotiedostossasi on useita isäntiä ja kullakin isännällä on erilaiset salasanat, lisää ansible_ssh_pass- ja ansible_become_pass-muuttujat isäntämuuttujina (jokaisen isännän jälkeen) seuraavasti.
Muista korvata secret SSH- ja sudo-salasanallasi.
Jos kaikilla tai joillakin isännillä on sama salasana, voit lisätä ansible_ssh_pass- ja ansible_become_pass-muuttujat ryhmämuuttujiksi alla olevan esimerkin mukaisesti.
Tässä minulla on vain yksi isäntä, joten olen lisännyt ansible_ssh_pass- ja ansible_become_pass-muuttujat ryhmälle all (kaikki inventaariotiedoston isännät). Voit kuitenkin lisätä nämä muuttujat myös muille erityisryhmille.
Kun olet lisännyt ansible_ssh_pass- ja ansible_become_pass-muuttujat isäntien inventaariotiedostoon, tallenna isäntien inventaariotiedosto näppäilemällä <Ctrl> + X ja sen jälkeen Y ja <Enter>.
Voit nyt ajaa askpass2:n.yaml-pelikirja seuraavasti:
Kuten näet, pelikirja suoritettiin onnistuneesti, vaikkei se kysynytkään SSH-salasanaa tai sudo-salasanaa.
Näin käytät siis sshpassia salasanaan perustuvaan SSH:n ja sudo-sisäänkirjautumiseen Ansiblessa. Kiitos, että luit tämän artikkelin!