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.
1. Buat Symlink File
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