Tutorial ansible untuk pemula di linux

Tutorial ansible untuk pemula di linux

Seorang administrator sistem, dalam sebagian besar kasus, harus mengurus lebih dari satu server, jadi ia sering harus melakukan tugas yang berulang pada semuanya. Dalam kasus ini otomatisasi adalah suatu keharusan. Ansible adalah perangkat lunak open source yang dimiliki oleh Red Hat; Ini ditulis dalam lanaguage pemrograman Python, dan itu adalah perangkat lunak manajemen penyediaan dan konfigurasi yang membantu kami dalam kasus yang disebutkan di atas. Dalam tutorial ini kita akan melihat cara menginstalnya dan konsep dasar di balik penggunaannya.

Dalam tutorial ini Anda akan belajar:

  • Cara menginstal ansible pada distribusi linux yang paling banyak digunakan
  • Cara mengkonfigurasi ansible
  • Apa inventaris yang tidak jelas
  • Apa saja modul ansible
  • Cara menjalankan modul dari baris perintah
  • Cara membuat dan menjalankan buku pedoman

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi Independen
Perangkat lunak Ansible, Python
Lainnya Tidak ada
Konvensi # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa

Menginstal ansible

Paket Ansible terkandung dalam repositori resmi dari distribusi Linux yang paling banyak digunakan sehingga dapat dengan mudah diinstal menggunakan manajer paket asli mereka. Untuk menginstalnya di Debian, kami dapat menjalankan:

$ sudo apt-get update && apt-get install ansible 

Untuk menginstal ansible di fedora, sebagai gantinya:

$ sudo dnf menginstal ansible 

Ansible ada di repositori "komunitas" Archlinux; Kami dapat menginstalnya menggunakan Pacman:

$ sudo pacman -sy -ansible 

Jika kami ingin menginstal Ansible di CentOS8, kami harus menambahkan Epel-Release Sumber perangkat lunak untuk sistem kami, karena paket tidak tersedia di repositori default. Untuk melakukannya kami menjalankan perintah berikut:

$ sudo dnf instal https: // dl.Fedoraproject.org/pub/epel/epel-release-latest-8.Noarch.RPM 

Setelah itu, kita bisa menjalankan:

$ sudo dnf menginstal ansible 

Untuk instruksi pemasangan khusus distribusi lainnya, kami dapat berkonsultasi dengan halaman khusus
dari dokumentasi resmi yang tidak jelas.



Memperkenalkan ansible

Keuangan mendasar dari ansible adalah bahwa itu adalah sebuah tanpa agen Sistem penyediaan. Ini berarti bahwa kami tidak perlu menginstal agen atau daemon perangkat lunak apa pun di server yang ingin kami kendalikan. Yang kami butuhkan hanyalah menginstal dan mengkonfigurasi ansible pada apa yang dipanggil mesin kontrol. Itu tugas Kami mengkonfigurasi akan dilakukan, dalam sebagian besar kasus, melalui yang sederhana ssh koneksi.

File konfigurasi ansible

Ansible dapat dikonfigurasi dengan menentukan parameter dan nilainya di satu atau lebih file konfigurasi. Aplikasi, dalam urutan prioritas, mencari file berikut:

  1. File yang ditentukan melalui variabel ansible_config
  2. Itu semu.CFG file di direktori kerja saat ini
  3. Itu .semu.CFG file di direktori home pengguna
  4. Itu /etc/ansible/ansible.CFG mengajukan

Itu /etc/ansible/ansible.CFG adalah yang terakhir, jadi digunakan sebagai fallback dan default. Untuk alasan yang jelas, ini bukan tempat yang tepat untuk menggambarkan semua parameter yang mungkin yang dapat ditentukan dalam file konfigurasi, namun, berikut adalah kutipan dari konten file:

[default] #Beberapa nilai default dasar… #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 #fordks = 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 ada dalam contoh adalah parameter berkomentar yang didefinisikan dengan nilai defaultnya. Di antara mereka, Anda dapat melihat inventaris parameter, yang memiliki /etc/ansible/host nilai. Kita akan melihat apa ini di bagian selanjutnya.

File "host" atau "inventaris"

File "host" ansible, adalah tempat kami pada dasarnya mengatur alamat IP atau nama host mesin yang ingin kami kendalikan dengan ansible (ini adalah "inventaris" dalam jargon ansible). Pada instalasi standar, file tersebut terletak di /etc/ansible direktori. Di dalam file inventaris, host bisa dikelompokkan atau tidak dikelompokkan. Kami dapat menentukan host dengan sendirinya, misalnya:

server1 

Namun, ketika kami ingin melakukan operasi pada lebih dari satu host, sangat berguna untuk menempatkan host dalam kelompok, dibuat, misalnya, menggunakan "peran" mereka sebagai kriteria. Seandainya host yang kita hadapi semuanya digunakan sebagai server web, kita bisa menulis:

[WebServers] Server1 Server2 

Modul Ansible

Modul Ansible pada dasarnya adalah program kecil yang digunakan untuk melakukan tugas yang kita butuhkan; masing -masing dirancang untuk melakukan operasi dasar tunggal, untuk memastikan granularity. Mereka dapat dieksekusi dari baris perintah atau di dalam buku pedoman. Daftar lengkap semua modul dapat ditemukan di halaman khusus dari dokumentasi resmi. Sekali lagi, di sini kita tidak dapat memeriksa semua modul, tetapi berikut adalah beberapa contoh.

Modul APT, DNF dan Yum digunakan untuk mengelola paket dengan manajer file mengambil nama mereka
dari. Modul Seboolean digunakan untuk mengelola status selinux booleans, modul pengguna digunakan untuk mengelola akun pengguna, dll.



Menggunakan modul dari baris perintah

Seperti yang kami katakan di bagian sebelumnya, modul dapat digunakan dari baris perintah atau dari buku pedoman. Kami akan fokus pada yang terakhir di bagian selanjutnya; Di sini kami akan menunjukkan cara menggunakan modul dari baris perintah, dengan semu memerintah. Dalam contoh ini kita akan menggunakan ping modul. Modul ini tidak ada hubungannya dengan perintah ping, tetapi digunakan untuk memeriksa apakah kita dapat masuk pada server jarak jauh, dan bahwa penerjemah Python dipasang pada mereka. Modul mengembalikan nilai "pong" pada keberhasilan:

$ Ansible WebServers -M ping --ask -pass 

Kami memohon perintah ansible yang menetapkan bahwa kami ingin menjalankan tugas pada anggota host dari grup "web server" dan dengan -M Opsi Kami memberikan nama modul yang ingin kami gunakan. Kami juga menggunakan --tanya-pass opsi, mengapa? Meskipun saya sebelumnya menambahkan sidik jari server jarak jauh ke file "host yang diketahui" mesin kontrol, saya tidak mengkonfigurasi akses ssh melalui kunci publik, jadi kata sandi SSH harus disediakan ketika kami menjalankan tugas. Itu --tanya-pass opsi membuat agar kata sandi ditanyakan secara interaktif. Inilah output dari perintah
di atas:

Kata Sandi SSH: Server2 | Success => "ansible_facts": "Discovered_interpreter_python": "/usr/bin/python", "diubah": false, "ping": "pong" server1 | Success => "ansible_facts": "Discovered_interpreter_python": "/usr/bin/python", "diubah": false, "ping": "pong" 

Playbook Ansible

Apa itu buku pedoman? Buku pedoman ansible tidak lain adalah file yaml di mana kami menentukan tugas yang ingin kami lakukan menggunakan ansible, dan host yang harus mereka lakukan. Mari kita lihat contoh buku pedoman. Dalam file berikut kami mengatur tugas untuk memastikan editor teks VIM diinstal dan pada versi terbaru yang tersedia:

--- - Nama: Pembaruan WebServer Hosts: WebServers Remote_user: EGDOC Menjadi: Ya Tugas: - Nama: Pastikan Vim diinstal dan pada versi terbaru DNF: Nama: VIM Status: Terbaru… 

Mari kita analisis di atas. Itu --- Dan .. Kita dapat melihat, masing -masing di awal dan di akhir file, adalah bagian dari sintaks YAML standar: mereka opsional dan tandai awal dan akhir file. Instruksi dan nilainya diwakili dalam format kamus, seperti Kunci: Nilai pasangan.

Buku pedoman dapat berisi beberapa apa yang disebut drama; Dalam hal ini kami baru saja mendefinisikan satu. Memang hal pertama yang kami lakukan adalah menentukannya nama, yang dalam contoh ini adalah "perbarui server web". Kunci kedua yang kami gunakan adalah tuan rumah: Dengan itu kita dapat menentukan grup host tugas harus dilakukan. Dalam hal ini kami menentukan server web Sebagai nilai, yang memahami mesin yang kami tentukan dalam contoh sebelumnya (server1 dan server2).

Kunci berikutnya yang kami gunakan adalah remote_user. Dengan itu, kami dapat menentukan apa pengguna yang harus kami login sebagai, melalui SSH, di server jarak jauh. Setelah itu, kami menggunakan menjadi kunci. Kunci ini menerima nilai boolean dan dengan itu kami menentukan apakah
Eskalasi hak istimewa harus digunakan untuk melakukan tugas atau tidak. Dalam hal ini, karena kami login di mesin jarak jauh menggunakan pengguna "EGDOC", dan kami memerlukan hak istimewa root untuk menginstal paket, kami mengaturnya untuk Ya. Penting untuk diperhatikan
Eskalasi hak istimewa itu dikonfigurasi di /etc/ansible/ansible.CFG file konfigurasi, di bagian khusus. Dalam hal ini nilai default adalah sebagai berikut:

[privilege_escalation] #menjadi = true #menjadi_method = sudo #menjadi_user = root #menjadi_ask_pass = false 


Setelah mendefinisikan bermain informasi, kami mulai menentukan daftar tugas kami. Untuk melakukannya kami menggunakan tugas kata kunci. Setiap tugas memiliki a nama yang digunakan untuk dokumentasi dan penangan tugas.

Dengan DNF: Kami menentukan bahwa kami ingin menggunakan modul "DNF", yang, seperti yang kita lihat sebelumnya, digunakan untuk mengelola paket menggunakan manajer paket default dalam keluarga distribusi Red Hat. Di dalam bagian ini, dengan nama kata kunci
Kami menentukan nama paket. Dalam contoh ini kami hanya tertarik pada satu paket, tetapi beberapa paket dapat ditentukan menggunakan daftar. Misalnya:

DNF: Nama: [vim, nano] 

Dengan negara kata kunci dari dnf modul kami pada dasarnya menentukan apa yang ingin kami lakukan dengan paket yang ditentukan. Dalam hal ini kami menggunakan terbaru Sebagai nilainya: dengan itu kami memastikan bahwa paket diinstal dan pada versi terbaru yang tersedia pada distribusi yang digunakan pada mesin jarak jauh. Nilai lain yang mungkin kita gunakan menghapus atau absen, yang menyebabkan paket tidak diinstal, atau hadiah yang hanya memastikan paket diinstal. Saya sarankan Anda untuk memeriksa dokumentasi modul resmi untuk daftar kunci lengkap dan nilai yang dapat digunakan dengan modul.

Ini dia, kami baru saja mendefinisikan buku pedoman pertama kami. Bagaimana kita bisa menjalankannya?

Menjalankan buku pedoman

Untuk menjalankan buku pedoman, kami menggunakan yang berdedikasi Ansible-playbook memerintah. Perintah tersebut menerima serangkaian opsi, dan mengambil satu atau lebih file buku pedoman sebagai argumen. Untuk menjalankan buku pedoman yang kami tentukan di bagian sebelumnya, misalnya kami akan menjalankan perintah berikut:

$ ansible-playbook --ask-pass --- ask-become-pass/path/to/playbook.YML 

Anda dapat melihat bahwa dalam hal ini kami meminta perintah dengan --tanyakan-become-pass pilihan. Opsi ini diperlukan karena dalam file buku pedoman kami menetapkan Ya nilai ke menjadi kunci, karena kita membutuhkan eskalasi hak istimewa untuk memasang paket pada mesin jarak jauh. Itu --tanyakan-become-pass opsi membuat agar sudo Kata sandi ditanya saat kami menjalankan buku pedoman. Dalam hal ini, karena kami menggunakan juga --tanya-pass, Kata sandi SSH akan digunakan sebagai kata sandi default untuk eskalasi hak istimewa. Inilah output yang kami terima saat menjalankan buku pedoman:

Kata Sandi SSH: Menjadi Kata Sandi [Default ke Kata Sandi SSH]: Mainkan [Perbarui WebServer] *********************************** ********************************************** ********************************************** ****** Tugas [mengumpulkan fakta] ************************************* ********************************************** ********************************************** ** ok: [server1] ok: [server2] tugas [Pastikan vim diinstal pada versi terbaru] ******************************* ********************************************** ******************************** berubah: [server1] Berubah: [server2] Mainkan rekap **** ********************************************** ********************************************** ********************************************* Server1 : ok = 2 diubah = 1 tidak terjangkau = 0 gagal = 0 dilewati = 0 diselamatkan = 0 diabaikan = 0 server2:OK = 2 diubah = 1 tidak terjangkau = 0 gagal = 0 dilewati = 0 diselamatkan = 0 diabaikan = 0 

Pertama, kami diminta untuk memberikan kata sandi "SSH", lalu yang "menjadi". Seperti yang sudah kami katakan, kata sandi SSH akan digunakan sebagai nilai default dalam kasus ini. Seperti yang dapat Anda lihat sebelum tugas yang kami tentukan dalam buku pedoman, tugas lain dijalankan: "Mengumpulkan Fakta". Tugas ini dieksekusi secara default untuk mengumpulkan variabel yang berguna tentang host jarak jauh yang dapat digunakan dalam buku pedoman.

Setelah tugas dieksekusi, kami mendapatkan rekap drama yang kami tentukan. Dalam hal ini kita dapat melihat, bahwa dua tugas telah dieksekusi dengan benar (OK = 2) dan satu tugas telah menyebabkan perubahan (diubah = 1). Ini masuk akal: Perubahan terjadi karena paket VIM telah diinstal.

Sekarang, jika kami mencoba untuk mengeksekusi buku pedoman lagi, kami dapat melihat bahwa tidak ada perubahan, karena VIM sudah diinstal dan pada versi terakhir tersedia:

Mainkan Rekap ******************************************** ********************************************** ********************************************** ***** server1: ok = 2 diubah = 0 tidak terjangkau = 0 gagal = 0 dilewati = 0 diselamatkan = 0 diabaikan = 0 server2: ok = 2 diubah = 0 tidak terjangkau = 0 gagal = 0 dilewati = 0 diselamatkan = 0 diabaikan = 0 

Kesimpulan

Dalam tutorial ini kami belajar apa itu yang dimaksud dan apa kekhasannya. Kami melihat cara menginstalnya pada beberapa distribusi Linux yang paling banyak digunakan, cara mengkonfigurasinya, dan beberapa konsep dasar: apa itu inventaris dan apa itu
Modul Ansible. Kami juga melihat cara menjalankan modul dari baris perintah dan cara menulis dan menjalankan buku pedoman. Ini dimaksudkan sebagai pengantar dunia Ansible; membuat Anda kotor, bereksperimen dan baca dokumentasi resmi untuk pengetahuan yang lebih mendalam!

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Menguasai loop skrip bash
  • Hal -hal yang harus diinstal pada Ubuntu 22.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Ubuntu 20.04 Panduan
  • Loop bersarang dalam skrip bash
  • Seberapa sering Anda harus me -reboot server linux Anda?
  • Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…