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.