Sådan konfigureres Ansible Managed Nodes og kør ad hoc-kommandoer - Del 3


I de to foregående artikler i denne Ansible-serie har vi forklaret kernekomponenter i Ansible og opsætning af Ansible Control Node. I denne del 3 vil vi demonstrere, hvordan du kan konfigurere Ansible-administrerede noder til at køre ad-hoc-kommandoer på fjernværter.

Opsæt adgangskodeløs SSH-godkendelse til Ansible Managed Nodes

Som en sammenfatning af vores sidste emne kræver styring af eksterne værter med Ansible opsætning af adgangskodeløs SSH-godkendelse mellem Ansible-kontrolknudepunktet og de administrerede værter. Dette involverer generering af et nøglepar (offentlig og privat SSH-nøglepar) på den synlige kontrolknude og kopiering af den offentlige nøgle til alle fjernværterne. Dette vil være et afgørende skridt fremad og vil gøre dit arbejde meget lettere.

Konfigurer eskalering af privilegier på administrerede noder

Når du er logget ind som en almindelig bruger, kan du blive bedt om at udføre bestemte opgaver på administrerede noder, der kræver forhøjede rettigheder eller rodrettigheder. Disse opgaver inkluderer pakkehåndtering, tilføjelse af nye brugere og grupper og ændring af systemkonfigurationer for blot at nævne nogle få. For at opnå dette skal du påberåbe dig visse direktiver i playbook for at køre opgaverne som en privilegeret bruger på fjernværterne.

Ansible giver dig mulighed for at 'blive' en anden bruger på den administrerede node, der adskiller sig fra den, der aktuelt er logget ind. Direktivet bliver: ja hæver dine privilegier og giver dig mulighed for at udføre opgaver, der kræver root-privilegier såsom installation og opdatering af pakker og genstart af systemet.

Overvej en playbook httpd.yml , der installerer og starter Apache webserver som vist:

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

bliver: ja direktivet giver dig mulighed for at udføre kommandoer som en rootbruger på den eksterne vært.

Et andet direktiv, som du kan bruge til at blive en anden bruger, er become_user. Dette giver dig mulighed for at skifte til en sudo-bruger på den eksterne vært ved login og ikke den bruger, du logger på som.

For eksempel, for at køre en kommando som tecmint-bruger på fjernbetjeningen skal du bruge direktivet som vist.

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

Dette direktiv tilsidesætter standardmetoden, der er angivet i ansible.cfg-filen, som normalt er indstillet til sudo.

Disse bruges på afspilnings- eller opgaveniveau, for eksempel når du skal skifte til en bruger, når skallen er indstillet til nologin.

For eksempel,

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

Kommandolinjevalg i Privilege Escalation

Lad os se på nogle af kommandolinjemulighederne, som du kan bruge til at hæve dine privilegier, når du kører kommandoer:

  • --ask-become-pass , -K - Dette beder dig om adgangskoden til sudo-brugeren på det eksterne system, som du prøver at oprette forbindelse til.

$ ansible-playbook myplaybook.yml --ask-become-pass

  • --become , -b - Dette giver dig mulighed for at køre opgaven som en rootbruger uden at bede om en adgangskode.

$ ansible-playbook myplaybook.yml --become 

  • --become-user = BECOME_USER - Det giver dig mulighed for at køre opgaver som en anden bruger.

$ ansible-playbook myplaybook.yml --become-user=tecmint

Valider en arbejdskonfiguration ved hjælp af ad-hoc-synlige kommandoer

Nogle gange vil du muligvis udføre hurtige og enkle opgaver på eksterne værter eller servere i Ansible uden nødvendigvis at skulle oprette en playbook. I så fald skal du køre en ad hoc-kommando.

En ansible ad-hoc-kommando er en en-linjekommando, der hjælper dig med at udføre enkle opgaver på en enkel, men effektiv måde uden behov for at oprette playbooks. Sådanne opgaver inkluderer kopiering af filer mellem værter, genstart af servere, tilføjelse og fjernelse af brugere og installation af en enkelt pakke.

I denne vejledning undersøger vi forskellige anvendelser af Ansible Ad-Hoc-kommandoer. Vi skal bruge lagerfilen nedenfor til en demonstration.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Den mest basale brug af Ansible-Adhoc-kommandoer er at pinge en vært eller en gruppe værter.

# ansible -m ping all

I ovenstående kommando er parameteren -m modulindstillingen. Ping er adhoc-kommandoen, og den anden parameter repræsenterer alle alle værter i lagerfilen. Udgangen af kommandoen er vist nedenfor:

For at pinge, erstattes en bestemt gruppe af værter, parameteren 'all' med gruppenavnet. I eksemplet nedenfor tester vi forbindelsen med værter under webservergruppen.

# ansible -m ping webservers

Derudover kan du bruge attributten -a til at angive almindelige Linux-kommandoer i dobbelt anførselstegn. For eksempel for at kontrollere systemets oppetid for eksterne systemer skal du køre:

# ansible -a "uptime" all

For at kontrollere diskbrug af fjernværter køres.

# ansible -a "df -Th" all

Der er hundredvis af hundredvis af moduler, som du kan bruge med Adhoc-kommandoen. For at se hele listen over moduler med deres beskrivelser skal du køre kommandoen nedenfor.

# ansible-doc -l

Hvis du vil se detaljerede oplysninger om et bestemt modul, skal du køre kommandoen.

# ansible-doc module_name

For eksempel for at søge efter flere detaljer om yum-modulkørslen:

# ansible-doc yum

Ansible adhoc-kommandoer kan bruges til installation og fjernelse af pakker ved hjælp af yum- og apt-pakkehåndtering.

For at installere Apache-webserver på CentOS 7-værten under webservergruppen i lagerfilen skal du køre kommandoen:

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

For at kontrollere installationen af Apache-webserveren skal du logge på fjernklienten og køre.

# rpm -qa | grep httpd

For at afinstallere Apache skal du blot ændre tilstanden fra nuværende til fraværende.

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

Igen for at bekræfte fjernelsen af httpd-kørsel.

# rpm -qa | grep httpd

Som bemærket er Apache-webserverpakker blevet renset.

Når du opretter brugere, kommer 'bruger'-modulet til nytte. For at oprette en ny bruger james med password redhat på klientsystemets database_server, skal du udstede kommandoen.

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

For at bekræfte oprettelsen af den nye bruger skal du køre kommandoen:

# ansible database_servers -a "id james"

For at fjerne brugeren skal du køre kommandoen:

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

Hvis du kører Ansible som en almindelig bruger, giver Ansible rettighedsforøgelse i fjernværter ved hjælp af indstillingen --become for at erhverve root-privilegier og -k for at bede om adgangskoden.

For eksempel at køre Ansible adhoc-kommandoen 'netstat -pnltu' med den privilegerede mulighed - -bliv og option -K for at bede om root-brugerens adgangskode til at køre kommandoen .

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

For at blive en anden bruger end root skal du bruge attributten --become-user .

For eksempel at køre 'df -Th' som tecmint-bruger på fjernværterne og bede om kørsel af adgangskode:

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

Fakta henviser til detaljerede oplysninger om et system. Dette inkluderer information om IP-adressen, systemarkitektur, hukommelse og CPU for at nævne nogle få.

For at hente oplysninger om fjernværter skal du køre kommandoen:

$ ansible all -m setup 

Ansible bruger modulkopien til sikkert at kopiere filer fra Ansible-kontrollen til flere fjernværter.

Nedenfor er et eksempel på en kopiering:

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

Kommandoen kopierer/var/log/sikker-filen i Ansible Control-noden til fjernværter i webservergruppen i/tmp-destinationen.

Du kan bruge filmodulet til at ændre tilladelser og filejerskab.

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

Derudover kan du tilføje ejer- og gruppeargumenterne som vist:

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

Du kan også oprette mapper på samme måde som mkdir -p som vist.

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

For eksempel,

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

I denne artikel kaster vi lys over, hvordan du kan konfigurere administrerede noder til at køre Ansible ad-hoc-kommandoer til at styre fjernværter. Vi håber, du fandt det nyttigt. Giv det et skud, og lad os vide, hvordan det gik.