Tutorial Ansible untuk Pemula di Linux

Tutorial Ansible untuk Pemula di Linux

Pentadbir sistem, dalam kebanyakan kes, harus menjaga lebih dari satu pelayan, jadi dia sering harus melaksanakan tugas berulang pada mereka semua. Dalam kes ini automasi adalah suatu keharusan. Ansible adalah perisian sumber terbuka yang dimiliki oleh Red Hat; Ia ditulis dalam bahasa Python Programming, dan ia adalah perisian pengurusan peruntukan dan konfigurasi yang membantu kami dalam kes -kes yang disebutkan di atas. Dalam tutorial ini kita akan melihat cara memasangnya dan konsep asas di sebalik penggunaannya.

Dalam tutorial ini anda akan belajar:

  • Cara Memasang Ansible pada Pengagihan Linux yang paling banyak digunakan
  • Cara mengkonfigurasi ansible
  • Apakah inventori ansible
  • Apakah modul ansible
  • Cara menjalankan modul dari baris arahan
  • Cara membuat dan menjalankan buku main

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran bebas
Perisian Ansible, python
Yang lain Tiada
Konvensyen # - Memerlukan komando linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$-memerlukan komando Linux yang diberikan sebagai pengguna yang tidak berkadar biasa

Memasang ansible

Pakej Ansible terkandung di repositori rasmi pengagihan Linux yang paling banyak digunakan supaya dapat dipasang dengan mudah menggunakan pengurus pakej asli mereka. Untuk memasangnya di Debian kita boleh menjalankan:

$ sudo apt-get kemas kini && apt-get memasang ansible 

Untuk memasang Ansible di Fedora, sebaliknya:

$ sudo dnf memasang ansible 

Ansible berada di repositori "Komuniti" Archlinux; Kami boleh memasangnya menggunakan pacman:

$ sudo pacman -sy ansible 

Sekiranya kita mahu memasang Ansible di CentOS8, kita perlu menambah EPEL-RELEASE sumber perisian ke sistem kami, kerana pakej tidak tersedia di repositori lalai. Untuk berbuat demikian, kami menjalankan arahan berikut:

$ sudo DNF Pasang https: // dl.Fedoraproject.org/pub/epel/epel-release-latest-8.Noarch.rpm 

Selepas itu, kita hanya boleh menjalankan:

$ sudo dnf memasang ansible 

Untuk arahan pemasangan khusus pengedaran lain, kami dapat merujuk halaman khusus
dokumentasi rasmi Ansible.



Memperkenalkan Ansible

Keanehan asas Ansible adalah bahawa ia adalah tidak agresif Sistem peruntukan. Ini bermakna kita tidak perlu memasang sebarang ejen atau daemon perisian di pelayan yang ingin kita kendalikan. Yang kita perlukan adalah memasang dan mengkonfigurasi Ansible pada yang dipanggil mesin kawalan. The tugas Kami mengkonfigurasi akan dilakukan, dalam kebanyakan kes, melalui mudah SSH sambungan.

Fail konfigurasi ansible

Ansible boleh dikonfigurasikan dengan menentukan parameter dan nilai mereka dalam satu atau lebih fail konfigurasi. Permohonan, mengikut keutamaan, cari fail berikut:

  1. Fail yang ditentukan melalui pembolehubah Ansible_config
  2. The ansible.cfg fail dalam direktori kerja semasa
  3. The .ansible.cfg fail di direktori rumah pengguna
  4. The /etc/ansible/ansible.cfg fail

The /etc/ansible/ansible.cfg adalah yang terakhir, jadi ia digunakan sebagai sandaran dan lalai. Atas sebab yang jelas, ini bukan tempat yang sesuai untuk menggambarkan semua parameter yang mungkin boleh ditentukan dalam fail konfigurasi, bagaimanapun, di sini adalah petikan kandungan fail:

[lalai] #Beberapa nilai lalai asas ... #inventory =/etc/ansible/hosts #library =/usr/share/my_modules/#module_utils =/usr/share/my_module_utils/#remote_tmp = ~/.ansible/tmp #local_tmp = ~/.ansible/tmp #plugin_filters_cfg =/etc/ansible/plugin_filters.yml #forks = 5 #poll_interval = 15 #sudo_user = root #ask_sudo_pass = true #ask_pass = true #transport = smart #remote_port = 22 #module_lang = c #module_set_locale = false 

Yang dalam contohnya dikomentari parameter yang ditakrifkan dengan nilai lalai mereka. Antara mereka, anda dapat melihat inventori parameter, yang mempunyai /etc/ansible/host nilai. Kita akan melihat apa ini di bahagian seterusnya.

Fail "tuan rumah" atau "inventori"

Fail "hos" ansible, adalah di mana kita pada dasarnya menetapkan alamat IP atau nama host mesin yang kita mahu mengawal dengan Ansible (ini adalah "inventori" dalam jargon ansible). Pada pemasangan standard, fail terletak di /etc/ansible direktori. Di dalam fail inventori, tuan rumah boleh dikelompokkan atau ungrouped. Kita boleh menentukan tuan rumah dengan sendirinya, sebagai contoh:

Server1 

Apabila kami ingin melakukan operasi di lebih daripada satu tuan rumah, bagaimanapun, sangat berguna untuk meletakkan tuan rumah dalam kumpulan, dicipta, sebagai contoh, menggunakan "peranan" mereka sebagai kriteria. Menganggap tuan rumah yang kita hadapi semuanya digunakan sebagai webservers, kita boleh menulis:

[WebServers] Server1 Server2 

Modul ansible

Modul ansible pada dasarnya adalah program kecil yang digunakan untuk melaksanakan tugas yang kita perlukan; Setiap daripada mereka direka untuk melakukan satu operasi asas, untuk memastikan butiran. Mereka boleh dilaksanakan dari baris arahan atau di dalamnya Buku Playbooks. Senarai lengkap semua modul boleh didapati di halaman khusus dokumentasi rasmi. Sekali lagi, di sini kita tidak dapat mengkaji semua modul, tetapi berikut adalah beberapa contoh.

Modul APT, DNF dan YUM digunakan untuk menguruskan pakej dengan pengurus fail yang mengambil nama mereka
dari. Modul Seboolean digunakan untuk pengurus status selinux boolean, modul pengguna digunakan untuk menguruskan akaun pengguna, dll.



Menggunakan modul dari baris arahan

Seperti yang kita katakan di bahagian sebelumnya, modul boleh digunakan dari baris arahan atau dari buku main. Kami akan memberi tumpuan kepada yang terakhir di bahagian seterusnya; Di sini kita akan menunjukkan cara menggunakan modul dari baris arahan, dengan ansible perintah. Dalam contoh ini kita akan menggunakan ping modul. Modul ini tidak ada kaitan dengan perintah ping, tetapi ia digunakan untuk memeriksa bahawa kita boleh log masuk ke pelayan jauh, dan penterjemah python dipasang pada mereka. Modul ini mengembalikan nilai "pong" pada kejayaan:

$ Ansible Webservers -m ping --ask -pass 

Kami memohon perintah ansible yang menyatakan bahawa kami ingin menjalankan tugas pada ahli tuan rumah kumpulan "webservers" dan dengan -m pilihan kami meluluskan nama modul yang ingin kami gunakan. Kami juga menggunakan --tanya-pass pilihan, mengapa? Walaupun saya sebelum ini menambah cap jari pelayan jauh ke fail mesin kawalan ssh "host yang diketahui", saya tidak mengkonfigurasi akses SSH melalui kunci awam, jadi kata laluan SSH harus disediakan apabila kita menjalankan tugas. The --tanya-pass pilihan membuat kata laluan diminta secara interaktif. Inilah output arahan
atas:

Kata Laluan SSH: Server2 | Kejayaan => "ansible_facts": "Discovered_interpreter_python": "/usr/bin/python", "berubah": false, "ping": "pong" server1 | Kejayaan => "ansible_facts": "Discovered_interpreter_python": "/usr/bin/python", "berubah": false, "ping": "pong" 

Ansible Playbooks

Apa itu buku main? Ansible Playbooks tidak lain daripada fail yaml di mana kami menentukan tugas yang kami mahu lakukan menggunakan Ansible, dan tuan rumah mereka harus dilakukan. Mari lihat contoh buku main. Dalam fail berikut, kami menyediakan tugas untuk memastikan editor teks VIM dipasang dan pada versi terkini yang tersedia:

--- - Nama: Kemas kini Webservers Hosts: Webservers Remote_USER: EGDOC Menjadi: Ya Tugas: - Nama: Pastikan VIM dipasang dan pada versi terkini DNF: Nama: VIM State: Terkini .. 

Mari analisis perkara di atas. The --- dan Kita dapat melihat, masing -masing pada mulanya dan pada akhir fail, adalah sebahagian daripada sintaks yaml standard: mereka adalah pilihan dan tandakan permulaan dan akhir fail. Arahan dan nilai mereka diwakili dalam format kamus, seperti Kunci: Nilai Pasangan.

Buku main boleh mengandungi pelbagai yang dipanggil bermain; dalam kes ini kita hanya menentukan satu. Memang perkara pertama yang kami lakukan ialah menentukannya nama, yang dalam contoh ini adalah "kemas kini webservers". Kunci kedua yang kami gunakan ialah tuan rumah: dengan itu kita dapat menentukan kumpulan tuan rumah tugas -tugas harus dilakukan. Dalam kes ini kami tentukan Webservers sebagai nilai, yang memahami mesin yang kami tentukan dalam contoh sebelumnya (Server1 dan Server2).

Kunci seterusnya yang kami gunakan ialah REMOTE_USER. Dengan itu, kita dapat menentukan apakah pengguna yang harus kita log masuk sebagai, melalui SSH, di pelayan jauh. Selepas itu, kami menggunakan menjadi kunci. Kunci ini menerima nilai boolean dan dengan itu kami menentukan sama ada
peningkatan keistimewaan harus digunakan untuk melaksanakan tugas atau tidak. Dalam kes ini, kerana kami log masuk di mesin jauh menggunakan pengguna "EGDOC", dan kami memerlukan keistimewaan root untuk memasang pakej, kami menetapkannya Ya. Penting untuk diperhatikan
peningkatan keistimewaan itu dikonfigurasikan di /etc/ansible/ansible.cfg fail konfigurasi, di bahagian khusus. Dalam kes ini nilai lalai adalah seperti berikut:

[privilege_escalation] #menjadi = true #be_method = sudo #be_user = root #be_ask_pass = false 


Selepas menentukan bermain maklumat, kami mula menentukan senarai tugas kami. Untuk berbuat demikian kami menggunakan tugas kata kunci. Setiap tugas mempunyai nama yang digunakan untuk dokumentasi dan pengendali tugas.

Dengan DNF: Kami menyatakan bahawa kami mahu menggunakan modul "DNF", yang, seperti yang kita lihat sebelum ini, digunakan untuk menguruskan pakej menggunakan Pengurus Pakej Lalai dalam Keluarga Red Hat Pengagihan. Di dalam bahagian ini, dengan nama kata kunci
Kami menetapkan nama pakej. Dalam contoh ini kita hanya berminat dalam satu pakej, tetapi pelbagai pakej boleh ditentukan menggunakan senarai. Sebagai contoh:

DNF: Nama: [Vim, Nano] 

Dengan Negeri Kata kunci dari DNF modul kita pada dasarnya menentukan apa yang kita mahu lakukan dengan pakej yang ditentukan. Dalam kes ini kita gunakan terkini sebagai nilai: dengan itu kami memastikan bahawa pakej dipasang dan pada versi terkini yang tersedia pada pengedaran yang digunakan pada mesin jauh. Nilai lain yang mungkin kita gunakan adalah Keluarkan atau tidak hadir, yang menyebabkan pakej (s) dipasang, atau hadir yang hanya memastikan pakej dipasang. Saya cadangkan anda menyemak dokumentasi modul rasmi untuk senarai lengkap kunci dan nilai yang boleh digunakan dengan modul.

Di sini kami pergi, kami hanya menentukan buku main pertama kami. Bagaimana kita boleh menjalankannya?

Menjalankan buku main

Untuk menjalankan buku main kami menggunakan yang berdedikasi Ansible-playbook perintah. Perintah menerima satu siri pilihan, dan mengambil satu atau lebih fail PlayBook sebagai hujah. Untuk menjalankan buku main yang kami tentukan di bahagian sebelumnya, contohnya kami akan menjalankan arahan berikut:

$ ansible-playbook --k-pass --- Ask-Become-Pass/Path/to/Playbook.yml 

Anda dapat melihat bahawa dalam kes ini kami memohon arahan dengan --Ask-Become-Pass pilihan. Pilihan ini diperlukan kerana dalam fail playbook kami memberikan Ya nilai kepada menjadi kunci, kerana kita memerlukan peningkatan keistimewaan untuk memasang pakej pada mesin jauh. The --Ask-Become-Pass pilihan membuat supaya sudo Kata laluan ditanya semasa kami menjalankan buku main. Dalam kes ini, kerana kami juga menggunakan --tanya-pass, Kata laluan SSH akan digunakan sebagai kata laluan lalai untuk peningkatan keistimewaan. Inilah output yang kami terima semasa kami menjalankan PlayBook:

Kata Laluan SSH: Menjadi Kata Laluan [Lalai ke Kata Laluan SSH]: Main [kemas kini webservers] ************************************* ****************************************************************** ****************************************************************** ****** tugas [mengumpul fakta] ********************************************* ****************************************************************** ****************************************************************** ** OK: [Server1] OK: [Server2] Tugas [Pastikan VIM dipasang pada versi terkini] ******************************* ****************************************************************** *****************************-1 ****************************************************************** ****************************************************************** *************************************************** Server1 : ok = 2 berubah = 1 tidak dapat dicapai = 0 gagal = 0 dilangkau = 0 diselamatkan = 0 diabaikan = 0 Server2:ok = 2 berubah = 1 tidak dapat dicapai = 0 gagal = 0 dilangkau = 0 diselamatkan = 0 diabaikan = 0 

Pertama kita diminta memberikan kata laluan "ssh", maka "menjadi" satu. Seperti yang telah kita katakan, kata laluan SSH akan digunakan sebagai nilai lalai dalam kes ini. Seperti yang dapat anda lihat sebelum tugas yang kami tentukan dalam buku main, tugas lain adalah melaksanakan: "mengumpul fakta". Tugas ini dilaksanakan secara lalai untuk mengumpulkan pembolehubah berguna mengenai tuan rumah jauh yang boleh digunakan dalam buku main.

Setelah tugas -tugas dilaksanakan, kami mendapat rekap permainan yang kami tentukan. Dalam kes ini kita dapat melihat, dua tugas telah dilaksanakan dengan betul (OK = 2) dan satu tugas telah menyebabkan perubahan (berubah = 1). Ini masuk akal: perubahan itu berlaku sejak pakej VIM telah dipasang.

Sekarang, jika kita cuba melaksanakan buku playbook sekali lagi, kita dapat melihat bahawa tiada perubahan berlaku, kerana Vim sudah dipasang dan pada versi terakhir yang tersedia:

Main Recap ******************************************************************** ****************************************************************** ****************************************************************** ***** Server1: OK = 2 berubah = 0 tidak dapat dicapai = 0 gagal = 0 dilangkau = 0 diselamatkan = 0 diabaikan = 0 Server2: OK = 2 berubah = 0 tidak dapat dicapai = 0 gagal = 0 dilangkau = 0 diselamatkan = 0 diabaikan = 0 

Kesimpulan

Dalam tutorial ini kita belajar apa yang boleh dilakukan dan apakah keunikannya. Kami melihat cara memasangnya pada beberapa pengagihan Linux yang paling banyak digunakan, bagaimana untuk mengkonfigurasinya, dan beberapa konsep asas: apakah inventori dan apakah itu
Modul ansible. Kami juga melihat cara menjalankan modul dari baris arahan dan bagaimana menulis dan menjalankan buku main. Ini dimaksudkan sebagai pengenalan kepada dunia ansible; Dapatkan tangan anda kotor, bereksperimen dan baca dokumentasi rasmi untuk pengetahuan yang lebih mendalam!

Tutorial Linux Berkaitan:

  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Menguasai Gelung Skrip Bash
  • Perkara yang perlu dipasang di Ubuntu 22.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 Panduan
  • Gelung bersarang dalam skrip bash
  • Berapa kerap anda perlu reboot pelayan Linux anda?
  • Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..