Cara membuat drama dan buku main ansible - Bahagian 5
- 4136
- 459
- Chris Little I
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.ymlSemak 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 -CHECKDry 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.
- « Cara melumpuhkan IPv6 di CentOS 8
- Cara menjalankan arahan dengan had waktu (tamat masa) di linux »