mungkin

Cara Menggunakan Modul Daftar yang Mungkin

Cara Menggunakan Modul Daftar yang Mungkin
Di Ansible, Anda dapat menjalankan perintah shell apa pun di host Ansible Anda, host yang akan Anda konfigurasikan dengan Ansible. Perintah shell ini mungkin memiliki output. Secara default, output diabaikan. Jika Anda ingin menyimpan output dalam variabel dan menggunakannya nanti, maka Anda dapat menggunakan Ansible daftar modul. Artikel ini akan menunjukkan cara menggunakan Ansible daftar modul untuk menyimpan output perintah dalam variabel dan mengaksesnya nanti di buku pedoman Ansible Anda.

Prasyarat

Jika Anda ingin mencoba contoh dalam artikel ini, Anda harus:

1) Pasang Ansible di komputer Anda.

2) Memiliki host Ubuntu 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 artikel ini jika perlu.

Menyiapkan Direktori Proyek

Sebelum melanjutkan lebih jauh, siapkan direktori proyek Ansible baru, hanya untuk menjaga agar semuanya tetap teratur.

Untuk membuat direktori proyek mendaftar-demo/ dan semua subdirektori yang diperlukan (di direktori kerja Anda saat ini), jalankan perintah berikut:

$ mkdir -pv register-demo/playbooks

Setelah direktori proyek dibuat, navigasikan ke direktori proyek, sebagai berikut:

$ cd mendaftar-demo/

Membuat tuan rumah berkas inventaris, sebagai berikut:

$ nano host

Tambahkan IP host atau nama DNS host Ubuntu Anda di file inventaris (satu host per baris), seperti yang ditunjukkan pada gambar di bawah.

Di sini, saya telah menambahkan Ubuntu 20 saya.04 LTS tuan rumah vm3.simpul.com dalam ubuntu20 kelompok.

Setelah selesai, simpan file dengan menekan + X, diikuti oleh kamu dan .

Buat file konfigurasi Ansible mungkin.cfg di direktori proyek Anda, sebagai berikut:

$ nano mungkin.cfg

Selanjutnya, ketik baris berikut di in mungkin.cfg mengajukan:

[default]
inventaris           = host
host_key_checking   = Salah

Setelah selesai, simpan mungkin.cfg file dengan menekan + X, diikuti oleh kamu dan .

Sekarang, coba ping host Ubuntu Anda, sebagai berikut:

$ memungkinkan ubuntu20 -u memungkinkan -m ping

Seperti yang Anda lihat, Ubuntu 20 saya.04 tuan rumah vm3.simpul.com dapat diakses.

Contoh 1: Dasar-dasar

Dalam contoh ini, saya akan menunjukkan kepada Anda beberapa dasar dari Ansible daftar modul. Saya akan menggunakan Ansible untuk membuat kata sandi acak di Ubuntu 20.04 host menggunakan using pwgen perintah, simpan kata sandi dalam variabel menggunakan daftar modul, dan cetak kata sandi di layar.

Pertama, buat buku pedoman baru generate_pass.yaml dalam buku pedoman/ direktori, sebagai berikut:

$ nano playbook/generate_pass.yaml

Ketik baris berikut di hasilkan_pass.yaml mengajukan:

- host: ubuntu20
pengguna: mungkin
menjadi: Benar
tugas:
- nama: Pastikan pwgen diinstal
tepat:
nama: pwgen
negara: sekarang
update_cache: Benar
- nama: Buat kata sandi
kulit: pwgen -N 1 -s 30
daftar: mypass
- nama: Cetak kata sandi yang dihasilkan
debug:
msg: "Kata sandinya adalah mypass "

Setelah selesai, tekan + X, diikuti oleh kamu dan , untuk menyelamatkan generate_pass.yaml mengajukan.

Baris berikut memberi tahu Ansible untuk menjalankan buku pedoman generate_pass.yaml pada setiap host di ubuntu20 kelompok. Dalam kasus saya, buku pedoman akan dijalankan di host vm3.simpul.com.

Dalam buku pedoman ini, saya akan mendefinisikan tiga tugas.

Tugas pertama akan memastikan bahwa pwgen paket diinstal.

Tugas kedua akan menghasilkan kata sandi 30 karakter acak menggunakan pwgen perintah. Saya akan menggunakan daftar modul untuk menyimpan kata sandi yang dihasilkan di pas saya variabel.

Tugas ketiga akan mencetak pas saya variabel menggunakan Ansible debug modul.

Jalankan buku pedoman generate_pass.yaml menggunakan perintah berikut:

$ buku pedoman playbook yang memungkinkan/generate_pass.yaml

Seperti yang Anda lihat, buku pedoman berjalan dengan sukses. Kata sandi juga telah dibuat.

Tapi, mengapa variabel pas saya mencetak begitu banyak item?

Nah, variabel pas saya adalah objek yang berisi beberapa properti penting.

Sifat yang paling penting dari masing-masing daftar variabel adalah sebagai berikut:

cmd - Perintah yang dijalankan untuk menghasilkan output.

stdout - Keluaran dari perintah.

stderr - Output kesalahan dari perintah.

Mulailah - Tanggal dan waktu ketika perintah mulai dijalankan.

akhir - Tanggal dan waktu ketika perintah selesai dijalankan.

delta - Waktu yang dibutuhkan untuk menjalankan perintah. Inilah perbedaan antara akhir dan Mulailah properti.

stdout_lines - Array yang berisi setiap baris output dari perintah. Sama dengan stdout, tapi stdout memisahkan baris menggunakan karakter baris baru (\n) alih-alih array.

stderr_lines -  Array yang berisi setiap baris keluaran kesalahan dari perintah. Sama dengan stderr, tapi stderr memisahkan baris menggunakan karakter baris baru (\n) alih-alih array.

Jika Anda hanya ingin mencetak/mengakses string kata sandi (yang sangat mungkin), Anda dapat mencetak/mengakses stdout milik dari pas saya variabel di buku pedoman Anda, seperti yang ditandai pada tangkapan layar di bawah.

$ nano playbook/generate_pass.yaml

Setelah selesai, jalankan playbook hasilkan_pass.yaml lagi. Hanya string kata sandi yang akan dicetak, seperti yang Anda lihat pada tangkapan layar di bawah ini.

Itu mencakup dasar-dasar Ansible daftar modul.

Contoh 2: Isi Direktori Toko

Dalam contoh ini, saya akan menunjukkan cara menyimpan konten direktori dalam variabel menggunakan Ansible daftar modul, serta cara mengulanginya.

Pertama, buat buku pedoman baru get_dir_contents.yaml dalam buku pedoman/ direktori.

$ nano buku pedoman/get_dir_contents.yaml

Selanjutnya, ketik baris berikut di in get_dir_contents.yaml buku pedoman:

- host: ubuntu20
pengguna: mungkin
menjadi: Benar
tugas:
- nama: Daftar semua file dan direktori di /home/ansible
shell: ls /home/ansible
daftar: dir_contents
- nama: Cetak konten direktori menggunakan loop
debug:
pesan: " item "
loop: " dir_contents.stdout_lines "

Setelah selesai, tekan + X, diikuti oleh kamu dan , untuk menyelamatkan hasilkan_pass.yaml mengajukan.

Dalam buku pedoman ini, saya akan mendefinisikan dua tugas.

Tugas pertama mencantumkan semua konten of /rumah/mungkin direktori dan menyimpannya di dir_contents variabel.

Tugas kedua mencetak dir_contents variabel.

Jalankan get_dir_contents.yaml buku pedoman, sebagai berikut:.

$ buku pedoman playbook yang memungkinkan/get_dir_contents.yaml

Seperti yang Anda lihat, stdout_lines properti menyimpan konten direktori sebagai array. Itu stdout properti juga disimpan dalam isi direktori. Properti ini dipisahkan oleh karakter baris baru (\n). Dalam contoh ini, stdout_lines properti mudah untuk dikerjakan.

Selanjutnya, ulangi konten direktori menggunakan loop.

Untuk melakukan ini, buka get_dir_contents.yaml playbook dan ubah tugas kedua, seperti yang ditandai pada tangkapan layar di bawah.

$ nano buku pedoman/get_dir_contents.yaml

Di sini, saya mengulangi dir_contents.stdout_lines array menggunakan loop dan mencetak item array menggunakan Ansible debug modul. Dalam tugas ini, barang variabel adalah variabel loop yang digunakan untuk mengulangi elemen array.

Jalankan get_dir_contents.yaml buku pedoman, sebagai berikut:

$ playbook yang memungkinkan-playbook/get_dir_contents.yaml

Seperti yang Anda lihat, isi dari /rumah/mungkin direktori dicetak di layar.

Contoh 3: Direktori Cadangan

Dalam contoh ini, saya akan menunjukkan cara mencadangkan direktori menggunakan Ansible daftar, mengajukan, dan salinan modul.

Pertama, buat buku pedoman baru backup_home_dir.yaml dalam buku pedoman/ direktori, sebagai berikut:

$ nano buku pedoman/backup_home_dir.yaml

Selanjutnya, ketik baris berikut di in backup_home_dir.yaml mengajukan.

- host: ubuntu20
pengguna: mungkin
menjadi: Benar
tugas:
- nama: Dapatkan direktori home / home / konten yang memungkinkan
shell: ls /home/ansible
daftar: dir_contents
- nama: Buat direktori baru /tmp/ansible
mengajukan:
jalur: /tmp/mungkin
negara bagian: direktori
- nama: Cadangkan direktori home /home/ansible ke /tmp/ansible
salinan:
src: /home/ansible/ item
tujuan: /tmp/mungkin/
remote_src: Benar
loop: " dir_contents.stdout_lines

Setelah selesai, tekan + X, diikuti oleh kamu dan , untuk menyelamatkan backup_home_dir.yaml mengajukan.

Dalam buku pedoman ini, saya akan mendefinisikan tiga tugas.

Tugas pertama menyimpan konten /rumah/mungkin direktori (direktori yang akan saya buat cadangannya) di dir_contents variabel menggunakan Ansible daftar modul.

Tugas kedua membuat direktori baru /tmp/mungkin menggunakan Ansible mengajukan modul. Ini adalah direktori tempat cadangan akan disimpan.

Tugas ketiga berputar melalui dir_contents.stdout_lines array dan menggunakan Ansible salinan modul untuk menyalin setiap direktori ke /tmp/mungkin/ direktori.

Jalankan backup_home_dir.yaml buku pedoman, sebagai berikut:

$ buku pedoman playbook yang memungkinkan/backup_home_dir.yaml

Seperti yang Anda lihat, di Ubuntu 20 saya.04 LTS host, pencadangan berhasil.

Contoh 4: Jalankan atau Lewati Tugas

Dalam contoh ini, saya akan menunjukkan kepada Anda bagaimana menjalankan atau melewati tugas, tergantung pada variabel yang Anda daftarkan, menggunakan: daftar modul.

Pertama, buat buku pedoman baru daftar_kondisi.yaml dalam buku pedoman/ direktori sebagai berikut:

$ nano buku pedoman/register_conditions.yaml

Selanjutnya, ketik baris berikut di in daftar_kondisi.yaml mengajukan.

- host: ubuntu20
pengguna: mungkin
menjadi: Benar
tugas:
- nama: Daftar isi direktori
shell: ls /home/ansible/test3
daftar: dir_contents
- nama: Periksa apakah direktori kosong
debug:
msg: "Direktori kosong."
kapan: dir_contents.stdout == ""

Setelah selesai, tekan + X, diikuti oleh kamu dan , untuk menyelamatkan daftar_kondisi.yaml mengajukan.

Dalam buku pedoman ini, saya telah menetapkan dua tugas.

Tugas pertama menyimpan konten /home/mungkin/test3 direktori di dir_contents variabel.

Tugas kedua memeriksa apakah dir_contents.stdout adalah string kosong, atau apakah direktori /home/mungkin/test3 kosong. Jika direktori kosong, pesannya Direktori kosong akan mencetak.

Jalankan daftar_kondisi.yaml buku pedoman, sebagai berikut:

$ playbook/daftar_kondisi yang memungkinkan-playbook.yaml

Seperti yang Anda lihat, buku pedoman berjalan dengan sukses.

Sejak direktori /home/mungkin/test3 kosong, buku pedoman mencetak pesan Direktori kosong.

Selanjutnya, buat file baru di /home/mungkin/test3 direktori.

$ sentuh tes3/file saya

Sejak /home/mungkin/test3 direktori tidak lagi kosong, tugasnya Periksa apakah direktori kosong dilewati, seperti yang Anda lihat pada tangkapan layar di bawah ini.

$ playbook/daftar_kondisi yang memungkinkan-playbook.yaml

Kesimpulan

Kemungkinan daftar modul sangat berguna untuk otomatisasi server. Artikel ini menunjukkan kepada Anda dasar-dasar daftar modul, termasuk contoh penggunaan Ansible daftar modul untuk penyimpanan dan pencadangan direktori, dan untuk menjalankan tugas direktori.

OpenTTD vs Simutrans
Membuat simulasi transportasi Anda sendiri bisa menyenangkan, santai, dan sangat menarik. Itulah mengapa Anda perlu memastikan bahwa Anda mencoba game...
Tutorial OpenTTD
OpenTTD adalah salah satu game simulasi bisnis paling populer di luar sana. Dalam game ini, Anda perlu membuat bisnis transportasi yang luar biasa. Na...
SuperTuxKart untuk Linux
SuperTuxKart adalah judul hebat yang dirancang untuk memberi Anda pengalaman Mario Kart gratis di sistem Linux Anda. Ini cukup menantang dan menyenang...