GNU/Linux >> Belajar Linux >  >> Linux

10 Modul yang memungkinkan untuk otomatisasi sistem Linux

Ansible adalah solusi otomatisasi lengkap untuk lingkungan TI Anda. Anda dapat menggunakan Ansible untuk mengotomatisasi konfigurasi server Linux dan Windows, mengatur penyediaan layanan, menerapkan lingkungan cloud, dan bahkan mengonfigurasi perangkat jaringan Anda.

Modul yang memungkinkan tindakan abstrak pada sistem Anda sehingga Anda tidak perlu khawatir tentang detail implementasi. Anda cukup menjelaskan status yang diinginkan, dan Ansible memastikan sistem target cocok dengannya.

Ketersediaan modul ini adalah salah satu manfaat utama Ansible, dan sering disebut sebagai Ansible yang memiliki "baterai disertakan." Memang, Anda dapat menemukan modul untuk sejumlah besar tugas, dan meskipun ini bagus, saya sering mendengar dari pemula bahwa mereka tidak tahu harus mulai dari mana.

Meskipun pilihan modul Anda akan bergantung secara eksklusif pada kebutuhan Anda dan apa yang Anda coba untuk otomatisasi dengan Ansible, berikut adalah sepuluh modul teratas yang Anda perlukan untuk memulai otomatisasi sistem Ansible untuk Linux.

1. salin

Modul salin memungkinkan Anda untuk menyalin file dari node kontrol Ansible ke host target. Selain menyalin file, ini memungkinkan Anda untuk mengatur kepemilikan, izin, dan label SELinux ke file tujuan. Berikut adalah contoh penggunaan modul salin untuk menyalin file konfigurasi "pesan hari ini" ke host target:

- name:Pastikan file MOTD ada di tempatnya
  salin:
    src:files/motd
    tujuan:/etc/motd
    pemilik:root
    grup:root
    mode:0644

Untuk konten yang tidak terlalu rumit, Anda dapat menyalin konten langsung ke file tujuan tanpa memiliki file lokal, seperti ini:

- nama:Pastikan file MOTD ada di tempatnya
  salin:
    konten:"Selamat datang di sistem ini."
    tujuan:/etc/motd
    pemilik:root
    grup:root
    mode:0644

Modul ini bekerja secara idempoten, artinya modul ini hanya akan menyalin file jika file yang sama belum ada dengan konten dan izin yang sama.

Modul salin adalah opsi yang bagus untuk menyalin sejumlah kecil file dengan konten statis. Jika Anda perlu menyalin banyak file, lihat modul sinkronisasi. Untuk menyalin file dengan konten dinamis, lihat template modul berikutnya.

2. templat

Modul template bekerja mirip dengan copy modul, tetapi memproses konten secara dinamis menggunakan bahasa templat Jinja2 sebelum menyalinnya ke host target.

Misalnya, tentukan template "pesan hari ini" yang menampilkan nama sistem target, seperti ini:

$ vi templates/motd.j2
Selamat datang di {{ inventory_hostname }}.

Kemudian, buat instance template ini menggunakan template modul, seperti ini:

- nama:Pastikan file MOTD ada di tempatnya
  template:
    src:templates/motd.j2
    tujuan:/etc/motd
    pemilik:root
grup:root
    mode:0644

Sebelum menyalin file, Ansible memproses template dan menginterpolasi variabel, menggantinya dengan nama sistem host target. Misalnya, jika nama sistem target adalah rh8-vm03 , hasil filenya adalah:

Selamat datang di rh8-vm03.

Sedangkan copy modul juga dapat menginterpolasi variabel saat menggunakan content parameter, template module memungkinkan fleksibilitas tambahan dengan membuat file template, yang memungkinkan Anda mendefinisikan konten yang lebih kompleks, termasuk for loop, if kondisi, dan lainnya. Untuk referensi lengkap, periksa dokumentasi Jinja2.

Modul ini juga idempoten, dan tidak akan menyalin file jika konten pada sistem target sudah sesuai dengan konten template.

3. pengguna

Modul pengguna memungkinkan Anda untuk membuat dan mengelola pengguna Linux di sistem target Anda. Modul ini memiliki banyak parameter berbeda, tetapi dalam bentuknya yang paling dasar, Anda dapat menggunakannya untuk membuat pengguna baru.

Misalnya, untuk membuat pengguna ricardo dengan UID 2001, bagian dari grup users dan wheel , dan sandi mypassword , terapkan user modul dengan parameter berikut:

- nama:Pastikan pengguna ricardo ada
  pengguna:
    nama:ricardo
    grup:pengguna
    grup:roda
    uid:2001
    sandi:"{{ 'mypassword' | password_hash('sha512') }}"
    status:sekarang

Perhatikan bahwa modul ini mencoba menjadi idempoten, tetapi tidak dapat menjamin itu untuk semua opsinya. Misalnya, jika Anda menjalankan contoh modul sebelumnya lagi, kata sandi akan diatur ulang ke nilai yang ditentukan, mengubah pengguna dalam sistem untuk setiap eksekusi. Untuk membuat contoh ini idempoten, gunakan parameter update_password: on_create , memastikan Ansible hanya menyetel sandi saat membuat pengguna dan bukan pada proses berikutnya.

Anda juga dapat menggunakan modul ini untuk menghapus pengguna dengan menyetel parameter state: absent .

user modul memiliki banyak pilihan bagi Anda untuk mengelola beberapa aspek pengguna. Pastikan Anda melihat dokumentasi modul untuk informasi lebih lanjut.

4. paket

Modul paket memungkinkan Anda untuk menginstal, memperbarui, atau menghapus paket perangkat lunak dari sistem target Anda menggunakan manajer paket standar sistem operasi.

Misalnya, untuk menginstal server web Apache pada mesin Red Hat Linux, terapkan modul seperti ini:

- name:Pastikan paket Apache diinstal
  package:
    name:httpd
    state:present

Selengkapnya tentang Ansible

  • Panduan memulai cepat untuk Ansible
  • Lembar contekan yang memungkinkan
  • Kursus online gratis:Kemungkinan penting
  • Unduh dan instal Ansible
  • eBook:Perusahaan otomatis
  • eBuku:Memungkinkan untuk DevOps
  • eBuku Gratis yang Memungkinkan
  • Artikel terbaru yang memungkinkan

Modul ini agnostik distribusi, dan bekerja dengan menggunakan manajer paket yang mendasarinya, seperti yum/dnf untuk distribusi berbasis Red Hat dan apt untuk Debian. Karena itu, ia hanya melakukan tugas-tugas dasar seperti menginstal dan menghapus paket. Jika Anda memerlukan kontrol lebih besar atas opsi pengelola paket, gunakan modul khusus untuk distribusi target.

Juga, perlu diingat bahwa, meskipun modul itu sendiri bekerja pada distribusi yang berbeda, nama paket untuk masing-masing bisa berbeda. Misalnya, dalam distribusi berbasis Red Hat, nama paket server web Apache adalah httpd , sedangkan di Debian adalah apache2 . Pastikan buku pedoman Anda menangani hal itu.

Modul ini idempoten, dan tidak akan berfungsi jika status sistem saat ini cocok dengan status yang diinginkan.

5. layanan

Gunakan modul layanan untuk mengelola layanan sistem target menggunakan sistem init yang diperlukan; misalnya, systemd.

Dalam bentuknya yang paling dasar, yang harus Anda lakukan adalah memberikan nama layanan dan status yang diinginkan. Misalnya, untuk memulai sshd service, gunakan modul seperti ini:

- nama:Pastikan SSHD dimulai
  layanan:
    nama:sshd
    status:mulai

Anda juga dapat memastikan layanan dimulai secara otomatis saat sistem target melakukan booting dengan memberikan parameter enabled: yes .

Seperti halnya package modul, service modul fleksibel dan bekerja di distribusi yang berbeda. Jika Anda perlu menyempurnakan sistem init target tertentu, gunakan modul yang sesuai; misalnya modul systemd .

Mirip dengan modul lain yang telah Anda lihat sejauh ini, service modul juga idempoten.

6. firewall

Gunakan modul firewalld untuk mengontrol firewall sistem dengan firewalld daemon pada sistem yang mendukungnya, seperti distribusi berbasis Red Hat.

Misalnya, untuk membuka layanan HTTP pada port 80, gunakan seperti ini:

- nama:Pastikan port 80 (http) terbuka
  firewalld:
    layanan:http
    status:diaktifkan
    permanen:ya
    langsung:ya

Anda juga dapat menentukan port khusus alih-alih nama layanan dengan port parameter. Dalam hal ini, pastikan untuk menentukan protokol juga. Misalnya, untuk membuka port TCP 3000, gunakan ini:

- nama:Pastikan port 3000/TCP terbuka
  firewalld:
    port:3000/tcp
    status:diaktifkan
    permanen:ya
    langsung:ya

Anda juga dapat menggunakan modul ini untuk mengontrol firewalld lainnya aspek seperti zona atau aturan kompleks. Pastikan untuk memeriksa dokumentasi modul untuk daftar opsi yang lengkap.

7. berkas

Modul file memungkinkan Anda mengontrol status file dan direktori—menyetel izin, kepemilikan, dan label SELinux.

Misalnya, gunakan file modul untuk membuat direktori /app dimiliki oleh pengguna ricardo , dengan izin baca, tulis, dan eksekusi untuk pemilik dan grup user :

- name:Pastikan direktori /app ada
  file:
    path:/app
    state:directory
    owner:ricardo
    group:users
modus:0770

Anda juga dapat menggunakan modul ini untuk mengatur properti file pada direktori secara rekursif dengan menggunakan parameter recurse: yes atau hapus file dan direktori dengan parameter state: absent .

Modul ini bekerja dengan idempotensi untuk sebagian besar parameternya, tetapi beberapa di antaranya mungkin membuatnya mengubah jalur target setiap saat. Periksa dokumentasi untuk detail lebih lanjut.

8. lineinfile

Modul lineinfile memungkinkan Anda untuk mengelola satu baris pada file yang ada. Ini berguna untuk memperbarui konfigurasi yang ditargetkan pada file yang ada tanpa mengubah sisa file atau menyalin seluruh file konfigurasi.

Misalnya, tambahkan entri baru ke file host Anda seperti ini:

- name:Pastikan host rh8-vm03 di file hosts
  lineinfile:
    path:/etc/hosts
    line:192.168.122.236 rh8-vm03
    state:present

Anda juga dapat menggunakan modul ini untuk mengubah baris yang ada dengan menerapkan parameter regexp untuk mencari jalur yang ada untuk diganti. Misalnya, perbarui sshd_config file untuk mencegah login root dengan memodifikasi baris PermitRootLogin yes ke PermitRootLogin no :

- name:Pastikan root tidak dapat login melalui ssh
  lineinfile:
    path:/etc/ssh/sshd_config
    regexp:'^PermitRootLogin'
    line:PermitRootLogin no
    status:sekarang

Catatan:Gunakan modul layanan untuk memulai ulang layanan SSHD untuk mengaktifkan perubahan ini.

Modul ini juga idempoten, tetapi, dalam kasus modifikasi baris, pastikan ekspresi reguler cocok dengan status asli dan yang diperbarui untuk menghindari perubahan yang tidak perlu.

9. batalkan pengarsipan

Gunakan modul unarchive untuk mengekstrak konten file arsip seperti tar atau zip file. Secara default, ini menyalin file arsip dari node kontrol ke mesin target sebelum mengekstraknya. Ubah perilaku ini dengan memberikan parameter remote_src: yes .

Misalnya, ekstrak konten .tar.gz file yang telah diunduh ke host target dengan sintaks ini:

- nama:Ekstrak konten app.tar.gz
  batalkan pengarsipan:
    src:/tmp/app.tar.gz
    tujuan:/app
    remote_src:yes

Beberapa teknologi arsip memerlukan paket tambahan untuk tersedia di sistem target; misalnya, paket unzip untuk mengekstrak .zip file.

Tergantung pada format arsip yang digunakan, modul ini mungkin atau mungkin tidak bekerja secara idempoten. Untuk mencegah perubahan yang tidak perlu, Anda dapat menggunakan parameter creates untuk menentukan file atau direktori yang akan dibuat modul ini saat mengekstrak konten arsip. Jika file atau direktori ini sudah ada, modul tidak akan mengekstrak konten lagi.

10. perintah

Modul perintah adalah modul yang fleksibel yang memungkinkan Anda untuk menjalankan perintah sewenang-wenang pada sistem target. Dengan menggunakan modul ini, Anda dapat melakukan hampir semua hal pada sistem target selama ada perintah untuk itu.

Meskipun command modul fleksibel dan kuat, itu harus digunakan dengan hati-hati. Hindari menggunakan modul perintah untuk menjalankan tugas jika ada modul lain yang sesuai untuk itu. Misalnya, Anda bisa buat pengguna dengan menggunakan command modul untuk menjalankan useradd perintah, tetapi Anda harus gunakan user sebagai gantinya, karena ia mengabstraksi banyak detail dari Anda, menangani kasus sudut dan memastikan konfigurasi hanya berubah bila diperlukan.

Untuk kasus di mana tidak ada modul yang tersedia, atau untuk menjalankan skrip atau program khusus, command modul masih merupakan sumber yang bagus. Misalnya, gunakan modul ini untuk menjalankan skrip yang sudah ada di mesin target:

- name:Jalankan penginstal aplikasi
  perintah:"/app/install.sh"

Secara default, modul ini tidak idempoten, karena Ansible mengeksekusi perintah setiap saat. Untuk membuat command modul idempoten, Anda dapat menggunakan when kondisi untuk hanya menjalankan perintah jika ada kondisi yang sesuai, atau creates argumen, mirip dengan contoh modul unarchive.

Apa selanjutnya?

Dengan menggunakan modul ini, Anda dapat mengonfigurasi seluruh sistem Linux dengan menyalin, membuat templat, atau memodifikasi file konfigurasi, membuat pengguna, menginstal paket, memulai layanan sistem, memperbarui firewall, dan banyak lagi.

Jika Anda baru mengenal Ansible, pastikan Anda memeriksa dokumentasi tentang cara membuat buku pedoman untuk menggabungkan modul-modul ini untuk mengotomatisasi sistem Anda. Beberapa tugas ini memerlukan berjalan dengan hak tinggi untuk bekerja. Untuk detail selengkapnya, periksa dokumentasi eskalasi hak istimewa.

Pada Ansible 2.10, modul diatur dalam koleksi. Sebagian besar modul dalam daftar ini adalah bagian dari ansible.builtin koleksi dan tersedia secara default dengan Ansible, tetapi beberapa di antaranya adalah bagian dari koleksi lain. Untuk daftar koleksi, periksa dokumentasi Ansible.


Linux
  1. Apa Itu Linux? Panduan untuk Pengguna Non-teknis

  2. Demystifying Memungkinkan untuk sysadmin Linux

  3. Pengantar singkat tentang peran Ansible untuk administrasi sistem Linux

  1. 8 tips untuk otomatisasi sistem Linux yang andal

  2. 3 langkah untuk mengidentifikasi kandidat otomatisasi sistem Linux

  3. 10 IPTV Terbaik untuk Sistem Linux/Ubuntu pada tahun 2022

  1. Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

  2. 3 Perintah Linux yang Berguna untuk Administrator Sistem

  3. Tabel panggilan sistem Linux atau lembar contekan untuk Majelis