Ansible är ett av de bästa automatiseringsverktygen som finns, och erbjuder enkla, intuitiva och kraftfulla verktyg för att utföra automatiseringsuppgifter i den moderna världen.
För de flesta automatiseringsuppgifter måste du skapa kataloger, särskilt när du installerar olika verktyg och applikationer, säkerhetskopior och återställningar. Även om du kan utföra dessa uppgifter med ett automatiskt skript, ger Ansible bättre funktionalitet, så att du kan skapa kataloger i angivna värdar.
Denna handledning visar hur du använder Ansible-filmodulen för att skapa, ta bort och ändra katalogbehörigheter för angivna värdar.
Hur man skapar en katalog i Ansible
Vilken som helst av följande metoder kan användas för att skapa en katalog i Ansible:
- Ett rå Ansible-kommando med kommandomodulen
- En filmodul i en Ansible-spelbok
För att skapa en katalog i Ansible med kommandomodulen anger du kommandot som visas nedan:
$ ansible all -m command -a "mkdir ~ / backups"Efter att ha angett ovanstående kommando bör du få utdata som visas nedan:
Ange lösenfras för nyckel / hem / användare /.ssh / id_rsa ':[VARNING]: Överväg att använda filmodulen med state = katalog snarare än att köra 'mkdir'. Om du behöver använda kommandot eftersom filen är otillräcklig kan du lägga till 'warn: false' i den här kommandot uppgiften eller ställa in 'command_warnings = False' i synligt.cfg för att bli av med det här meddelandet.
35.222.210.12 | ÄNDRAD | rc = 0 >>
Kontrollera att ditt Ansible-värdinventering i / etc / ansible / hosts innehåller rätt information om dina fjärrvärdar.
Även om kommandomodulen är enkel att använda på en enda Ansible-värd, blir den mycket ineffektiv när man hanterar flera värdar med olika kataloger och uppgifter.
För att motverka denna nackdel kommer vi att använda Ansible-filmodulen och bygga en spelbok som innehåller de värdar som vi vill använda och de kataloger som vi vill skapa.
NOTERA: Filmodulen kan också användas som ett enda kommando i Ansible, men det fungerar ungefär som kommandomodulen.
För att använda en Ansible-spelbok skapar du en YAML-fil och anger följande poster för att skapa en katalog:
- värdar: alla uppgifter:- namn: Ansible filmodul skapa katalog
fil:
sökväg: ~ / säkerhetskopior
tillstånd: katalog
Spara filen och använd ansible-playbook för att skapa kataloger:
ansible-playbook mkdir.ymlDetta bör ge en utdata som den nedan, vilket indikerar att åtgärderna utfördes med framgång med den angivna playbook-filen.
Spela alla] ********************************************** ************************************************** *************UPPGIFT [Samla fakta] ********************************************* ************************************************* **
Ange lösenfras för nyckel / hem / användare /.ssh / id_rsa ':
ok: [35.222.210.12]
TASK [Ansible filmodul skapa katalog] ****************************************** **********************************
ok: [35.222.210.12]
SPELA RECAP ************************************************ ************************************************* ***********
35.222.210.12: ok = 2 har ändrats = 0 inte kan nås = 0 misslyckades = 0 hoppas över = 0 räddas = 0 ignoreras = 0
Hur man skapar flera kataloger med objekt
Ansible playbooks låter dig också skapa flera kataloger med uttalandet with_items i YAML-filen.
Till exempel, för att skapa säkerhetskopior för de tre tjänsterna, MySQL, förvar och konfiguration, kan du bygga uppgiften som visas i YAML-filen nedan:
- värdar: alla uppgifter:- namn: Ansible skapa flera kataloger med_items
fil:
sökväg: ~ / säkerhetskopior / item
tillstånd: katalog
med_objekt:
- 'mysql'
- 'förvar'
- 'config'
Spara ovanstående fil och kör den med ansible-playbook.
$ ansible-playbook mkdir_multi.yml SPELA [alla] ******************************************** ************************************************* ************************************************* ************************************************* ***UPPGIFT [Fakta om samlingen] ********************************************* ************************************************* ************************************************* *****************************************
Ange lösenfras för nyckel / hem / användare /.ssh / id_rsa ':
ok: [35.222.210.12]
TASK [Ansible skapa flera kataloger med_items] ****************************************** ************************************************* ************************************************* *************
ändrats: [35.222.210.12] => (artikel = mysql)
ändrats: [35.222.210.12] => (artikel = förvar)
ändrats: [35.222.210.12] => (artikel = konfiguration)
SPELA RECAP ************************************************ ************************************************* ************************************************* *************************************************
35.222.210.12: ok = 2 har ändrats = 1 kan inte nås = 0 misslyckades = 0 hoppas över = 0 räddas = 0 ignoreras = 0
Ovanstående spelbok bör skapa flera kataloger, till exempel ~ / backups / mysql, ~ / backups / repository och ~ / backups / config.
$ ls -laKataloglistans utdata är som visas nedan:
totalt 0drwxrwxr-x. 5 debian debian 51 mars 6 17:26 .
drwx------. 6 debian debian 117 mar 6 17: 26 ..
drwxrwxr-x. 2 debian debian 6 mar 6 17:26 config
drwxrwxr-x. 2 debian debian 6 mar 6 17:26 mysql
drwxrwxr-x. 2 debian debian 6 mar 6 17:26 förvar
Hur man ställer in behörigheter för en katalog
Ansible låter dig ange behörigheter för en katalog med hjälp av lägesdirektivet. Tänk på följande spelbok, som skapar en katalog och anger behörigheter:
- värdar: allauppgifter:
- namn: Ansible skapa katalog och ange behörigheter
fil:
sökväg: / säkerhetskopior
tillstånd: katalog
läge: "u = rw, g = wx, o = rwx"
bli: ja
I posten ovan skapade vi en katalog i /. Vi behövde också bli rot, därav bli: ja inträde.
$ ansible-playbook-tillstånd.yml SPELA [alla] ******************************************** ************************************************* ************************************************* ************************************************* ***UPPGIFT [Fakta om samlingen] ********************************************* ************************************************* ************************************************* *****************************************
Ange lösenfras för nyckel / hem / användare /.ssh / id_rsa ':
ok: [35.222.210.12]
TASK [Ansible skapa katalog och ange behörigheter] ***************************************** ************************************************* ************************************************* ****************
ändrats: [35.222.210.12]
SPELA RECAP *********************************************** ************************************************* ************************************************** *************************************************
35.222.210.12: ok = 2 har ändrats = 1 kan inte nås = 0 misslyckades = 0 hoppas över = 0 räddas = 0 ignoreras = 0
Om du ser behörigheterna för den katalog som vi skapade ser du följande:
$ ls -lrt / | grep-säkerhetskopiorUtgången är som visas nedan:
drw - wxrwx. 2 rotrot 6 mars 6 17:36 säkerhetskopiorHur man rekursivt ändrar behörigheter i en katalog
För att ändra behörigheterna för en katalog och dess filer rekursivt, ange bara den rekursiva posten, som visas nedan:
- värdar: allauppgifter:
- namn: Ansible skapa katalog och ange behörigheter
fil:
sökväg: / säkerhetskopior
tillstånd: katalog
läge: "u = rw, g = wx, o = rwx"
rekursiv: ja
bli: ja
Hur man ställer in behörigheter i flera kataloger
Att ställa in behörigheter för flera kataloger i Ansible är också så enkelt som några rader med poster. Tänk på följande spelbok.
- värdar: allauppgifter:
- namn: Ansible skapa mutliple-katalog med behörigheter
fil:
sökväg: "artikel.sökväg "
läge: "artikel.läge"
tillstånd: katalog
med_objekt:
- sökväg: '~ / backup / mysql', mode: '0777'
- sökväg: '~ / backups / repository', mode: '0755'
- sökväg: '~ / backups / config', mode: '0707'
Hur man tar bort en katalog i Ansible
För att ta bort en katalog och allt dess innehåll med en Ansible-spelbok, ange tillståndet som frånvarande, som visas nedan:
- värdar: allauppgifter:
- namn: Ansible radera katalog
fil:
sökväg: / säkerhetskopior
tillstånd: frånvarande
bli: ja
Detta kommando tar bort katalogen och alla barnfiler och kataloger.
NOTERA: Se till att du har behörigheter för den katalog som du arbetar med.
Hur man skapar en tidsstämplad katalog
I vissa fall kan du behöva skapa en katalog med en tidsstämpel bifogad, vilket kan vara mycket användbart, särskilt när du skapar säkerhetskopior. För att skapa en tidsstämplad katalog kan vi använda variabeln ansible_date_time.
Tänk på följande spelbok:
- värdar: allauppgifter:
- namn: Ansible lägg till tidsstämpel i katalogen
fil:
sökväg: "/ backup / mysql ansible_date_time.datum"
tillstånd: katalog
läge: "0777"
bli: ja
När du har kört spelboken har du en katalog med tidsstämpeln.
$ ls -lKataloglistan ska vara som visas nedan:
totalt 0 drwxrwxrwx. 2 rotrot 6 mar 6 18:03 mysql2021-03-06NOTERA: För att undvika fel, kontrollera alltid YAML-filsyntaxen som du tänker använda i Ansible.
Slutsats
Denna handledning visade dig att arbeta med Ansible-moduler är väldigt enkelt och intuitivt, vilket gör det enklare att automatisera komplexa uppgifter. Med Ansible-filmodulen kan du skapa en eller flera kataloger och lägga till behörigheter för varje. Du kan också använda samma modul för att ta bort en katalog. Mer information om hur du använder Ansible-filmodulen finns i den officiella dokumentationen på resursidan.