GNU/Linux >> Znalost Linux >  >> Linux

Ansible Guide:Správa souborů pomocí Ansible

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.

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

Linux
  1. Zkopírujte soubory v terminálu Linux

  2. Spravujte spouštění pomocí systemd

  3. Ručně sloučit dva soubory pomocí diff

  1. Jak spravovat soubory protokolu pomocí Logrotate v Linuxu

  2. Jak rekurzivně kopírovat soubory podle přípony souboru?

  3. Jak používat Logrotate ke správě souborů protokolu

  1. najít a zkopírovat soubor pomocí Bash

  2. Jak sloučit dva soubory pomocí AWK?

  3. Jak kopírovat více souborů současně pomocí scp