Úvod
Ansible je nástroj Infrastructure as Code, který vám umožňuje používat jediné centrální místo (řídicí uzel Ansible) k monitorování a ovládání velkého počtu vzdálených serverů (hostitelů).
Pomocí Ansible můžete nastavit řadu úloh, které mohou provádět vzdálení hostitelé, včetně vytváření nových souborů a adresářů.
Tento výukový program popisuje různé způsoby, jak můžete použít Ansible k vytváření souborů na vzdálených hostitelích.
Předpoklady
- Systém se systémem Ubuntu 20.04
- Přístup do příkazového řádku / okna terminálu
- Ansible nainstalován a nakonfigurován (viz naše průvodce instalací Ansible na Windows nebo instalací Ansible na Ubuntu)
Vytvoření Ansible Playbook
Ansible playbooky jsou seznamy úloh, které chcete, aby vaši vzdálení hostitelé prováděli. Lze je uložit a znovu použít, což vám umožní automatizovat složité procesy.
Každý příkaz, který chcete vydat vzdálenému hostiteli, včetně vytváření souborů a složek, je úkol, který musíte zahrnout do playbooku. Jakmile spustíte playbook, váš vzdálený hostitel provede všechny úkoly v něm definované.
Pro vytvoření Ansible playbooku použijte příkaz:
sudo nano /etc/ansible/playbook.yaml
Tento příkaz vytvoří soubor .yaml s názvem ‘playbook’ v instalační složce Ansible. Použijeme úkoly v playbook.yaml soubor k vytváření souborů a složek na našich vzdálených hostitelích.
Použití funkce suchého běhu Ansible umožňuje uživatelům spustit playbook bez provádění změn na serverech. Používá vestavěný kontrolní režim ke kontrole chyb v playbooku před spuštěním.
Vytvoření prázdného souboru
Nejrychlejší způsob, jak vytvořit prázdný soubor, je pomocí file
Ansible modul.
Přidejte do své příručky Ansible následující konfiguraci:
---
- hosts: all
tasks:
- name: Creating an empty file
file:
path: "/your path"
state: touch
Výše uvedený soubor má následující součásti:
hosts
: Definuje, na kterých vzdálených hostitelích ze souboru inventáře Ansible chcete úlohu provést. Vše znamená, že příkaz obdrží každý hostitel, ale můžete také zadat název kategorie hostitelů nebo jednoho jednotlivého hostitele.tasks
: Oznamuje, že vzdálený hostitel potřebuje provést úlohu.name
:Umožňuje definovat název úkolu. Název je pouze pro vaši informaci a nemá žádný vliv na samotný úkol.file
:Zapojí souborový modul Ansible k vytvoření nového souboru.path
:Definuje cestu pro nový soubor na pevném disku vzdáleného hostitele.state
:Podobně jako dotykový příkaz v terminálu Ubuntu, zadánímtouch
vytvoří prázdný soubor ve zvoleném umístění.
Pro spuštění playbooku použijte:
ansible-playbook /etc/ansible/playbook.yaml
Vytvoření souboru s obsahem
Pokud chcete vytvořit nový soubor s obsahem, můžete nejprve pomocí výše uvedené metody vytvořit prázdný soubor a poté použít blockinfile
nebo lineinfile
modul pro vložení obsahu.
Rychlejší způsob je použít copy
modul. I když se tento modul používá ke kopírování souboru z řídicího uzlu na vzdálený hostitel, můžete zahrnout content
parametr pro okamžité přidání obsahu do prázdného souboru.
Použijte tuto konfiguraci ve své příručce:
---
- hosts: all
tasks:
- name: Creating a file with content
copy:
dest: "/your path"
content: |
line 01
line 02
V souboru jsme použili:
copy
:Zapojí Ansibleův kopírovací modul.dest
:Definuje cestu pro váš nový soubor.content
:Tento parametr přidáline 01
aline 02
jako obsah nového souboru.
Vytvoření více souborů
Pomocí jednoho úkolu v Ansible playbooku můžete vytvořit více souborů.
K vytvoření více souborů použijte následující konfiguraci:
---
- hosts: all
tasks:
- name: Create multiple files
file:
path: "{{ item }}"
state: touch
with_items:
- test01.txt
- test02.txt
- test03.txt
- test04.txt
V konfiguračním souboru výše jsme definovali:
path
:"{{ item }}"
hodnota znamená, že Ansible vytvoří samostatnou cestu pro každý příslušný soubor. Ve výchozím nastavení se tyto soubory ukládají do domovské složky vzdáleného hostitele. Definujte jinou cestu pomocí/your_folder_path/"{{ item }}"
.with_items
:Tento parametr se používá ke spuštění seznamu souborů k vytvoření. Vypište tolik souborů, kolik chcete. V našem příkladu jsme vytvořili seznam čtyř souborů s názvem test .
Vytvoření adresáře
Vytvoření nového adresáře používá stejnou konfiguraci jako při vytváření prázdného souboru. Jediný rozdíl je v tom, že pod state
zadejte directory
jako hodnotu:
---
- hosts: all
tasks:
- name: Creating a new directory
file:
path: "/your path"
state: directory
Odebrání souborů
Ansible playbooky mohou také odstranit existující soubory. Chcete-li to provést, nastavte state
parametr absent
:
---
- hosts: all
tasks:
- name: Removing a file
file:
path: "/your path"
state: absent
Pokud je soubor již odstraněn, tento příkaz nedělá nic.
Nastavení oprávnění k souboru
U všech výše uvedených příkladů můžete také nastavit oprávnění pro nové soubory a složky. K tomu musíte použít mode
parametr.
Existují dva způsoby, jak to provést:
- Použití formátu osmičkového režimu: Můžete použít osmičková čísla, například 0644 nebo 0777. Nezapomeňte na úvodní 0, protože její vynechání může vést k neočekávaným výsledkům.
- Použití formátu symbolického režimu: Můžete použít hodnoty jako
u=rwx
,g=rx
neboo=rx
, kdeu
znamená vlastník ,g
znamená skupina ao
znamená ostatní . Oprávnění jsou definována jakor
pro přečtení ,w
pro napsání ax
pro spustit .
Můžete například použít osmičkovou hodnotu 0755 při definování vlastníka:
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: 0755
owner: test
Můžete také použít symbolický ekvivalent 0755:
---
- hosts: all
tasks:
- name: Create a new file with permissions
file:
path: "/your path"
state: touch
mode: u=rwx,g=rx,o=rx
owner: test