Tutorial Pemula - Buku Mainan, Pembolehubah dan Inventori yang Boleh Dikenal

Beginner S Tutorial Ansible Playbooks



Buku main Ansible adalah fail yang mengandungi tugas yang dijalankan untuk mengkonfigurasi host dengan Ansible. Buku permainan yang boleh ditulis ditulis dalam format YAML. YAML adalah format fail yang sangat mudah seperti JSON. Saya akan menunjukkan kepada anda bagaimana paparan buku main YAML Ansible di bahagian seterusnya artikel ini.

Fail Inventori Ansible mengekalkan senarai hos yang ingin anda konfigurasikan atau uruskan dengan Ansible. Anda juga boleh mengumpulkan kumpulan hos ini dan menguruskannya mengikut kumpulan. Anda juga boleh melewati pemboleh ubah yang berbeza untuk setiap host atau untuk kumpulan host.







Dalam artikel ini, saya akan menunjukkan kepada anda cara bekerja dengan buku main Ansible, pemboleh ubah, fail inventori, dan beberapa modul Ansible yang biasa dengan contoh praktikal. Oleh itu, mari kita mulakan!



Prasyarat

Sekiranya anda ingin mencuba contoh dalam artikel ini,



1) Anda mesti memasang Ansible di komputer anda.
2) Anda mesti mempunyai sekurang-kurangnya host Ubuntu / Debian dan host CentOS / RHEL 8 yang dikonfigurasi untuk automasi Ansible.





Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk Memasang Ansible dan mengkonfigurasi host untuk automasi Ansible. Anda boleh menyemak artikel ini sekiranya diperlukan untuk maklumat lebih lanjut.

Membuat Direktori Projek

Pertama, buat direktori projek ~ / projek / dengan arahan berikut:

$mkdir -pv~/projek/buku permainan

Navigasi ke ~ / projek / direktori seperti berikut:

$CD~/projek

Fail Inventori Asas:

Buat fail inventori Ansible tuan rumah dalam direktori projek dengan arahan berikut:

$nanotuan rumah

Anda boleh menaip alamat IP host yang ingin anda konfigurasikan / automatik menggunakan Ansible di tuan rumah fail inventori.

192.168.20.167
192.168.20.168
192.168.20.169
192.168.20.170

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X diikuti oleh DAN dan .

Sekiranya anda ingin menggunakan nama DNS dan bukan alamat IP dalam fail inventori, anda juga boleh melakukan ini.

Sekiranya anda tidak mempunyai pelayan DNS yang berfungsi, anda boleh menggunakan / dll / tuan rumah failkan di komputer anda untuk resolusi DNS tempatan.

Untuk resolusi DNS tempatan, buka / dll / tuan rumah fail dengan penyunting teks ( nano , dalam kes saya) seperti berikut:

$sudo nano /dan lain-lain/tuan rumah

Taipkan alamat IP dan nama DNS yang anda inginkan seperti berikut:

192.168.20.167 vm1.nodekite.com
192.168.20.168 vm2.nodekite.com
192.168.20.169 vm3.nodekite.com
192.168.20.170 vm4.nodekite.com

Setelah anda selesai dengan langkah ini, tekan + X diikuti oleh DAN dan .

Buka fail inventori Ansible tuan rumah seperti berikut:

$nanotuan rumah

Anda sekarang boleh menaip nama DNS host yang anda mahu konfigurasikan / automatik menggunakan Ansible di tuan rumah fail inventori.

vm1.nodekite.com
vm2.nodekite.com
vm3.nodekite.com
vm4.nodekite.com

Setelah selesai, simpan fail inventori host dengan menekan + X diikuti oleh DAN dan .

Menguji Kesambungan ke Semua Host

Sekarang, anda boleh mencuba ping semua host dalam fail inventori seperti berikut:

$tidak boleh dimakan-ituan rumah semua-utidak boleh dimakan-m ping

Seperti yang anda lihat, semua host dalam fail inventori dapat dicapai. Oleh itu, kami bersedia untuk beralih ke bahagian seterusnya dari artikel ini.

Buku Main Pertama yang Boleh Dibaca

Mari kita buat buku main Ansible yang ringkas ping_all_hosts.yaml di dalam buku permainan / direktori. Tindakan ini akan melakukan ping kepada semua host di tuan rumah fail inventori, seperti sebelumnya.

$nanobuku permainan/ping_all_hosts.yaml

Taipkan baris berikut di ping_all_hosts.yaml Fail buku main yang boleh dibaca:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Ping semua hos
ping:

Di sini,

tuan rumah: semua - memilih semua hos dari fail inventori tuan rumah .
pengguna: tidak boleh dimakan - memberitahu Ansible to SSH ke host dalam fail inventori sebagai tidak boleh dimakan pengguna.
tugas - semua tugas yang akan dilaksanakan oleh Ansible di host disenaraikan di sini. Setiap tugas biasanya mempunyai nama dan satu atau lebih pilihan modul tertentu.

Buku permainan ping_all_hosts.yaml hanya mempunyai satu tugas, ping semua host dalam fail inventori tuan rumah . Nama tugasnya ialah Ping semua hos dan ia menggunakan ping modul.

The ping modul tidak memerlukan pilihan lain. Oleh itu, saya membiarkannya kosong (tidak ada apa-apa selepas usus besar, : )

Setelah anda selesai dengan langkah ini, simpan fail dengan menekan + X diikuti oleh DAN dan .

Anda boleh menjalankan ping_all_hosts.yaml Buku permainan yang boleh dibaca seperti berikut:

$buku main-ansible-imenjadi tuan rumah buku permainan/ping_all_hosts.yaml

Seperti yang anda lihat, tugas ping berjaya di semua host dalam fail inventori.

Fail Konfigurasi Mudah Dibaca

Dalam contoh sebelumnya, anda harus menggunakan -i pilihan untuk memberitahu Ansible fail inventori yang akan digunakan. Dalam kes saya, itu adalah tuan rumah fail inventori.

$buku main-ansible-imenjadi tuan rumah buku permainan/ping_all_hosts.yaml

Sekiranya anda tidak mahu menghantar fail inventori dengan -i pilihan setiap kali anda menjalankan buku main Ansible, yang harus anda lakukan ialah menetapkan fail inventori lalai untuk projek anda.

Untuk melakukannya, buat fail konfigurasi Ansible baru ansible.cfg dalam root projek anda seperti berikut:

$nanoansible.cfg

Taipkan baris berikut di ansible.cfg fail:

[lalai]
persediaan =./tuan rumah

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Anda boleh menjalankan buku main Ansible yang sama seperti berikut:

$buku permainan ansible-playbook/ping_all_hosts.yaml

Seperti yang anda lihat, buku main menggunakan tuan rumah fail inventori secara lalai. Anda masih boleh menggunakan -i pilihan untuk menentukan fail inventori yang berbeza, jika anda mahu. Ansible sangat fleksibel.

Mengelompokkan Host dalam Fail Inventori

Setakat ini, saya telah menunjukkan kepada anda cara menjalankan sekumpulan tugas (buku main) di semua host dalam fail inventori. Tetapi bagaimana jika anda ingin menjalankan satu set tugas di beberapa host dan satu set tugas lain di host lain? Anda boleh mengumpulkan host dalam fail inventori dan menjalankan tugas yang berbeza pada kumpulan host.

Di bahagian ini, saya akan menunjukkan kepada anda cara mengumpulkan host dalam fail inventori dan cara bekerja dengan kumpulan host.

Pertama, buka fail inventori tuan rumah seperti berikut:

$nanotuan rumah

Taipkan baris berikut di tuan rumah fail inventori:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[centos8]
vm3.nodekite.com
vm4.nodekite.com

Di sini, saya telah membuat dua kumpulan hos: debian10 dan centos8 .

Di dalam debian10 kumpulan, saya mempunyai dua hos: vm1.nodekite.com dan vm2.nodekite.com

Di dalam centos8 kumpulan, saya mempunyai dua hos: vm3.nodekite.com dan vm4.nodekite.com

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Kami sekarang akan membuat buku permainan baru ping_debian10_hosts.yaml , yang akan membuat ping host seperti sebelumnya, tetapi hanya host di debian10 kumpulan tuan rumah.

Buat buku permainan ping_debian10_hosts.yaml di dalam buku permainan / direktori seperti berikut:

$nanobuku permainan/ping_debian10_hosts.yaml

Taipkan baris berikut di ping_debian10_hosts.yaml Buku permainan yang boleh dibaca:

- hos: debian10
pengguna: tidak boleh dimakan
tugas:
- nama: Ping semua Debian10tuan rumah
ping:

Bukannya tuan rumah: semua , Saya telah menambah hos: debian10 di sini. debian10 adalah kumpulan tuan rumah. Buku main ini hanya akan dijalankan pada hos di debian10 kumpulan tuan rumah.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan buku main seperti berikut:

$buku permainan ansible-playbook/ping_debian10_hosts.yaml

Seperti yang anda lihat, hanya host di debian10 kumpulan tuan rumah ping.

Dengan kaedah yang sama, buat buku main lain ping_centos8_hosts.yaml seperti berikut:

$nanobuku permainan/ping_centos8_hosts.yaml

Taipkan baris berikut di ping_centos8_hosts.yaml Buku permainan yang boleh dibaca:

- tuan rumah: centos8
pengguna: tidak boleh dimakan
tugas:
- nama: Ping semua CentOS8tuan rumah
ping:

Dengan cara yang sama, saya telah menambah hos: centos8 di sini. centos8 adalah kumpulan tuan rumah. Buku main ini hanya akan dijalankan pada hos di centos8 kumpulan tuan rumah.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan buku main seperti berikut:

$buku permainan ansible-playbook/ping_centos8_hosts.yaml

Seperti yang anda lihat, hanya host di centos8 kumpulan tuan rumah ping.

Jenis Pembolehubah yang Tidak Boleh Dikenali

Terdapat pelbagai jenis pemboleh ubah dalam Ansible. Jenis pemboleh ubah utama adalah Pemboleh ubah Fakta Boleh Dikenali dan Pemboleh ubah yang ditentukan pengguna .

Pemboleh ubah Fakta Boleh Dikenali: Bergantung pada hos yang diusahakan oleh Ansible, Ansible menghasilkan pemboleh ubah fakta Ansible. Pemboleh ubah fakta yang boleh dibaca mengandungi maklumat mengenai host, seperti alamat IP, nama host, nama domain, tarikh, masa, pemboleh ubah persekitaran shell, dan banyak lagi.

Pemboleh ubah yang ditentukan pengguna: Ini adalah pemboleh ubah tersuai yang ditentukan oleh pengguna. Anda boleh meneruskan pemboleh ubah yang ditentukan pengguna dari baris perintah, atau menggunakan fail inventori.

Pemboleh ubah yang ditentukan oleh pengguna terdiri daripada dua jenis: Pemboleh ubah kumpulan dan Pemboleh ubah hos .

Keutamaan Pembolehubah yang Boleh Dikenali

Keutamaan variabel Ansible adalah : Pemboleh ubah Garis Perintah > Pembolehubah Host > Pemboleh ubah Kumpulan

Sekiranya anda menetapkan pemboleh ubah yang sama dengan pemboleh ubah host dan pemboleh ubah kumpulan, pemboleh ubah host akan digunakan.

Begitu juga, pemboleh ubah yang anda tetapkan dari baris arahan semasa menjalankan buku main akan menggantikan pemboleh ubah host dan kumpulan.

Bekerja dengan Pembolehubah Fakta Boleh Dikenal

Di bahagian ini, saya akan menunjukkan kepada anda cara bekerja dengan pemboleh ubah fakta Ansible. Oleh itu, mari kita mulakan!

Anda boleh menyenaraikan semua pemboleh ubah Fakta Tidak Tentu dari host di tuan rumah fail inventori seperti berikut:

$semestinya semua-utidak boleh dimakan-mpersediaan

Seperti yang anda lihat, semua pemboleh ubah Fakta Tidak dapat disenaraikan dalam format JSON. Ini adalah senarai yang sangat panjang.

Oleh kerana senarai ini cukup panjang, anda boleh membukanya dengan program pager seperti kurang seperti berikut:

$semestinya semua-utidak boleh dimakan-mpersediaan| kurang

Sekarang, anda boleh menatal output ke atas, bawah, kiri, dan kanan seperti yang diperlukan.

Anda juga boleh mencari nama pemboleh ubah dari pager. Untuk melakukannya, tekan / kekunci pada papan kekunci anda. Kemudian, taipkan rentetan carian ( nama hos dalam kes saya) dan tekan .

Seperti yang anda lihat, pemboleh ubah fakta Ansible yang sepadan dengan rentetan carian adalah nama_hostname . Anda boleh tekan N untuk pergi ke perlawanan seterusnya dan P untuk pergi ke perlawanan sebelumnya dari pager. Ini adalah bagaimana anda mencari pemboleh ubah fakta Ansible yang anda perlukan untuk projek Ansible anda.

Mari kita lihat bagaimana untuk mengakses pemboleh ubah fakta Ansible.

Buat buku permainan baru print_variable1.yaml seperti berikut:

$nanobuku permainan/print_variable1.yaml

Taipkan baris berikut di print_variable1.yaml fail:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Cetaknama hosdari semua tuan rumah
nyahpepijat:
msg:'{{ansible_hostname}}'

Di sini, saya telah menambah satu tugas Cetak nama hos semua hos . Tugas ini menggunakan Ansible nyahpepijat modul untuk mencetak mesej semasa buku main berjalan.

msg adalah satu-satunya parameter yang diperlukan dari nyahpepijat modul. The msg parameter menerima rentetan dalam tanda kutip, yang merupakan mesej yang akan dicetak pada konsol.

Di sini, {{pembolehubah_nama}} format digunakan untuk mengakses pemboleh ubah. Dalam kes ini, {{ansible_hostname}} digunakan untuk mencetak nama_hostname pemboleh ubah setiap host dalam fail inventori.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Anda juga boleh mengakses pemboleh ubah fakta Ansible sebagai ansible_facts [pemboleh ubah_nama] . Jadi nama_hostname pemboleh ubah akan menjadi ansible_facts [nama host] .

Kita boleh menulis semula print_variable1.yaml buku permainan seperti ini juga. Kami akan mendapat output yang sama.

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Cetaknama hosdari semua tuan rumah
nyahpepijat:
msg:'{{ansible_facts [' variable_name ']}}'

Jalankan buku permainan print_variable1.yaml seperti berikut:

$buku permainan ansible-playbook/print_variable1.yaml

Seperti yang anda lihat, nama host setiap host dalam fail inventori dicetak pada konsol.

Mari kita mencetak alamat IPv4 lalai setiap host bersama dengan nama host. Seperti yang anda lihat, alamat IPv4 lalai dari hos dapat diakses menggunakan alamat harta tanah ansible_default_ipv4 objek.

Buat buku permainan baru print_variable2.yaml seperti berikut:

$nanobuku permainan/print_variable2.yaml

Taipkan baris berikut di print_variable2.yaml fail:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Cetaknama hosdari semua tuan rumah
nyahpepijat:
msg:'{{ansible_hostname}} - {{ansible_default_ipv4.address}}'

Buku main ini sama seperti sebelumnya. Satu-satunya perbezaan adalah pemboleh ubah baru {{ansible_default_ipv4.address}} di dalam msg pilihan untuk nyahpepijat modul.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan print_variable2.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/print_variable2.yaml

Seperti yang anda lihat, alamat IPv4 lalai dan nama host hos dicetak pada konsol.

Jadi, ini adalah bagaimana anda bekerja dengan pemboleh ubah Fakta Boleh Dikatakan.

Menetapkan Pemboleh ubah yang ditentukan pengguna dari Command Line:

Di bahagian ini, saya akan menunjukkan kepada anda cara menetapkan pemboleh ubah yang ditentukan pengguna dari baris arahan semasa menjalankan buku main Ansible.

Pertama, buat buku main baru print_variable3.yaml seperti berikut:

$nanobuku permainan/print_variable3.yaml

Taipkan baris berikut di print_variable3.yaml fail:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Cetakarahanpemboleh ubah garis
nyahpepijat:
msg:'Selamat datang {{username}}'

Di sini, saya telah menggunakan nyahpepijat modul untuk mencetak mesej Selamat datang {{username}} . nama pengguna adalah pemboleh ubah yang akan diganti ketika kita menjalankan buku main.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan buku permainan print_variable3.yaml seperti berikut:

$buku main-ansible-Dan 'nama pengguna = Bob'buku permainan/print_variable3.yaml

CATATAN: Di sini, -Dan pilihan digunakan untuk lulus a nama pengguna pemboleh ubah dengan nilai Bob ke buku permainan print_variable3.yaml dari baris arahan.

Seperti yang anda lihat, mesejnya Selamat datang Bob dicetak pada konsol.

Mari kita ketahui bagaimana meneruskan beberapa pemboleh ubah dari baris perintah.

Buat buku permainan baru print_variable4.yaml seperti berikut:

$nanobuku permainan/print_variable4.yaml

Taipkan baris berikut di print_variable4.yaml fail:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Mencetak pemboleh ubah yang ditentukan pengguna
nyahpepijat:
msg:'nama pengguna = {{nama pengguna}} http_port = {{http_port}}'

Buku permainan semestinya sangat biasa bagi anda sekarang. Yang dilakukannya adalah mencetak 2 pemboleh ubah nama pengguna dan http_port di konsol.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Anda sekarang boleh lulus nama pengguna dan http_port pemboleh ubah ke buku permainan menggunakan dua yang berbeza -Dan pilihan seperti berikut:

$ ansible-playbook-Dan 'nama pengguna = Bob' -Dan 'http_port = 8080'
buku permainan/print_variable4.yaml

Atau, anda boleh memisahkan pemboleh ubah dengan ruang kosong, seperti berikut:

$ ansible-playbook-Dan 'nama pengguna = Bob http_port = 8080'
buku permainan/print_variable4.yaml

Seperti yang anda lihat, nama pengguna dan http_port pemboleh ubah dicetak pada konsol.

Bekerja dengan Pemboleh ubah Kumpulan yang Ditentukan Pengguna

Katakanlah, anda mahu menambahkan beberapa pemboleh ubah ke kumpulan host. Tindakan ini sangat mudah dilakukan di Ansible.

Pertama, buka tuan rumah fail inventori seperti berikut:

$nanotuan rumah

Taipkan baris berikut di tuan rumah fail inventori:

[debian10]
vm1.nodekite.com
vm2.nodekite.com
[debian10: vars]
nama pengguna = Lily
http_port =4343
[centos8]
vm3.nodekite.com
vm4.nodekite.com
[centos8: vars]
nama pengguna = Bob
http_port =7878

Seperti yang anda lihat, saya telah membuat bahagian baru [debian10: vars] untuk debian10 kumpulan tuan rumah dan menambah pemboleh ubah ( nama pengguna dan http_port untuk debian10 kumpulan tuan rumah di sana.

Dengan cara yang sama, saya telah membuat bahagian baru [centos8: vars] untuk centos8 kumpulan tuan rumah dan menambah pemboleh ubah ( nama pengguna dan http_port untuk centos8 kumpulan tuan rumah di sana.

Setelah selesai, simpan tuan rumah fail inventori dengan menekan + X diikuti oleh DAN dan .

Jalankan print_variable4.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/print_variable4.yaml

Seperti yang anda lihat, pemboleh ubah yang betul diteruskan ke setiap host bergantung pada kumpulan host mereka.

Bekerja dengan Pembolehubah Host Yang Ditetapkan Pengguna

Di bahagian ini, saya akan menunjukkan kepada anda cara menetapkan pemboleh ubah untuk host tertentu dalam fail inventori.

Pertama, buka tuan rumah fail inventori seperti berikut:

$nanotuan rumah

Untuk menambahkan pemboleh ubah ke host tertentu (katakan, vm1.nodekite.com ), tambahkan ruang / tab setelah nama IP / DNS host dan taipkan pemboleh ubah anda, seperti yang ditunjukkan dalam tangkapan skrin di bawah.

Anda juga boleh menambahkan beberapa pemboleh ubah. Cukup asingkan setiap pemboleh ubah dengan spasi.

Setelah selesai, simpan fail inventori dengan menekan + X diikuti oleh DAN dan .

Jalankan print_variable4.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/print_variable4.yaml

Seperti yang anda lihat, pemboleh ubah hanya ditetapkan untuk vm1.nodekite.com tuan rumah. Host yang lain mempunyai pemboleh ubah kumpulan yang digunakan untuknya.

Menjana Fail Inventori dengan pantas dengan Julat

Anda boleh menggunakan julat untuk menghasilkan fail inventori Ansible dengan cepat jika alamat IP host atau nama DNS anda konsisten (iaitu, mempunyai format tertentu).

Dalam contoh sebelumnya, saya telah menggunakan hos vm1.nodekite.com , vm2.nodekite.com , vm3.nodekite.com dan vm4.nodekite.com . Daripada menaip dalam 4 baris, saya hanya boleh menaip vm [1: 4] .nodekite.com dalam fail inventori.

Untuk bereksperimen dengan julat, buka tuan rumah fail inventori seperti berikut:

$nanotuan rumah

Keluarkan semua host dan pemboleh ubah dari fail inventori.

Kami sekarang boleh menggantikan vm1.nodekite.com dan vm2.nodekite.com dengan vm [1: 2] .nodekite.com untuk debian10 kumpulan tuan rumah seperti berikut.

Dengan cara yang sama, kita boleh menggantikan vm3.nodekite.com dan vm4.nodekite.com dengan vm [3: 4] .nodekite.com untuk centos8 kumpulan tuan rumah.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan ping_all_hosts.yaml seperti berikut:

$buku permainan ansible-playbook/ping_all_hosts.yaml

Seperti yang anda lihat, julat hos diperluas ketika saya menjalankan buku main.

Menyimpan Pemboleh ubah dalam Fail Berbeza

Menyimpan pemboleh ubah kumpulan dan pemboleh ubah host dalam fail inventori yang sama sangat mudah. Tetapi, anda mungkin mencari lebih banyak fleksibiliti. Terutama apabila anda ingin menggunakan julat dalam fail inventori anda kerana anda tidak lagi dapat menetapkan pemboleh ubah host jika anda menggunakan julat. Anda mungkin menyimpan pemboleh ubah kumpulan dan pemboleh ubah host dalam fail yang berbeza. Di bahagian ini, saya akan menunjukkan kepada anda bagaimana ia dilakukan.

Secara lalai, Ansible mencari pemboleh ubah kumpulan di kumpulan_vars / pemboleh ubah direktori dan host di host_vars / direktori.

Oleh itu, buat kumpulan_vars / dan host_vars / direktori seperti berikut:

$mkdir -pv {tuan rumah, kumpulan}_ siapa

Untuk menetapkan pemboleh ubah kumpulan untuk debian10 kumpulan hos, buat fail debian10 (sama dengan nama kumpulan) di kumpulan_vars / direktori seperti berikut:

$nanokumpulan_vars/debian10

Taipkan pemboleh ubah anda seperti berikut:

nama pengguna: Lily
http_port: 4343

Setelah selesai, simpan fail dengan menekan + X diikuti oleh Y dan .

Dengan cara yang sama, untuk menetapkan pemboleh ubah kumpulan untuk centos8 kumpulan hos, buat fail centos8 (sama dengan nama kumpulan) di kumpulan_vars / direktori seperti berikut:

$nanokumpulan_vars/centos8

Taipkan pemboleh ubah anda seperti berikut:

nama pengguna: Bob
http_port: 7878

Setelah selesai, simpan fail dengan menekan + X diikuti oleh Y dan .

Jalankan print_variable4.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/print_variable4.yaml

Seperti yang anda lihat, pemboleh ubah kumpulan ditetapkan dengan betul untuk setiap kumpulan host.

Untuk menetapkan pemboleh ubah host untuk host vm1.nodekite.com , buat fail vm1.nodekite.com (sama dengan nama host atau alamat IP) di host_vars / direktori seperti berikut:

$nanovm1.nodekite.com

Taipkan pemboleh ubah host anda seperti berikut:

nama pengguna: Alex
http_port: 7788

Setelah selesai, simpan fail dengan menekan + X diikuti oleh Y dan .

Jalankan print_variable4.yaml buku permainan seperti berikut:

buku permainan $ ansible-playbook/print_variable4.yaml
[

Seperti yang anda lihat, pemboleh ubah host ditetapkan dengan betul untuk host vm1.nodekite.com .

Bekerja dengan Gelung di Ansible

Di bahagian ini, saya akan menunjukkan kepada anda cara menggunakan gelung di Ansible.

Pertama, buat buku main baru gelung1.yaml di dalam buku permainan / direktori seperti berikut:

$nanobuku permainan/gelung1.yaml

Taipkan baris berikut di gelung1.yaml buku permainan:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- nama: Cetak senarai Pengguna
nyahpepijat:
msg:'Pengguna: {{item}}'
dengan_item:
- Alex
- Bob
- Lily

Di sini, saya mempunyai 1 tugas yang mencetak senarai pengguna yang menggunakan gelung.

Untuk menetapkan nilai lelaran untuk tugas, anda menggunakan dengan_item modul. Kemudian, anda menambah nilai satu demi satu.

dengan_item:
- Alex
- Bob
- Lily

Anda mengakses nilai lelaran semasa menggunakan barang pemboleh ubah.

nyahpepijat:
msg:'Pengguna: {{item}}'

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan gelung1.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/gelung1.yaml

Seperti yang anda lihat, tugas yang sama dijalankan untuk setiap item pada setiap host. Jadi, gelung berfungsi.

Bekerja dengan Keadaan dalam keadaan tidak boleh difahami

Sekiranya anda ingin menjalankan tugas berdasarkan keadaan tertentu, maka bahagian ini sesuai untuk anda.

Untuk menjalankan tugas berdasarkan keadaan, anda boleh menggunakan bila modul Ansible. Mari kita lihat contoh modul ini. Pertama, buat buku main baru syarat1.yaml seperti berikut:

$nanobuku permainan/syarat1.yaml

Taipkan baris berikut di syarat1.yaml buku permainan:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- name: Jalankan tugas ini hanya pada Debian
nyahpepijat:
msg:'tugas ini dijalankan pada Debian'
bila: ansible_facts['pengedaran']=='Debian'

Di sini,

ansible_facts [‘sebaran’] == ‘Debian’ digunakan untuk memeriksa sama ada pengedaran adalah Debian . Tugas akan dijalankan hanya jika pengedarannya adalah Debian.

The ansible_facts [‘sebaran’] digunakan untuk mengakses pemboleh ubah Fakta Boleh Dengar ansible_distribusi . Anda juga boleh memeriksa versi pengedaran menggunakan ansible_distribution_major_version pemboleh ubah.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan syarat1.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/syarat1.yaml

Seperti yang anda lihat, tugas itu hanya dijalankan pada host Debian. Tugas itu tidak dijalankan pada host CentOS.

Anda juga boleh memeriksa beberapa keadaan pada masa yang sama dan menjalankan tugas hanya jika semua syarat itu benar. Mari kita lihat contohnya.

Buat buku permainan baru syarat2.yaml seperti berikut:

$nanobuku permainan/syarat2.yaml

Taipkan baris berikut di syarat2.yaml fail:

- tuan rumah: semua
pengguna: tidak boleh dimakan
tugas:
- name: Jalankan tugas ini hanya pada Debian10
nyahpepijat:
msg:'tugas ini dijalankan pada Debian 10'
bila: ansible_facts['pengedaran']=='Debian'
dan ansible_facts['pembahagian_major_versi']=='10'

Di sini, tugas hanya akan dijalankan jika pengedarannya adalah Debian ( ansible_facts [‘sebaran’] == ‘Debian’ ) dan versi adalah 10 ( ansible_facts [‘distribusi_major_version’] == ’10’ ). Sekiranya kedua-dua syarat itu benar, maka tugas itu akan berjalan. Ya, tugas tidak akan berjalan.

Saya telah menggunakan dan kata kunci untuk memeriksa sama ada kedua-dua syarat itu benar di sini. Sekiranya anda ingin memeriksa sama ada mana-mana syarat itu benar, maka anda boleh menggunakan atau kata kunci sebaliknya.

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan buku permainan syarat2.yaml seperti berikut:

$buku permainan ansible-playbook/syarat2.yaml

Seperti yang anda lihat, tugas itu hanya dijalankan pada hos Debian 10.

Mari kita ubah buku permainan syarat2.yaml untuk menjalankan tugas hanya pada host Debian 8 seperti berikut.

Seperti yang anda lihat, semua hos dilangkau kerana saya tidak mempunyai hos Debian 8 dalam fail inventori.

Bekerja dengan Modul Ansible apt

The tepat modul Ansible digunakan untuk memasang pakej perisian tertentu pada hos Ubuntu / Debian. Mari kita lihat bagaimana menggunakan modul ini.

Pertama, buat buku main baru apt1.yaml di dalam buku permainan / direktori seperti berikut:

$nanobuku permainan/apt1.yaml

Taipkan baris berikut di apt1.yaml buku permainan:

- hos: debian10
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Pasang apache2
sesuai:
nama: apache2
nyatakan: terkini

The tepat modul hanya memerlukan nama pakej yang anda ingin pasang / tingkatkan / hapus dan negeri pakej.

Di sini, saya cuba memasang apache2 pakej ( nama: apache2 ) pada hos Debian 10 saya. Oleh kerana saya cuba memasang pakej dan juga menaikkannya jika versi baru tersedia, negeri semestinya terkini .

negeri juga menerima pilihan berikut:

- tidak hadir - Pakej akan dikeluarkan jika sudah dipasang.
- terkini - Pakej akan ditingkatkan sekiranya kemas kini tersedia. Sekiranya pakej belum dipasang, ia akan dipasang.
- hadir - Pakej akan dipasang jika belum dipasang. Tetapi pakej tidak akan ditingkatkan sekiranya kemas kini tersedia.

Perhatikan bahawa saya telah menambah menjadi: Benar dalam buku permainan. Ini akan memberi tidak boleh dimakan keistimewaan sudo pengguna untuk mengubah struktur sistem fail (iaitu memasang / menaik taraf / membuang pakej). Tanpa menjadi: Benar , tepat modul tidak akan dapat memasang apache2 pakej.

Setelah selesai, simpan buku main dengan menekan + X diikuti oleh DAN dan .

Jalankan apt1.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/apt1.yaml

Seperti yang anda lihat, buku main berjaya disiarkan di hos Debian 10.

Seperti yang anda lihat, apache2 pakej dipasang pada hos Debian 10 saya.

Bekerja dengan Modul dnf / yum Ansible

The dnf dan yum modul Ansible digunakan untuk memasang pakej perisian tertentu pada host CentOS / RHEL. Anda mungkin menggunakan modul ini dengan cara yang sama seperti yang anda lakukan tepat modul di bahagian awal artikel ini.

Kedua-duanya dnf dan yum modul menerima parameter yang sama. Anda boleh menggunakan dnf modul pada host CentOS / RHEL 8, dan yum pada CentOS / RHEL 7 ke atas.

Mari kita lihat contoh modul ini.

Pertama, buat buku main baru dnf1.yaml di dalam buku permainan / direktori seperti berikut:

$nanobuku permainan/dnf1.yaml

Taipkan baris berikut di dnf1.yaml buku permainan:

- tuan rumah: centos8
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Pasang pakej httpd
dnf:
nama: httpd
nyatakan: terkini

The dnf dan yum modul hanya memerlukan nama pakej yang anda ingin pasang / tingkatkan / hapus dan negeri pakej.

Di sini, saya cuba memasang httpd pakej ( nama: httpd ) pada hos CentOS 8 saya. Oleh kerana saya cuba memasang pakej, dan saya juga ingin menaikkannya jika versi baru tersedia, negeri semestinya terkini .

negeri menerima pilihan berikut:

- tidak hadir - Pakej akan dikeluarkan jika sudah dipasang.
- terkini - Pakej akan ditingkatkan sekiranya kemas kini tersedia. Sekiranya pakej belum dipasang, ia akan dipasang.
- hadir - Pakej akan dipasang jika belum dipasang. Tetapi pakej tidak akan ditingkatkan sekiranya kemas kini tersedia.

Perhatikan bahawa saya telah menambah menjadi: Benar dalam buku permainan. Ini memberi tidak boleh dimakan keistimewaan sudo pengguna untuk mengubah struktur sistem fail (iaitu memasang / menaik taraf / membuang pakej). Tanpa menjadi: Benar , tepat modul tidak akan dapat memasang httpd pakej.

Setelah selesai, simpan buku main dengan menekan + X diikuti oleh DAN dan .

Jalankan dnf1.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/dnf1.yaml

Seperti yang anda lihat, buku main berjaya dijalankan pada hos CentOS 8.

Bekerja dengan Modul perkhidmatan Ansible

The perkhidmatan modul Ansible digunakan untuk memulakan, menghentikan, memulakan semula, mengaktifkan (menambah perkhidmatan ke permulaan), dan melumpuhkan perkhidmatan (keluarkan perkhidmatan dari permulaan) di hos anda.

Pada bahagian sebelumnya, saya menunjukkan cara memasang pakej pelayan HTTP Apache menggunakan Ansible tepat , dnf dan yum modul. Mari kita sekarang memastikan bahawa perkhidmatan pelayan HTTP Apache berjalan dan telah ditambahkan pada permulaan sistem.

Saya akan bekerjasama dengan hos Debian 10 saya. Tetapi, anda mungkin bekerja dengan host CentOS 8, jika anda mahu. Cukup sesuaikan buku permainan dengan sewajarnya.

Pertama, buat buku main Ansible baru apt2.yaml seperti berikut:

$nanobuku permainan/apt2.yaml

Taipkan baris berikut di apt2.yaml buku permainan:

- hos: debian10
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Pasang apache2
sesuai:
nama: apache2
nyatakan: terkini
- nama: Mulakan perkhidmatan apache2
perkhidmatan:
nama: apache2
negeri: dimulakan
didayakan: Betul

Di sini, saya telah menambah tugas baru, Mulakan perkhidmatan apache2 .

nama: apache2 - perkhidmatan yang saya jalankan adalah apache2 .

negeri: dimulakan - perkhidmatan mesti berjalan.

didayakan: Betul - perkhidmatan mesti ditambah pada permulaan sistem.

The negeri parameter menerima nilai lain.

- dimuat semula - Perkhidmatan mesti memuat semula fail konfigurasi.
- dimulakan semula - Perkhidmatan mesti dimulakan semula.
- dimulakan - Perkhidmatan mesti dijalankan. Sekiranya perkhidmatan tidak dijalankan, mulakan perkhidmatan.
- berhenti - Perkhidmatan mesti dihentikan. Sekiranya perkhidmatan berjalan, hentikan perkhidmatan.

Jalankan buku permainan apt2.yaml seperti berikut:

$buku permainan ansible-playbook/apt2.yaml

Seperti yang anda lihat, buku main berjaya dijalankan.

Seperti yang anda lihat, apache2 perkhidmatan dijalankan pada hos Debian 10 saya.

Bekerja dengan Modul salinan Ansible

Orang-orang yang boleh dipercayai salinan modul digunakan terutamanya untuk menyalin fail dari komputer anda ke host jauh.

Pada bahagian sebelumnya, saya memasang pelayan web Apache 2 pada hos Debian 10 saya. Mari kita salin indeks.html failkan ke webroot host Debian 10.

Pertama, buat direktori baru fail / seperti berikut:

$mkdir -vfail

Buat fail baru indeks.html di dalam fail / direktori seperti berikut:

$nanofail/indeks.html

Taipkan baris berikut di indeks.html fail:


< html >
< kepala >
< tajuk >Pelayan laman web oleh Ansible</ tajuk >
</ kepala >
< badan >
< h1 >Selamat datang ke LinuxHint</ h1 >
< hlm >Pelayan web ini digunakan dengan Ansible.</ hlm >
</ badan >
</ html >

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Buat buku permainan Ansible baru apt3.yaml seperti berikut:

$nanobuku permainan/apt3.yaml

Taipkan baris berikut di apt3.yaml fail:

- hos: debian10
pengguna: tidak boleh dimakan
menjadi: Benar
tugas:
- nama: Pasang apache2
sesuai:
nama: apache2
nyatakan: terkini
- nama: Salin index.html ke pelayan
salinan:
src: ../fail/indeks.html
destinasi:/di mana/www/html/indeks.html
mod: 0644
pemilik: www-data
kumpulan: www-data
- nama: Mulakan perkhidmatan apache2
perkhidmatan:
nama: apache2
negeri: dimulakan
didayakan: Betul

Di sini, tugasnya Salin index.html ke pelayan menyalin indeks.html daripada fail / direktori ke / var / www / html / direktori hos Debian 10.

src: ../files/index.html - Laluan fail sumber.
dest: /var/www/html/index.html - Laluan fail destinasi.
mod: 0644 - Kebenaran untuk pengguna fail (6 - baca dan tulis), kumpulan (4 - baca), dan lain-lain (4 - baca).
pemilik: www-data - Tetapkan pemilik fail ke www-data .
kumpulan: www-data - Tetapkan kumpulan fail ke www-data .

Setelah selesai, simpan fail dengan menekan + X diikuti oleh DAN dan .

Jalankan apt3.yaml buku permainan seperti berikut:

$buku permainan ansible-playbook/apt3.yaml

Seperti yang anda lihat, tugasnya Salin index.html ke pelayan berjaya.

Seperti yang anda lihat, indeks.html fail disalin ke hos Debian 10.

Seperti yang anda lihat, pelayan web Debian 10 melayani indeks.html halaman yang baru saya salin ke hos Debian 10.

Jadi, ini adalah asas-asas Ansible. Anda boleh mengetahui lebih lanjut mengenai Ansible dengan membaca dokumentasi rasmi Ansible. Terima kasih kerana membaca artikel ini.