V této příručce vám ukážu, jak spravovat soubory pomocí modulů ansible. Naučíte se kopírovat, upravovat, vkládat, stahovat a nahrazovat soubory pomocí Ansible.
Co uděláme?
- Zkopírujte soubor pomocí modulu 'kopírovat' a 'šablony'
- Stáhněte soubor pomocí modulu 'fetch'
- Úprava souboru pomocí modulů 'blockinfile', 'lineinfile' a 'nahradit'
- Správa atributů souboru
Zkopírujte soubor pomocí modulu 'copy' a 'templates' v Ansible
Ansible poskytuje některé moduly pro kopírování souborů z místního adresáře do vzdálených cílových počítačů, je to modul 'copy' a 'template'.
Rozdíl mezi modulem 'copy' a 'template' je v tom, že modul kopírování zkopíruje soubor z adresáře 'files' a 'template' zkopíruje šablonu Jinja2 z adresáře 'template' na Ansible playbooky.
Modul 'kopírovat' je dobrý pro kopírování trvalých souborů, jako jsou certifikáty, zatímco 'šablona' je užitečnější pro opakovaně použitelné konfigurace, jako je konfigurace virtuálního hostitele atd.
1. Zkopírujte soubor z místního do vzdáleného cílového počítače
Zkopírujte konfiguraci 'sources.list' z místního adresáře 'files' na vzdálený počítač '/etc/apt/sources.list'. Když je konfigurace, bude nahrazena a zálohována na základě časových razítek.
- name: Copy from Local to Remote Target Machine with 'copy' copy: src: sources.list dest: /etc/apt/sources.list backup: yes
2. Zkopírujte soubor na vzdáleném počítači do jiného adresáře
Zkopírujte konfiguraci sudoers '/etc/sudoers.d/hakase' na vzdáleném počítači do druhého adresáře '/home/hakase/hakase-suoers.txt'. To lze provést pomocí volby 'remote_src'.
- name: Copy file from one directory to other on the Remote Machine copy: src: /etc/sudoers.d/hakase dest: /home/hakase/hakase-sudoers.txt remote_src: yes
3. Kopírovat soubor a změnit oprávnění a vlastníka souboru
Zkopírujte bash soubor z adresáře 'files' na stroj vzdáleného serveru a nastavte výchozí oprávnění k souboru '0755' a vlastníkem souboru je 'hakase'.
- name: Copy file and set up the permission and owner of the file copy: src: simple.sh dest: /home/hakase/simple.sh owner: hakase group: hakase mode: 0755
4. Zkopírujte soubor pomocí modulu šablon
Zkopírujte konfiguraci šablony Jinja2 pro virtuálního hostitele nginx z adresáře 'templates' do adresáře '/etc/sites-enabled/' na vzdáleném počítači. Pomocí šablony Jinja2 můžeme vytvořit proměnné pro naši konfiguraci a učinit ji více použitelnou.
- name: Copy file using 'template' module template: src: default.j2 dest: /etc/nginx/sites-enabled/ backup: yes owner: root group: root mode: 0644
Stáhnout soubor pomocí modulu Fetch v Ansible
Abychom mohli stáhnout soubor ze vzdáleného počítače do našeho místního uzlu ansible, můžeme použít modul ansible nazvaný 'fetch'.
1. Stáhnout ze vzdáleného počítače na místní
Stáhněte si konfigurační soubor nginx 'nginx.conf' ze vzdáleného serveru do místního adresáře ansible-node '/home/hakase/backup' pro vytvoření zálohy. A výchozí načítací modul bude obsahovat adresářové struktury.
- name: Download file from Remote Machine to Local ansible-node directory become: yes fetch: src: /etc/nginx/nginx.conf dest: /home/hakase/backup/
2. Stáhnout ze vzdáleného na místní bez adresářových struktur
Stahujte ze vzdáleného počítače do místního ansible-node bez adresářových struktur přidáním možnosti „flat“.
- name: Download file from Remote Machine to Local ansible node without directory structures become: yes fetch: src: /etc/nginx/nginx.conf dest: /home/hakase/backup/ flat: yes
Úpravy souborů pomocí Ansible
Nyní budeme upravovat soubory pomocí modulů Ansible. Existují některé moduly, které musíte znát pro úpravu souborů pomocí Ansible, jako je blockinfile, lineinfile a nahradit.
Blockinfile vloží/odstraní více řádků do souboru. Lineinfile je pro jeden řádek a náhradní modul lze použít k nahrazení řetězce.
1. Vložit více řádků do souboru pomocí 'blockinfile'
Přidejte konfiguraci více řádků do konfigurace ssh 'sshd_config' pomocí modulu 'blockinfile'. A výchozí nastavení vloží novou konfiguraci na konec řádků.
- name: Insert multiple lines and Backup
blockinfile:
path: /etc/ssh/sshd_config
backup: yes
block: |
ClientAliveInterval 360
ClientAliveCountMax 0
2. Vložit více čar pomocí Možnosti značky
Nebo pokud chcete vložit do konkrétního řádku, můžete použít možnost značky a následovat 'insertafter' nebo 'insertbefore' a Regex, nebo můžete použít obojí.
Níže uvedená příručka vloží novou dodatečnou konfiguraci do souboru 'sshd_config'. Další konfigurace bude přidána před řádek 'UserPAM' kolem výchozí značky '# BEGIN ANSIBLE MANAGED BLOCK'.
- name: Insert after regex, backup, and validate
blockinfile:
path: /etc/ssh/sshd_config
backup: yes
marker: "# {mark} ANSIBLE MANAGED BLOCK "
insertbefore: '^UsePAM '
block: |
AllowUsers hakase vagrant
PermitEmptyPasswords no
PermitRootLogin no
validate: '/usr/sbin/sshd -T -f %s'
3. Smazat/Odstranit Více čar blokuje okolí uvnitř značek
Odstraňte okolní blok čar značkou ansible '# BEGIN ANSIBLE MANAGED BLOCK'.
- name: Remote text block surrounding by markers
blockinfile:
path: /etc/ssh/sshd_config
marker: "# {mark} ANSIBLE MANAGED BLOCK"
content: ""
backup: yes
4. Vložit nový řádek do souboru
Vložte novou konfiguraci řádku 'PasswordAuthentication no' pod regulární výraz řádku '#PermitEmptyPasswords' do konfigurace ssh '/etc/ssh/sshd_config'.
- name: Insert New Line under the Regex configuration
lineinfile:
path: /etc/ssh/sshd_config
backup: yes
regexp: '^PasswordAuthentication '
insertafter: '^#PermitEmptyPasswords '
line: 'PasswordAuthentication no'
validate: '/usr/sbin/sshd -T -f %s'
5. Odstraňte řádek ze souboru pomocí modulu lineinfile
Chcete-li odstranit/smazat řádek ze souboru, můžete použít volbu 'stav:chybí' a následovat regulární výraz řádku, jako je níže.
- name: Remove a line from the file
lineinfile:
path: /etc/ssh/sshd_config
state: absent
regexp: '^PasswordAuthentication'
6. Nahradit řetězce vzorů regulárním výrazem a nahradit modul
Nyní nahradíme řetězec pomocí modulu 'nahradit'. Modul pro nahrazení vyžadoval regulární výraz jako back-end-reference pro nahrazení druhu řetězců.
Změňte název hostitele v souboru '/etc/hosts' pomocí nahradit modul.
- name: Replace the default
replace:
path: /etc/hosts
regexp: '(\s+)node\.provision\.labs(\s+.*)?$'
replace: '\1box.hakase.labs\2'
backup: yes
7. Odkomentovat konfigurace
Náhradní modul lze použít k odkomentování konfigurace v systému Linux. Jednoduše, můžeme odstranit řetězec komentáře '#' na začátku řádku pomocí náhradního modulu.
Odkomentujte konfiguraci řádku 'server_tokens' v souboru '/etc/nginx/nginx.conf'.
- name: Uncomment configuration
replace:
path: /etc/nginx/nginx.conf
regexp: '#(\s+)server_tokens'
replace: 'server_tokens'
backup: yes
8. Komentář k řádku konfigurace
Níže je komentář ke konfiguraci řádku přidáním '#' na začátek řádku.
- name: Comment Line configuration replace: path: /etc/nginx/nginx.conf regexp: '(\s+)gzip on' replace: '\n\t#gzip on' backup: yes
Nastavte atributy souborů pomocí modulu souborů v Ansible
Souborový modul lze použít k nastavení atributů samotných souborů, jako je změna vlastníka, skupiny a oprávnění, vytvoření symbolického odkazu, vytvoření nového adresáře a odstranění symbolického odkazu, souboru nebo adresáře.
1. Vytvořit symbolický odkaz souboru
Vytvořte soubor symbolického odkazu na vzdáleném hostiteli pro konfiguraci virtuálního hostitele nginx s názvem 'vhost' do adresáře '/etc/nginx/sites-enabled/'.
- name: Create Symlink of file
file:
src: /etc/nginx/sites-available/vhost
dest: /etc/nginx/sites-enabled/vhost
owner: root
group: root
state: link
2. Vytvořte nový adresář pomocí modulu souborů
Abychom vytvořili nový adresář pomocí souborového modulu, musíme použít volbu stavu s hodnotou 'adresář', jak je uvedeno níže.
- name: Create a New Directory using file
file:
path: /etc/nginx/ssl
state: directory
owner: root
group: root
mode: 0755