Ansible

Een directory maken in Ansible

Een directory maken in Ansible

Ansible is een van de beste beschikbare automatiseringstools en biedt eenvoudige, intuïtieve en krachtige tools om automatiseringstaken in de moderne wereld uit te voeren.

Voor de meeste automatiseringstaken moet u mappen maken, vooral bij het installeren van verschillende tools en toepassingen, back-ups en herstel. Hoewel u deze taken kunt uitvoeren met behulp van een geautomatiseerd script, biedt Ansible betere functionaliteit, waardoor u mappen in gespecificeerde hosts kunt maken.

Deze zelfstudie laat zien hoe u de Ansible-bestandsmodule gebruikt om mapmachtigingen voor gespecificeerde hosts aan te maken, te verwijderen en te wijzigen.

Een directory maken in Ansible

Een van de volgende methoden kan worden gebruikt om een ​​map in Ansible te maken:

Voer de onderstaande opdracht in om een ​​directory in Ansible te maken met behulp van de opdrachtmodule:

$ ansible all -m commando -a "mkdir ~/backups"

Na het invoeren van de bovenstaande opdracht, zou u de onderstaande uitvoer moeten verkrijgen:

Voer wachtwoordzin in voor sleutel '/home/user/.ssh/id_rsa':
[WAARSCHUWING]: Overweeg om de bestandsmodule met state=directory te gebruiken in plaats van 'mkdir' uit te voeren.  Als u een opdracht moet gebruiken omdat het bestand onvoldoende is, kunt u 'warn: false' toevoegen aan deze opdrachttaak of 'command_warnings=False' in ansible zetten.cfg om van dit bericht af te komen.
35.222.210.12 | GEWIJZIGD | rc=0 >>

Controleer of uw Ansible hosts-inventaris in /etc/ansible/hosts de juiste informatie over uw externe hosts bevat.

Hoewel de opdrachtmodule eenvoudig te gebruiken is op een enkele Ansible-host, wordt deze erg inefficiënt als het om meerdere hosts met verschillende mappen en taken gaat.

Om dit nadeel tegen te gaan, zullen we de Ansible-bestandsmodule gebruiken en een playbook bouwen met de hosts die we willen gebruiken en de mappen die we willen maken.

OPMERKING: De bestandsmodule kan ook worden gebruikt als een enkele opdracht in Ansible, maar het werkt ongeveer hetzelfde als de opdrachtmodule.

Als u een Ansible-playbook wilt gebruiken, maakt u een YAML-bestand en voert u de volgende vermeldingen in om een ​​map te maken:

- hosts: alle taken:
- naam: Ansible-bestandsmodule map maken
het dossier:
pad: ~/back-ups
staat: map

Sla het bestand op en gebruik ansible-playbook om de mappen te maken:

ansible-playbook mkdir.yml

Dit zou een uitvoer moeten opleveren zoals hieronder, wat aangeeft dat de acties met succes zijn uitgevoerd met behulp van het opgegeven playbook-bestand.

Speel alles] ********************************************** ************************************************** ***********
TAAK [Feiten verzamelen] ********************************************* ************************************************** **
Voer wachtwoordzin in voor sleutel '/home/user/.ssh/id_rsa':
oke: [35.222.210.12]
TAAK [Ansible-bestandsmodule map maken] ***************************************** ***********************************
oke: [35.222.210.12]
SPEEL SAMENVATTING ********************************************** ************************************************** **********
35.222.210.12 : ok=2 gewijzigd=0 onbereikbaar=0 mislukt=0 overgeslagen=0 gered=0 genegeerd=0

Meerdere mappen met items maken

Met Ansible-playbooks kunt u ook meerdere mappen maken met behulp van de instructie with_items in het YAML-bestand.

Als u bijvoorbeeld back-ups wilt maken voor de drie services, MySQL, repository en config, kunt u de taak bouwen die wordt weergegeven in het onderstaande YAML-bestand:

- hosts: alle taken:
- naam: Ansible maak meerdere mappen met_items
het dossier:
pad: ~/backups/item
staat: map
met_items:
- 'mysql'
- 'opslagplaats'
- 'configuratie'

Sla het bovenstaande bestand op en voer het uit met ansible-playbook.

$ ansible-playbook mkdir_multi.yml SPEEL [alle] ********************************************* ************************************************** ************************************************** ************************************************** ***
TAAK [Feiten verzamelen] ********************************************* ************************************************** ************************************************** ****************************************
Voer wachtwoordzin in voor sleutel '/home/user/.ssh/id_rsa':
oke: [35.222.210.12]
TAAK [Ansible maakt meerdere mappen met_items] ***************************************** ************************************************** ************************************************** ***********
gewijzigd: [35.222.210.12] => (item=mysql)
gewijzigd: [35.222.210.12] => (item=repository)
gewijzigd: [35.222.210.12] => (item=configuratie)
SPEEL SAMENVATTING ********************************************** ************************************************** ************************************************** **************************************************
35.222.210.12: ok=2 gewijzigd=1 onbereikbaar=0 mislukt=0 overgeslagen=0 gered=0 genegeerd=0

Het bovenstaande playbook zou meerdere mappen moeten maken, zoals ~/backups/mysql, ~/backups/repository en ~/backups/config.

$ ls -la

De uitvoer van de directorylijst is zoals hieronder weergegeven:

totaal 0
drwxrwxr-x. 5 debian debian  51 maart  6 17:26 .
drwx------. 6 debian debian 117 maart 6 17:26…
drwxrwxr-x. 2 debian debian   6 maart  6 17:26 config
drwxrwxr-x. 2 debian debian   6 maart  6 17:26 mysql
drwxrwxr-x. 2 debian debian   6 maart  6 17:26 repository

Machtigingen instellen voor een directory

Met Ansible kunt u machtigingen voor een map specificeren met behulp van de modus-instructie. Overweeg het volgende playbook, dat een map maakt en machtigingen instelt:

- hosts: alle
taken:
- naam: Ansible map maken en machtigingen instellen
het dossier:
pad: /back-ups
staat: map
modus: "u=rw,g=wx,o=rwx"
worden: ja

In het bovenstaande item hebben we een map gemaakt in /. We moesten ook root worden, vandaar de word: yes entry.

$ toestemming voor ansible-playbook.yml SPEEL [alle] ********************************************* ************************************************** ************************************************** ************************************************** ***
TAAK [Feiten verzamelen] ********************************************* ************************************************** ************************************************** ****************************************
Voer wachtwoordzin in voor sleutel '/home/user/.ssh/id_rsa':
oke: [35.222.210.12]
TAAK [Ansible map maken en machtigingen instellen] **************************************** ************************************************** ************************************************** ***************
gewijzigd: [35.222.210.12]
SPEEL SAMENVATTING ********************************************** ************************************************** ************************************************** **************************************************
35.222.210.12: ok=2 gewijzigd=1 onbereikbaar=0 mislukt=0 overgeslagen=0 gered=0 genegeerd=0

Als u de machtigingen bekijkt van de map die we hebben gemaakt, ziet u het volgende:

$ ls -lrt / | grep-back-ups

De uitvoer is zoals hieronder weergegeven:

drw--wxrwx.   2 root root    6 maart  6 17:36 back-ups

Hoe u recursief machtigingen in een directory kunt wijzigen

Om de rechten van een map en zijn bestanden recursief te wijzigen, specificeert u eenvoudig de recursieve invoer, zoals hieronder weergegeven:

- hosts: alle
taken:
- naam: Ansible map maken en machtigingen instellen
het dossier:
pad: /back-ups
staat: map
modus: "u=rw,g=wx,o=rwx"
recursief: ja
worden: ja

Machtigingen instellen in meerdere mappen

Het instellen van machtigingen voor meerdere mappen in Ansible is ook zo eenvoudig als een paar regels invoer lines. Overweeg het volgende speelboek:.

- hosts: alle
taken:
- naam: Ansible maakt meerdere directory's met machtigingen
het dossier:
pad: " item.pad "
modus: "item.modus"
staat: map
met_items:
- pad: '~/backups/mysql', modus: '0777'
- pad: '~/backups/repository', modus: '0755'
- pad: '~/backups/config', modus: '0707'

Een map verwijderen in Ansible

Als u een map en alle inhoud ervan wilt verwijderen met behulp van een Ansible-playbook, geeft u de status op als afwezig, zoals hieronder wordt weergegeven:

- hosts: alle
taken:
- naam: Ansible verwijdermap
het dossier:
pad: /back-ups
staat: afwezig
worden: ja

Deze opdracht verwijdert de map en alle onderliggende bestanden en mappen.

OPMERKING: zorg ervoor dat u machtigingen hebt voor de map waaraan u werkt.

Een directory met tijdstempel maken

In sommige gevallen moet u mogelijk een map maken met een tijdstempel eraan, wat erg handig kan zijn, vooral bij het maken van back-ups. Om een ​​directory met tijdstempel te maken, kunnen we de variabele ansible_date_time gebruiken.

Beschouw het volgende draaiboek:

- hosts: alle
taken:
- naam: Ansible tijdstempel aan map toevoegen
het dossier:
pad: "/backups/mysqlansible_date_time.datum"
staat: map
modus: "0777"
worden: ja

Zodra je het playbook hebt uitgevoerd, heb je een map met het tijdstempel.

$ ls -l

De directoryvermelding moet er als volgt uitzien:

totaal 0 drwxrwxrwx. 2 wortel wortel 6 maart 6 18:03 mysql2021-03-06

OPMERKING: Om fouten te voorkomen, moet u altijd de syntaxis van het YAML-bestand controleren die u in Ansible wilt gebruiken.

Conclusie

Deze tutorial heeft je laten zien dat het werken met Ansible-modules heel eenvoudig en intuïtief is, waardoor het automatiseren van complexe taken eenvoudiger wordt. Met behulp van de Ansible-bestandsmodule kunt u een of meer mappen maken en voor elke map machtigingen toevoegen. U kunt dezelfde module ook gebruiken om een ​​map te verwijderen. Raadpleeg de officiële documentatie op de bronpagina voor meer informatie over het gebruik van de Ansible-bestandsmodule.

Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...
Hoe een spel op Linux te ontwikkelen
Tien jaar geleden zouden niet veel Linux-gebruikers voorspellen dat hun favoriete besturingssysteem ooit een populair spelplatform voor commerciële vi...
Open source-poorten van commerciële game-engines
Gratis, open source en platformonafhankelijke game-engine-recreaties kunnen worden gebruikt om zowel oude als enkele van de vrij recente gametitels te...