Artikel ini akan menunjukkan kepada Anda cara menginstal beberapa paket perangkat lunak pada host CentOS/RHEL menggunakan Ansible loop. Jadi, mari kita mulai.
Prasyarat
Jika Anda ingin mencoba contoh di artikel ini,
1) Anda harus menginstal Ansible di komputer Anda.
2) Anda harus memiliki setidaknya host CentOS/RHEL 7 atau 8 yang dikonfigurasi untuk otomatisasi yang memungkinkan.
Ada banyak artikel di LinuxHint yang didedikasikan untuk Menginstal Ansible dan mengonfigurasi host untuk otomatisasi Ansible. Anda dapat memeriksa ini jika diperlukan.
Menyiapkan Direktori Proyek
Sebelum melangkah lebih jauh, kita akan membuat direktori proyek, hanya untuk menjaga agar sedikit teratur.
Untuk membuat direktori proyek centos-pkg/ dan semua subdirektori yang diperlukan (di direktori kerja Anda saat ini), jalankan perintah berikut:
$ mkdir -pv centos-pkg/playbooks
Setelah direktori proyek dibuat, navigasikan ke direktori proyek, sebagai berikut:
$ cd centos-pkg/
Selanjutnya, buat tuan rumah berkas inventaris, sebagai berikut:
$ nano host
Tambahkan IP host atau nama DNS (vm3.simpul.com, dalam kasus saya) host CentOS/RHEL Anda di file inventaris (satu Host per baris).
Setelah selesai, simpan file dengan menekan
Buat file konfigurasi Ansible mungkin.cfg di direktori proyek Anda, sebagai berikut:
$ nano mungkin.cfg
Kemudian, ketik baris berikut di mungkin.cfg mengajukan.
[default]inventaris = host
host_key_checking = Salah
Setelah selesai, simpan mungkin.cfg file dengan menekan
Coba ping semua host CentOS/RHEL yang telah Anda tambahkan di tuan rumah berkas inventaris, sebagai berikut:
$ mungkin semua -u mungkin -m ping
Seperti yang Anda lihat, host CentOS 8 saya dapat diakses.
Menginstal Paket Perangkat Lunak Tunggal
Bagian ini akan menunjukkan kepada Anda cara menginstal satu paket perangkat lunak menggunakan dnf atau enak modul Ansible di host CentOS/RHEL Anda.
Pertama, buat buku pedoman baru install_package.yaml dalam buku pedoman/ direktori, sebagai berikut:
$ nano buku pedoman/install_package.yaml
Selanjutnya, ketik baris berikut di install_package.yaml mengajukan.
- tuan rumah: semuapengguna: mungkin
menjadi: Benar
tugas:
- nama: Instal paket httpd
dnf:
nama: httpd
negara: sekarang
update_cache: Benar
Setelah selesai, simpan file dengan menekan
Di sini, saya hanya menambahkan satu tugas, Instal paket httpd. Tujuan dari tugas ini adalah untuk menginstal httpd paket di CentOS/RHEL 8.
CentOS/RHEL 7 tidak menggunakan dnf manajer paket, ia menggunakan enak manajer paket. Jadi, jika Anda menggunakan CentOS/RHEL 7, ubah dnf untuk enak, seperti yang ditandai pada tangkapan layar di bawah ini. Tidak ada perubahan lain yang diperlukan.
Itu nama pilihan digunakan untuk memberitahu dnf atau enak modul nama paket yang Anda coba instal. Dalam hal ini, itu akan menjadi httpd paket.
Itu negara pilihan digunakan untuk memberitahu dnf atau enak modul tindakan (i.e. instal, perbarui, hapus) itu harus mengambil paket yang diberikan. Dalam hal ini, tindakannya adalah menyajikan.
Nilai yang didukung dari negara pilihan adalah:
menyajikan - akan menginstal paket jika belum diinstal.
terbaru - akan menginstal paket jika belum diinstal; jika sudah diinstal, modul akan memeriksa pembaruan; jika versi terbaru dari paket tersedia, itu akan menginstal versi baru.
tidak hadir - akan menghapus paket jika diinstal.
jika update_cache pilihan diatur ke Benar, cache repositori paket DNF/YUM akan diperbarui sebelum paket diinstal.
Jalankan install_package.yaml buku pedoman, sebagai berikut:
$ playbook yang memungkinkan-playbook/install_package.yaml
Seperti yang Anda lihat, buku pedoman install_package.yaml berlari dengan sukses.
Seperti yang Anda lihat, httpd paket diinstal pada host CentOS 8 saya, yang telah saya tambahkan di my tuan rumah file inventaris.
$ sudo daftar dnf diinstal | grep httpd
Jika Anda menggunakan CentOS/RHEL 7, gunakan enak manajer paket alih-alih dnf manajer paket untuk memverifikasi apakah paket sudah diinstal.
$ sudo daftar yum diinstal | grep httpd
Menginstal Beberapa Paket Perangkat Lunak Menggunakan With_items Loop
Bagian sebelumnya dari artikel ini menunjukkan kepada Anda cara menginstal satu paket perangkat lunak pada host CentOS/RHEL Anda menggunakan Ansible dnf/enak modul. Bagian ini akan menunjukkan kepada Anda cara menginstal beberapa paket perangkat lunak pada host CentOS/RHEL Anda menggunakan Ansible with_items lingkaran.
Pertama, buat buku pedoman baru install_packages.yaml, sebagai berikut:
$ nano playbook/install_packages.yaml
Ketik baris berikut di install_packages.yaml mengajukan.
- tuan rumah: semuapengguna: mungkin
menjadi: Benar
tugas:
- nama: Instal semua paket
dnf:
nama: ' item '
negara: sekarang
update_cache: Benar
dengan_item:
httpd
php
vsftpd
Setelah selesai, tekan
Di sini, saya telah mendefinisikan nama paket (httpd, php, vsftpd) yang ingin saya instal menggunakan with_items lingkaran.
Saya telah mengganti nama paket dengan variabel barang. Itu barang variabel akan diperbarui dengan nama paket di setiap iterasi.
Jalankan install_packages.yaml buku pedoman, sebagai berikut:
$ buku pedoman playbook yang memungkinkan/install_packages.yaml
Seperti yang Anda lihat, buku pedoman install_packages.yaml berlari dengan sukses.
Itu httpd, php, dan vsftpd paket diinstal pada host CentOS 8 saya, seperti yang Anda lihat pada tangkapan layar di bawah ini.
$ sudo daftar dnf diinstal | grep httpd$ sudo daftar dnf diinstal | grep php
$ sudo daftar dnf diinstal | grep vsftpd
Menginstal Beberapa Paket Perangkat Lunak Menggunakan Loop Loop
Mulai dari Ansible 2.5, cara yang disarankan untuk menggunakan loop di buku pedoman Anda adalah dengan menggunakan lingkaran kata kunci, alih-alih with_items kata kunci. Itu sebabnya Anda melihat pesan peringatan ketika saya menjalankan install_packages.yaml pedoman di bagian awal artikel ini.
Bekerja dengan loop menggunakan lingkaran kata kuncinya sangat mudah.
Pertama, buka buku pedoman install_packages.yaml (dari contoh sebelumnya), sebagai berikut:
$ nano playbook/install_packages.yaml
Dalam install_packages.yaml playbook, ganti saja istilahnya with_items dengan istilah lingkaran, seperti yang ditandai pada tangkapan layar di bawah ini. Anda tidak perlu mengubah apa pun.
Setelah selesai, tekan
Jalankan install_packages.yaml buku pedoman, sebagai berikut:
$ buku pedoman playbook yang memungkinkan/install_packages.yaml
Seperti yang Anda lihat, tugas Instal semua paket berlari dnf/enak modul tiga kali total; sekali untuk setiap putaran barang.
Itu httpd, php, dan vsftpd paket diinstal pada host CentOS 8 saya, seperti yang Anda lihat pada tangkapan layar di bawah ini.
$ sudo daftar dnf diinstal | grep httpd$ sudo daftar dnf diinstal | grep php
$ sudo daftar dnf diinstal | grep vsftpd
Menginstal Beberapa Paket Perangkat Lunak menggunakan Sintaks Array
Bagian sebelumnya dari artikel ini menunjukkan cara menggunakan with_items dan lingkaran loop di Memungkinkan untuk menginstal beberapa paket perangkat lunak pada CentOS/RHEL 7 atau 8, tanpa pengulangan kode apa pun. Bagian ini akan menunjukkan kepada Anda bagaimana melakukan hal yang sama dengan sintaks array yang lebih sederhana.
Pertama, buka install_packages.yaml buku pedoman, sebagai berikut:
$ nano playbook/install_packages.yaml
Hapus with_items atau lingkaran bagian dari tugas dan ubah nama pilihan untuk ['httpd', 'php', vsftpd'], seperti yang ditandai pada tangkapan layar di bawah ini.
Setelah selesai, tekan
Di sini, setiap string yang dikutip di dalam tanda kurung siku ([]) adalah elemen array (nama paket perangkat lunak, dalam kasus saya). Setiap elemen array harus dipisahkan dengan koma (,). Anda dapat menambahkan elemen array sebanyak yang Anda inginkan. Saya telah menambahkan hanya tiga elemen, httpd, php, dan vsftpd.
Jalankan install_packages.yaml buku pedoman, sebagai berikut:
$ buku pedoman playbook yang memungkinkan/install_packages.yaml
Seperti yang Anda lihat, paket perangkat lunak httpd, php, dan vsftpd diinstal pada host CentOS 8 saya.
$ sudo daftar dnf diinstal | grep httpd$ sudo daftar dnf diinstal | grep php
$ sudo daftar dnf diinstal | grep vsftpd
Kesimpulan
Artikel ini, menunjukkan cara menggunakan with_items dan lingkaran loop, serta sintaks Array, dengan Ansible enak/dnf modul untuk menginstal beberapa paket perangkat lunak pada host CentOS/RHEL 7 atau 8 Anda.
Untuk informasi lebih lanjut, periksa dokumentasi resmi Ansible.
[1] Dokumentasi resmi dari Ansible loop
[2] Dokumentasi resmi Ansible with_items
[3] Dokumentasi resmi modul dnf Ansible
[4] Dokumentasi resmi modul yum Ansible