Cara membuat drama dan buku main ansible - Bahagian 5

Cara membuat drama dan buku main ansible - Bahagian 5

Di dalam ini Bahagian 5 siri Ansible, kami akan menerangkan cara membuat Bermain ansible dan Buku Playbooks menggunakan modul ansible.

Ansible Kapal dengan skrip mandiri yang dipanggil modul yang digunakan dalam Buku Playbooks Untuk pelaksanaan tugas khusus pada nod jauh.

Modul Datang berguna untuk mengautomasikan tugas -tugas seperti pengurusan pakej, mengarkib dan menyalin fail untuk menyebut hanya beberapa. Mereka membolehkan anda membuat tweak pada fail konfigurasi dan menguruskan peranti seperti router, suis, pengimbang beban, firewall dan pelbagai peranti lain.

Objektif subtopik ini adalah untuk memberi anda gambaran keseluruhan mengenai pelbagai tugas yang dapat dicapai oleh Modul ansible:

Pengurusan Pakej di Linux

Pengurusan Pakej adalah salah satu tugas yang paling penting dan kerap yang dibawa oleh pentadbir sistem. Kapal Ansible dengan modul yang membantu anda melaksanakan tugas pengurusan pakej di kedua -dua Topi merah dan Debian sistem berasaskan.

Mereka agak mudah ditebak. Ada modul apt Untuk Pengurusan Pakej APT untuk Debian berdasarkan, yang lama Modul Yum untuk pengurusan pakej yum dan Modul DNF dikaitkan dengan pengagihan RHEL yang lebih baru.

Berikut adalah beberapa contoh bagaimana modul boleh digunakan dalam a Playbook:

Contoh 1: Memasang Webserver Apache di RHEL 8

--- - Nama: Pasang Hosts Webserver Apache: Tugas Webservers: - Nama: Pasang Httpd Dnf: Nama: Httpd Negeri: Terkini 

Contoh 2: Memasang Webserver Apache di Debian 10

--- - Nama: Pasang Hosts Webserver Apache: Pangkalan Data Tugas: - Nama: Pasang Apache Webserver Apt: Nama: Apache2 Negeri: Terkini 

Modul perkhidmatan

Modul Perkhidmatan membolehkan pentadbir sistem memulakan, menghentikan, mengemas kini, menaik taraf dan memuatkan semula perkhidmatan pada sistem.

Contoh 1: Memulakan Webserver Apache

--- - Nama: Mula Perkhidmatan Httpd, Jika Tidak Memulakan Perkhidmatan: Nama: Httpd Negeri: Bermula 

Contoh 2: Menghentikan Webserver Apache

--- - Nama: Stop Service Httpd Service: Nama: Httpd Negeri: Berhenti 

Contoh 3: Mulakan semula antara muka rangkaian ENP2S0

--- - Nama: Mulakan semula Perkhidmatan Rangkaian untuk Interface ETH0 Service: Nama: Rangkaian Negeri: Mulakan semula Args: ENP2S0 

Salin modul

Seperti namanya, Salin Modul menyalin fail dari satu lokasi di mesin jauh ke lokasi yang berbeza di mesin yang sama.

Contoh 1: Menyalin fail dari tempatan ke Linux Jauh

--- - Nama: Salin fail dengan pemilik dan kebenaran salinan: src:/etc/files/tecmint.conf dest: /srv /tecmint.Pemilik Conf: Kumpulan Tecmint: Mod Tecmint: '0644' 

Buku playbook menyalin fail konfigurasi Tecmint.Conf dari /etc/fail/ direktori ke /srv/ direktori sebagai Tecmint pengguna dengan 0644 keizinan.

Kebenaran juga boleh diwakili menggunakan perwakilan simbolik seperti yang ditunjukkan pada baris terakhir.

Contoh 2: Menyalin fail dari tempatan ke Linux Jauh

--- - Nama: Salin fail dengan pemilik dan kebenaran salinan: src:/etc/files/tecmint.conf dest: /srv /tecmint.Pemilik Conf: Kumpulan Tecmint: Mod Tecmint: U = RW, G = R, O = R 

Kebenaran dalam contoh sebelumnya dapat diwakili seperti yang ditunjukkan pada baris terakhir, pengguna diberikan Baca dan tulis Kebenaran, kumpulan itu diberikan keizinan menulis, dan seluruh dunia diberikan kebenaran baca.

Modul fail

The modul fail digunakan untuk membawa banyak operasi fail termasuk membuat fail & direktori, memberikan kebenaran fail, dan menetapkan symlinks.

Contoh 1: Lakukan keizinan fail Linux

--- - Nama: Tukar Pemilikan Fail, Kumpulan, dan Kebenaran Fail: Path: /etc /Tecmint.Pemilik Conf: Kumpulan Tecmint: Mod Tecmint: '0644' 

Main di atas membuat fail yang dipanggil Tecmint.Conf di dalam /dan lain-lain keizinan tetapan direktori ke 0644.

Contoh 2: Padam fail Linux

--- - Nama: Keluarkan fail (padam fail) Fail: Path: /etc /tecmint.keadaan conf: tidak hadir 

Ini membuang atau memadam fail Tecmint.Conf.

Contoh 3: Buat direktori

--- - Nama: Buat direktori jika tidak ada fail: Path: /etc /mydirectory State: Mod Direktori: '0777' 

Ini akan membuat direktori di /dan lain-lain keizinan tetapan direktori ke 0777.

Contoh 4: Recursiverly memadam direktori

--- - Nama: Menghapus Fail direktori secara rekursif: Path: /etc /tecmint.keadaan conf: tidak hadir 

Permainan di atas memadamkan direktori secara rekursif.

Modul lineinfile

The lineinfile Modul berguna apabila anda ingin menukar satu baris dalam fail. Ia boleh menggantikan garis yang ada.

Contoh 1: memanipulasi fail di linux

--- - Nama: Pastikan selinux ditetapkan untuk menguatkuasakan modeinfile mod: Path:/etc/selinux/config regexp: '^selinux =' line: selinux = dilumpuhkan 

Main di atas set Selinux nilai kepada kurang upaya.

Selinux = dilumpuhkan 

Contoh 2: Mengubah fail di Linux

--- - Nama: Tambahkan baris ke fail jika fail tidak wujud, tanpa lulus regexp lineinfile: Path: /etc /hosts Line: 10.200.50.51 Tecmint.com membuat: ya 

Ini menambah entri 10.200.50.51 Tecmint.com kepada /etc/hos fail.

Modul Arkib

An Arkib modul digunakan untuk penciptaan arkib termampat satu atau beberapa fail. Ia menganggap sumber mampatan wujud di destinasi sasaran. Selepas arkib, fail sumber kemudian boleh dipadam atau dikeluarkan menggunakan pernyataan keluarkan = benar.

Contoh 1: Buat fail arkib

- Nama: Direktori Compress/Path/to/tecmint_dir/ke/Path/to/tecmint.Arkib TGZ: Path:/Path/To/Tecmint_dir Dest:/Path/To/Tecmint.tgz ini memampatkan direktori/laluan/tecmint_dir ke/jalan/ke/tecmint.TGZ 

Contoh 2: Buat fail arkib dan keluarkan

- Nama: memampatkan fail/laluan biasa/ke/tecmint ke/jalan/ke/foo.gz dan keluarkan arkib: jalan:/jalan/to/tecmint dest:/path/to/tecmint.TGZ Buang: Ya 

Dalam permainan di atas, fail sumber /jalan/ke/tecmint dipadam setelah arkib selesai.

Contoh 3: Buat fail arkib

- Nama: Buat Arkib BZ2/Path/To/Tecmint Archive: Path:/Path/To/Tecmint Format: BZ2 

Ini mewujudkan fail termampat di BZ2 Format dari /jalan/ke/tecmint fail.

Modul Git

Modul ini menguruskan pemotongan git repositori perisian.

Contoh 1: Periksa repositoires git

- git: repo: 'https: // foosball.Contoh.org/jalan/ke/repo.Git 'Dest: /SRV /Versi Checkout: Release-0.22 

Modul Perintah

Salah satu modul yang paling biasa digunakan, perintah modul mengambil nama arahan dan kemudian diikuti dengan senarai hujah. Perintah adalah lulus dengan cara yang sama yang anda akan menaip dalam shell linux.

Contoh 1: Jalankan arahan

- Nama: Melaksanakan Perintah Menggunakan Perintah Modul Perintah: Cat HelloWorld.txt 

Contoh 2: Semak uptime Linux Jauh

--- - Nama: Semak Host Host Host Remote: Tugas Pelayan: - Nama: Jalankan Perintah Uptime Over Modul Perintah Daftar: UptimeOutput Perintah: "Uptime" - Debug: Var: UptimeOutput.stdout_lines 

Modul Perintah Mendapatkan Masa Server Jauh.

Pembolehubah untuk mendapatkan hasil arahan yang berjalan

Biasanya, Ansible PlayBooks digunakan untuk melaksanakan tugas pada tuan rumah yang diuruskan tanpa memaparkan output pada baris arahan. Walau bagaimanapun, ada contoh bahawa anda mungkin dikehendaki menangkap output atau hasil. Dalam bahagian ini, kami membimbing anda melalui bagaimana anda dapat menangkap output buku main dalam pembolehubah dan kemudian memaparkannya.

Daftar Ansible digunakan untuk menangkap output tugas dan menyimpannya pembolehubah. Pemboleh ubah akan selepas itu mengandungi tugas tugas.

Sebagai contoh, mari kita anggap bahawa anda ingin menyemak penggunaan cakera nod yang diuruskan dalam direktori akar masing -masing menggunakan df -th / perintah. Anda akan menggunakan 'Perintah' modul untuk menentukan arahan dan 'Daftar' Untuk menjimatkan output STD dalam pemboleh ubah.

Untuk memaparkan arahan, anda akan menggunakan 'Debug' modul bersama nilai pulangan stdout.

--- - Hos: Semua Menjadi: Ya Tugas: - Nama: Jalankan /Boot Penggunaan pada Hos Perintah: 'DF -Th /' Daftar: DF - Debug: Var = DF.stdout 

Sekarang, mari kita jalankan buku main. Dalam kes ini, kami telah menamakan buku main kami check_disk_space.yml.

# ansible-playbook check_disk_space.yml 
Semak penggunaan cakera nod yang diuruskan oleh Ansible

Seperti yang anda lihat, output semuanya bergegas dan menjadikannya sukar untuk diikuti.

Untuk menyelaraskan output dan memudahkan dibaca, ganti stdout nilai pulangan dengan stdout_lines.

--- - Hos: Semua Menjadi: Ya Tugas: - Nama: Jalankan /Boot Penggunaan pada Hos Perintah: 'DF -Th /' Daftar: DF - Debug: Var = DF.stdout_lines 

Gunakan syarat untuk mengawal pelaksanaan permainan

Sama seperti dalam bahasa pengaturcaraan, Kenyataan bersyarat digunakan apabila lebih daripada satu hasilnya mungkin. Mari kita lihat beberapa pernyataan bersyarat yang biasa digunakan dalam buku main ansible.

Apabila pernyataan

Kadang -kadang, anda mungkin mahu melaksanakan tugas pada nod tertentu dan bukan orang lain. The 'bila' Kenyataan bersyarat agak mudah digunakan dan dilaksanakan dalam buku main. Apabila menggunakan 'bila' Fasal hanya mengisytiharkan keadaan bersebelahan dengan klausa seperti yang ditunjukkan:

Bila: Keadaan 

Apabila keadaan itu berpuas hati, maka tugas itu dilakukan pada sistem terpencil.

Mari lihat beberapa contoh:

Contoh 1: Menggunakan ketika pengendali

--- - Hos: Semua Tugas: - Nama: Pasang nginx pada debian apt: name = nginx state = hadir bila: ansible_os_family == "debian" 

Permainan di atas dipasang Nginx Webserver pada tuan rumah menjalankan keluarga debian distros.

Anda juga boleh menggunakan Atau dan Dan pengendali bersama ketika pernyataan bersyarat.

Contoh 2: Menggunakan dan pengendali dengan bila

--- - Hos: Semua Tugas: - Nama: Pasang nginx pada debian apt: name = nginx state = hadir bila: ansible_os_family == "debian" dan ansible_distribusi_version == "18.04 ” 

Apabila menggunakan Dan pengendali, kedua -dua kenyataan mesti berpuas hati untuk tugas itu dilaksanakan.

Main di atas memasang nginx pada nod yang menjalankan keluarga debian OS iaitu versi 18.04. Jelas, ini akan menjadi Ubuntu 18.04.

Contoh 3: Menggunakan atau pengendali dengan bila

Dengan Atau pengendali, tugas itu dilaksanakan jika salah satu syarat dipenuhi.

--- - Hos: Semua Tugas: - Nama: Pasang nginx pada debian apt: name = nginx state = hadir bila: ansible_os_family == "debian" atau ansible_os_family == "suse" 

Main di atas memasang webservers nginx sama ada keluarga Debian atau Suse OS atau kedua -duanya.

CATATAN: Sentiasa pastikan untuk menggunakan tanda persamaan berganda == Semasa menguji keadaan.

Keadaan dalam gelung

Keadaan juga boleh digunakan dalam gelung. Katakan contohnya anda mempunyai senarai pelbagai pakej yang perlu dipasang pada nod jauh.

Dalam buku main di bawah, kami mempunyai array yang dipanggil pakej mengandungi senarai pakej yang perlu dipasang. Tugas -tugas ini akan dijalankan satu demi satu jika diperlukan Fasal ditetapkan ke Benar.

--- - Nama: Pasang Pakej Perisian Hos: Semua Vars: Pakej: • Nama: Nginx Diperlukan: Benar • Nama: Mysql Diperlukan: Benar • Nama: Apache Diperlukan: Tugas Palsu: • Nama: Pasang "Item.nama "pada debian apt: name:" item.Nama "Negeri: Hadir Bila: Item.diperlukan == gelung benar: "Packages" 

Konfigurasikan pengendalian ralat

Kadang -kadang, tugas gagal semasa menjalankan buku main. Mari kita anggap anda menjalankan 5 tugas pada 3 pelayan seperti yang ditunjukkan dalam buku main di bawah. Sekiranya ralat berlaku pada tugas 3 (bermula MySQL) pada pelayan 2, Ansible akan berhenti melaksanakan tugas yang tinggal di Server 2 dan cuba menyelesaikan tugas yang tinggal di seluruh pelayan.

--- - Nama: Pasang Pakej Perisian Hos: Server1, Server2, Server3 Tugas: - Nama: Pasang Ketergantungan <> - Nama: Pasang pangkalan data mysql <> - Nama: Mulakan MySQL <> - Nama: Pasang nginx <> - Nama: Mula nginx <> 

Sekiranya anda mahukan konsistensi dalam pelaksanaan buku main, misalnya, hentikan pelaksanaan buku main, sekiranya salah satu pelayan gagal, tambahkan pilihan.

--- - Nama: Pasang Pakej Perisian Hos: Server1, Server2, Server3 Any_errors_fatal: Benar Tugas: 

Dengan cara ini, jika satu tugas gagal pada satu pelayan, Ansible akan menghentikan pelaksanaan keseluruhan buku play di semua pelayan dan keluar.

Sekiranya anda ingin playbook mengabaikan kesilapan dan teruskan untuk melaksanakan set tugas yang selebihnya, maka gunakan Abaikan_errors: Pilihan Benar.

--- - Nama: Pasang Pakej Perisian Hos: Server1, Server2, Server3 Tugas: - Nama: Pasang Ketergantungan <>  Abaikan_errors: Benar 

Buat buku main untuk mengkonfigurasi sistem ke keadaan yang ditentukan

Dalam bahagian ini, kita melihat beberapa pilihan tambahan yang tersedia semasa menjalankan buku main.

Mari mulakan dengan Periksa mod atau Lari kering pilihan. Pilihan mod kering atau semakan digunakan semasa menjalankan buku main untuk memeriksa sama ada sebarang kesilapan akan ditemui dan jika terdapat sebarang perubahan yang akan dibuat pada tuan rumah yang diuruskan. Walau bagaimanapun, ia tidak membuat perubahan pada nod jauh.

Contohnya, untuk mengeringkan buku main yang dipanggil httpd.yml yang memasang dan memulakan run Webserver Apache:

# Ansible-playbook httpd.YML -CHECK 
Dry Run A Ansible Playbook

Pilihan lain yang perlu kita lihat ialah --Start-at-Task pilihan. Ini digunakan ketika menyatakan nama tugas yang harus dimulakan oleh buku main.

Mari kita ambil contoh: buku playbook di bawah menyatakan 2 tugas: main pertama memasang pelayan web Apache dan kedua -dua pemasangan utiliti htop.

--- - Nama: Pasang Host Httpd: Semua Tugas: Yum: Nama: Httpd Negeri: Dipasang - Nama: Pasang Htop Yum: Nama: HTOP Negeri: Bermula 

Sekiranya anda ingin melangkau memasang webserver Apache dan sebaliknya pasang utiliti htop run:

# Ansible-Playbook Playbook.YML-Start-at-Task "Pasang HTOP" 
Pasang Pakej Menggunakan Ansible Playbook

Terakhir, anda boleh menandakan tugas atau bermain anda dengan menambahkan tag Pilihan untuk buku main anda seperti yang ditunjukkan. Ini berguna apabila anda mempunyai buku besar yang besar dan anda ingin menjalankan tugas tertentu dari keseluruhan buku main.

--- - Nama: Pasang HTTPD Tags: Pasang dan mulakan Hos: Semua Tugas: Yum: Nama: Httpd Negeri: Dipasang Tags: Pasang • Perkhidmatan: Nama: HTTPD Negeri: Bermula 
# Ansible-Playbook Playbook.YML -TAGS "Pasang" 

Untuk menghilangkan tag menggunakan --Skip-tags pilihan seperti yang ditunjukkan.

# Ansible-Playbook Playbook.YML--kip-tag "Pasang" 
Kesimpulan

Dalam topik ini, kami membawa anda melalui modul yang biasa digunakan di Ansible, Cara mengambil semula STDOUT dari pelaksanaan buku main untuk analisis, menggunakan syarat dalam buku main dan bagaimana menguruskan kesilapan yang mungkin berlaku ketika menjalankan tugas. Akhir sekali, kami mengulangi konfigurasi buku main dan bagaimana anda boleh menggunakan pilihan tambahan untuk menentukan tugas mana yang hendak dijalankan jika anda tidak berniat untuk menjalankan keseluruhan buku main.