GNU/Linux >> Belajar Linux >  >> Linux

Panduan Ansible:Kelola File menggunakan Ansible

Dalam panduan ini, saya akan menunjukkan cara mengelola file menggunakan modul yang memungkinkan. Anda akan mempelajari cara menyalin, mengedit, menyisipkan, mendownload, dan mengganti file menggunakan Ansible.

Apa yang akan kita lakukan?

  • Salin file menggunakan modul 'salin' dan 'templat'
  • Unduh file menggunakan modul 'ambil'
  • Edit file menggunakan modul 'blockinfile', 'lineinfile', dan 'replace'
  • Kelola Atribut file

Salin file menggunakan modul 'salin' dan 'templat' di Ansible

Ansible menyediakan beberapa modul untuk menyalin file dari direktori lokal ke mesin target jarak jauh, yaitu modul 'copy' dan 'template'.

Perbedaan antara modul 'copy' dan 'template' adalah modul copy akan menyalin file dari direktori 'files' dan 'template' akan menyalin template Jinja2 dari direktori 'templates' pada playbook Ansible.

Modul 'salin' bagus untuk menyalin file persisten seperti sertifikat, sedangkan 'templat' lebih berguna untuk konfigurasi yang dapat digunakan kembali seperti konfigurasi host virtual, dll.

1. Salin file dari Mesin Target Lokal ke Jarak Jauh

Salin konfigurasi 'sources.list' pada direktori 'file' lokal ke mesin jarak jauh '/etc/apt/sources.list'. Ketika ada konfigurasi, itu akan diganti dan dicadangkan berdasarkan stempel waktu.

- name: Copy from Local to Remote Target Machine with 'copy'
  copy:
    src: sources.list
    dest: /etc/apt/sources.list
    backup: yes

2. Salin File di Mesin Jarak Jauh ke Direktori lain

Salin konfigurasi sudoers '/etc/sudoers.d/hakase' pada mesin remote ke direktori lain '/home/hakase/hakase-suoers.txt'. Itu dapat dilakukan dengan opsi '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. Salin File dan Ubah izin dan pemilik File

Salin file bash pada direktori 'file' ke mesin server jauh dan buat izin file default '0755' dan pemilik file adalah '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. Salin file dengan modul Template

Salin konfigurasi template Jinja2 untuk virtual host nginx dari direktori 'templates' ke direktori '/etc/sites-enabled/' pada mesin jarak jauh. Dengan template Jinja2, kita dapat membuat variabel untuk konfigurasi kita dan membuatnya lebih dapat digunakan kembali.

- name: Copy file using 'template' module
  template:
    src: default.j2
    dest: /etc/nginx/sites-enabled/
    backup: yes
    owner: root
    group: root
    mode: 0644

Unduh File menggunakan Modul Ambil di Ansible

Untuk mengunduh file dari mesin jarak jauh ke node ansible lokal kita, kita dapat menggunakan modul ansible yang disebut 'fetch'.

1. Unduh Dari Mesin Jarak Jauh ke Lokal

Unduh file konfigurasi nginx 'nginx.conf' dari server jauh ke direktori ansible-node lokal '/home/hakase/backup' untuk membuat cadangan. Dan modul pengambilan default akan menyertakan struktur direktori.

- name: Download file from Remote Machine to Local ansible-node directory
  become: yes
  fetch:
    src: /etc/nginx/nginx.conf
    dest: /home/hakase/backup/

2. Unduh Dari Jarak Jauh ke Lokal tanpa struktur Direktori

Unduh dari Remote Machine ke Local ansible-node tanpa struktur direktori dengan menambahkan opsi '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

Edit File dengan Ansible

Sekarang kita akan mengedit file menggunakan modul Ansible. Ada beberapa modul yang harus Anda ketahui untuk mengedit file menggunakan Ansible, seperti blockinfile, lineinfile, dan replace.

Blockinfile akan menyisipkan/menghapus beberapa baris ke file. Lineinfile adalah untuk satu baris, dan modul replace dapat digunakan untuk mengganti string.

1. Sisipkan Beberapa Baris ke File menggunakan 'blockinfile'

Tambahkan konfigurasi beberapa baris ke konfigurasi ssh 'sshd_config' menggunakan modul 'blockinfile'. Dan pengaturan default akan memasukkan konfigurasi baru ke baris paling bawah.

- name: Insert multiple lines and Backup
  blockinfile:
    path: /etc/ssh/sshd_config
    backup: yes
    block: |
      ClientAliveInterval 360
      ClientAliveCountMax 0

2. Sisipkan Beberapa Baris menggunakan Opsi Penanda

Atau jika Anda ingin menyisipkan ke baris tertentu, Anda dapat menggunakan opsi penanda dan diikuti oleh 'insertafter' atau 'insertbefore' dan Regex, atau Anda dapat menggunakan keduanya.

Playbook di bawah ini akan menyisipkan konfigurasi tambahan baru ke file 'sshd_config'. Konfigurasi tambahan akan ditambahkan sebelum garis 'UserPAM' yang diapit oleh penanda default '# 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. Hapus/Hapus Beberapa garis memblokir sekeliling di dalam penanda

Hapus blok di sekeliling garis dengan penanda yang memungkinkan '# 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. Sisipkan baris baru ke file

Masukkan konfigurasi baris baru 'PasswordAuthentication no' di bawah baris regex '#PermitEmptyPasswords' ke konfigurasi 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. Hapus Baris dari file menggunakan modul lineinfile

Untuk menghapus/menghapus baris dari file, Anda dapat menggunakan opsi 'status:tidak ada' dan diikuti dengan ekspresi Reguler baris seperti di bawah ini.

- name: Remove a line from the file
  lineinfile:
    path: /etc/ssh/sshd_config
    state: absent
    regexp: '^PasswordAuthentication'

6. Ganti String Pola dengan Ekspresi Reguler dan Ganti Modul

Sekarang kita akan mengganti string menggunakan modul 'ganti'. Modul replace memerlukan ekspresi reguler sebagai referensi backend untuk mengganti jenis string.

Ubah nama host pada file '/etc/hosts' menggunakan replace the module.

- name: Replace the default
  replace:
    path: /etc/hosts
    regexp: '(\s+)node\.provision\.labs(\s+.*)?$'
    replace: '\1box.hakase.labs\2'
    backup: yes

7. Konfigurasi Batalkan Komentar

Modul ganti dapat digunakan untuk menghapus komentar pada konfigurasi pada sistem Linux. Sederhana, kita dapat menghapus string komentar '#' di awal baris menggunakan modul replace.

Batalkan komentar pada konfigurasi baris 'server_tokens' pada file '/etc/nginx/nginx.conf'.

- name: Uncomment configuration
  replace:
    path: /etc/nginx/nginx.conf
    regexp: '#(\s+)server_tokens'
    replace: 'server_tokens'
    backup: yes

8. Komentar pada Baris Konfigurasi

Di bawah ini adalah komentar konfigurasi baris dengan menambahkan '#' di awal baris.

- name: Comment Line configuration
  replace:
    path: /etc/nginx/nginx.conf
    regexp: '(\s+)gzip on'
    replace: '\n\t#gzip on'
    backup: yes

Setel Atribut File menggunakan modul file di Ansible

Modul file dapat digunakan untuk mengatur atribut file itu sendiri, seperti mengubah pemilik, grup dan izin, membuat symlink, membuat direktori baru, dan menghapus symlink, file, atau direktori.

Buat file symlink pada remote host untuk konfigurasi virtual host nginx yang disebut 'vhost' ke direktori '/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. Buat Direktori Baru menggunakan modul file

Untuk membuat direktori baru menggunakan modul file, kita perlu menggunakan opsi state dengan nilai 'directory' seperti di bawah ini.

- name: Create a New Directory using file
  file:
    path: /etc/nginx/ssl
    state: directory
    owner: root
    group: root
    mode: 0755

Linux
  1. Bagaimana Cara Menyalin File Secara Rekursif Dengan Ekstensi File??

  2. temukan dan salin file menggunakan Bash

  3. Bagaimana cara menggabungkan dua file menggunakan AWK?

  1. Salin file di terminal Linux

  2. Menggabungkan dua file secara manual menggunakan diff

  3. Cara menyalin banyak file secara bersamaan menggunakan scp

  1. Kelola startup menggunakan systemd

  2. Cara Mengelola File Log Menggunakan Logrotate Di Linux

  3. Cara menggunakan Logrotate untuk mengelola file log