GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

Otomasi adalah ideal IT dan DevOps yang hebat, tetapi menurut pengalaman saya, apa pun yang tidak langsung nyaman mungkin juga tidak ada sama sekali. Ada banyak waktu ketika saya menemukan solusi yang cukup bagus untuk beberapa tugas, dan saya bahkan akan membuat skripnya, tetapi saya berhenti membuatnya benar-benar otomatis karena infrastruktur untuk otomatisasi yang mudah tidak ada di mesin Saya sedang mengerjakan.

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

Alat otomatisasi mudah favorit saya dulunya adalah sistem cron—lama, andal, menghadap pengguna, dan (selain sintaks penjadwalan yang tidak pernah bisa saya komit ke memori) sederhana. Namun, masalah dengan cron adalah ia menganggap komputer menyala 24 jam sehari, setiap hari. Setelah kehilangan satu terlalu banyak cadangan terjadwal, saya menemukan anacron, sistem cron berdasarkan cap waktu daripada waktu yang dijadwalkan. Jika komputer Anda mati saat pekerjaan biasanya sedang berjalan, anacron memastikan bahwa itu berjalan saat komputer dihidupkan kembali. Membuat pekerjaan semudah memasukkan skrip shell ke salah satu dari tiga direktori:cron.daily , cron.weekly , atau cron.monthly (Anda dapat menentukan lebih banyak jika Anda mau). Dengan anacron, saya mendapati diri saya menjatuhkan skrip dan playbook Ansible ke tempatnya untuk segala macam tugas sepele, termasuk pengingat pop-up tentang tanggal jatuh tempo atau acara yang akan datang.

Ini adalah solusi sederhana dan jelas untuk masalah modern, tetapi tidak ada gunanya bagi saya jika anacron tidak diinstal di komputer.

Pengaturan perangkat lunak dengan Ansible

Setiap kali saya menyiapkan komputer baru, apakah itu laptop, workstation, atau server, saya menginstal anacron. Itu mudah, tetapi instalasi anacron hanya menyediakan perintah anacron. Itu tidak mengatur lingkungan pengguna anacron. Jadi saya membuat buku pedoman Ansible untuk mengatur apa yang dibutuhkan pengguna untuk menggunakan anacron dan menginstal perintah anacron.

Pertama, boilerplate Ansible standar:

---
- hosts: localhost
  tasks:

Membuat direktori dengan Ansible

Selanjutnya, saya membuat pohon direktori yang saya gunakan untuk anacron. Anda dapat menganggap ini sebagai semacam crontab transparan.

    - name: create directory tree
      ansible.builtin.file:
        path: "{{ item }}"
        state: directory
      with_items:
        - '~/.local/etc/cron.daily'
        - '~/.local/etc/cron.weekly'
        - '~/.local/etc/cron.monthly'
        - '~/.var/spool/anacron'

Sintaks ini mungkin tampak sedikit aneh, tetapi sebenarnya ini adalah sebuah loop. with_items: direktif mendefinisikan empat direktori untuk dibuat, dan Ansible mengulangi ansible.builtin.file: direktif sekali untuk setiap direktori (nama direktori mengisi {{ item }} variabel). Seperti semua yang ada di Ansible, tidak ada kesalahan atau konflik jika direktori sudah ada.

Menyalin file dengan Ansible

ansible.builtin.copy modul menyalin file dari satu lokasi ke lokasi lain. Agar ini berfungsi, saya perlu membuat file bernama anacrontab . Ini bukan buku pedoman Ansible, jadi saya menyimpannya di ~/Ansible/data saya direktori, tempat saya menyimpan file dukungan untuk buku pedoman saya.

    - name: copy anacrontab into place
      ansible.builtin.copy:
        src: ~/Ansible/data/anacrontab
        dest: ~/.local/etc/anacrontab
        mode: '0755'

anacrontab saya file sederhana dan meniru yang beberapa distribusi menginstal secara default ke /etc/anacron :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1  0  cron.day    run-parts $HOME/.local/etc/cron.daily/
7  0  cron.wek    run-parts $HOME/.local/etc/cron.weekly/
30 0  cron.mon    run-parts $HOME/.local/etc/cron.monthly/

Menjalankan anacron saat login

Sebagian besar distribusi Linux mengonfigurasi anacron untuk membaca tugas dari /etc/anacron . Saya kebanyakan menggunakan anacron sebagai pengguna biasa, jadi saya meluncurkan anacron dari login saya ~/.profile . Saya tidak ingin harus mengingat untuk mengonfigurasinya sendiri, jadi saya meminta Ansible melakukannya. Saya menggunakan ansible.builtin.lineinfile modul, yang membuat ~/.profile jika belum ada dan masukkan baris peluncuran anacron.

    - name: add local anacrontab to .profile
      ansible.builtin.lineinfile:
        path: ~/.profile
        regexp: '^/usr/sbin/anacron'
        line: '/usr/sbin/anacron -t ~/.local/etc/anacrontab'
        create: true

Menginstal anacron dengan Ansible

Untuk sebagian besar sistem saya, dnf modul akan bekerja untuk instalasi paket, tetapi workstation saya menjalankan Slackware (yang menggunakan slackpkg ), dan terkadang distro Linux yang berbeda masuk ke koleksi saya. ansible.builtin.package module menyediakan antarmuka umum untuk menginstal paket, jadi saya menggunakannya untuk buku pedoman ini. Untungnya, saya belum menemukan repo yang bernama anacron apa pun kecuali anacron , jadi untuk saat ini, saya tidak perlu memperhitungkan kemungkinan perbedaan nama paket.

Ini sebenarnya adalah permainan yang terpisah karena instalasi paket memerlukan eskalasi hak istimewa, yang disediakan oleh becomes: true arahan.

- hosts: localhost
  become: true
  tasks:
    - name: install anacron
      ansible.builtin.package:
        name: anacron
        state: present

Menggunakan anacron dan Ansible untuk otomatisasi yang mudah

Untuk menginstal anacron dengan Ansible, saya menjalankan playbook:

$ ansible-playbook ~/Ansible/setup-anacron.yaml

Sejak saat itu, saya dapat menulis skrip shell untuk melakukan beberapa tugas sepele tetapi berulang dan menyalinnya ke ~/.local/etc/cron.daily untuk menjalankannya secara otomatis sekali sehari (atau sekitar itu). Saya juga menulis buku pedoman Ansible untuk tugas-tugas seperti membersihkan folder unduhan saya. Saya menempatkan buku pedoman saya di ~/Ansible , di situlah saya menyimpan permainan Ansible saya, dan kemudian membuat skrip shell di ~/.local/etc/cron.daily untuk mengeksekusi drama tersebut. Mudah, tidak menyakitkan, dan dengan cepat menjadi kebiasaan.


Linux
  1. Cara Menginstal dan Menggunakan Ansible di Debian 11

  2. Pengoptimal Gambar Gratis:Temui YOGA dan Pelajari Cara Menggunakannya

  3. Cara Menginstal dan Menggunakan Etcher di Linux untuk Membuat Live Linux USB

  1. Instal dan gunakan Ansible (Alat Otomatisasi) di CentOS 7

  2. Cara Mengunduh dan Menggunakan Ansible Galaxy Roles di Ansible Playbook

  3. Cara menggunakan Ansible untuk menginstal dan mengkonfigurasi Redis 6 di Debian 11

  1. Cara Menggunakan Variabel dalam Ansible Playbook

  2. Cara Membuat Peran yang Mungkin dan Menggunakannya di Playbook

  3. Cara Membuat dan Menggunakan Fakta Kustom di Ansible