Ansible adalah platform otomasi yang digunakan di bidang orkestrasi, manajemen konfigurasi, penerapan, penyediaan, dll. Jika Anda seorang pemula yang ingin mempelajari ansible atau seseorang yang berencana untuk mengambil sertifikasi ansible, maka Anda perlu memiliki lab rumah setup untuk berlatih mungkin. Menyiapkan lab rumah secara manual adalah tugas yang memakan waktu. Ada beberapa solusi otomatis seperti Docker, Vagrant, solusi Cloud yang dapat digunakan untuk membangun lab yang memungkinkan. Dalam panduan ini, kita akan mempelajari cara otomatis untuk menyiapkan lab Ansible dengan Vagrant dan VirtualBox di Linux.
Vagrant adalah alat yang sangat baik untuk menyiapkan lingkungan pengembangan Anda dengan cepat. Jika Anda baru mengenal gelandangan, saya sarankan Anda melihat pengantar kami untuk Vagrant guide.
Tutorial Vagrant - Memulai Dengan Vagrant Di Linux
Untuk tujuan panduan ini, kami akan menggunakan Vagrant dengan VirtualBox sebagai penyedia untuk membangun kemungkinan kami laboratorium. Anda juga dapat menggunakan KVM sebagai ganti VirtualBox. Jika Anda ingin menggunakan KVM sebagai penyedia, lihat artikel di bawah ini tentang cara menggunakan gelandangan dengan KVM.
Cara Menggunakan Vagrant Dengan Penyedia KVM LibvirtContents
Ansible Lab SetupClone Project Repository1. berkas gelandangan2. bootstrap.sh3. key_gen.shMemahami Konfigurasi Vagrantfile1. Alokasi Memori Dan Vcore2. Rasa OS3. Pengaturan Jaringan4. Nama Pengguna Dan Komunikasi SSH5. Skrip bootstrap6. Hasilkan Pasangan KunciBuild Ansible Lab SetupSkrip Pasca-InstalPerintah Vagrant Untuk Mengelola VMConclusionAnsible Lab Setup
Sebagai prasyarat, Anda harus menginstal Vagrant dan Virtualbox di mesin Linux Anda. Jika Anda belum menginstal Vagrant, silakan lihat panduan berikut untuk menginstal Vagrant pada distribusi Linux yang berbeda.
Cara Menginstal Vagrant Di Linux
Kami akan membangun pengaturan lab tiga node yang memungkinkan. Satu node akan bertindak sebagai node master/controller dan dua node akan bertindak sebagai node yang dikelola. Untuk tujuan demonstrasi, saya menggunakan ubuntu/focal64 gelandangan box.
Berikut adalah detail dari penyiapan lab Ansible saya.
Di sini saya hanya menyiapkan tiga node untuk lab saya tetapi Anda dapat menambahkan node terkelola sebanyak yang Anda inginkan saat menyiapkan sendiri lab.
Clone Project Repository
Saya telah menghosting semua file yang diperlukan untuk menyiapkan lab Ansible di repositori GitHub saya. Jalankan perintah berikut untuk mengkloning repositori secara lokal.
$ git clone --recursive https://github.com/emkaSudhakar/Ansible_lab_vagrant_virtualbox.git
Mari kita navigasikan ke dalam direktori proyek untuk melihat file apa yang ada.
Izinkan saya memberi Anda penjelasan singkat pengantar untuk setiap file.
1. Vagrantfile
Semua konfigurasi yang terkait dengan VM disimpan dalam file ini. Berikut adalah isi dari file ini.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.provider "virtualbox" lakukan |rs| rs.memory = 2048 rs.cpus = 2 end # Tidak akan memeriksa pembaruan kotak selama setiap startup. config.vm.box_check_update = false # Master node yang memungkinkan akan diinstal config.vm.define "controller" do |controller| controller.vm.box = "ubuntu/focal64" controller.vm.hostname = "controller.anslab.com" controller.vm.network "private_network", ip: "192.168.10.3" controller.vm.provision "shell", path : "bootstrap.sh" controller.vm.provision "file", sumber: "key_gen.sh", tujuan: "/home/vagrant/" end # Managed node 1. config.vm.define "m1" do |m1| m1.vm.box = "ubuntu/focal64" m1.vm.hostname = "managed1.anslab.com" m1.vm.network "private_network", ip: "192.168.10.4" m1.vm.provision "shell", jalur : "bootstrap.sh" end # Managed node 2. config.vm.define "m2" do |m2| m2.vm.box = "ubuntu/focal64" m2.vm.hostname = "managed2.anslab.com" m2.vm.network "private_network", ip: "192.168.10.5" m2.vm.provision "shell", jalur : "bootstrap.sh" akhir end
- bootstrap.sh
Ini adalah skrip shell yang bertanggung jawab untuk mengatur yang mungkin di node pengontrol, menginstal paket, memodifikasi konfigurasi sistem.
Isi file ini diberikan di bawah ini:
#!/usr/bin/env bash # gelandangan secara default membuatnya keypair sendiri untuk semua mesin. Otentikasi berbasis kata sandi akan dinonaktifkan secara default dan mengaktifkannya sehingga otentikasi berbasis kata sandi dapat dilakukan. sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config Sudo systemctl restart sshd # Menekan pesan banner setiap kali Anda terhubung ke kotak gelandangan. sentuh /home/vagrant/.hushlogin # Memperbarui file host untuk semua 3 node dengan IP yang diberikan di vagrantfile # 192.168.10.3 controller.ansible.com controller # 192.168.10.4 managed1.ansible.com managed1 # 192.168.10.5 managed2. ansible.com managed2 echo -e "192.168.10.3 controller.anslab.com controllern192.168.10.4 managed1.anslab.com managed1n192.168.10.5 managed2.anslab.com managed2" >> /etc/hosts # Menginstal paket yang diperlukan sudo apt update && sudo apt -y install curl wget net-tools iputils-ping python3-pip sshpass # Instal dimungkinkan menggunakan pip hanya di node pengontrol jika [[ $(hostname) = "controller" ]]; kemudian sudo pip3 install ansible fi 3. key_gen.sh
Script ini harus dipicu secara manual setelah ketiga pembuatan VM selesai. Skrip ini akan menangani pembuatan pasangan kunci ssh, mendistribusikannya ke ketiga node. Itu juga akan menjalankan contoh perintah ad-hoc yang memungkinkan untuk validasi.
Isi file ini diberikan di bawah ini:
#!/usr/bin/env bash # SKRIP INI AKAN MENCIPTAKAN SSH KEYPAIR DAN mendistribusikan DI SEMUA NODES ssh-keygen -b 2048 -t rsa -f /home/vagrant/.ssh/id_rsa -q -N "" # LOOPING MELALUI DAN mendistribusikan KUNCI untuk val di controller managed1 managed2; do echo "-------------------- MENYALIN KUNCI KE ${val^^} NODE ----------------- -------------" sshpass -p 'vagrant' ssh-copy-id -o "StrictHostKeyChecking=no" [email protected]$val done # CREATE THE INVENTORY FILE PROJECT_DIRECTORY="/home/ gelandangan/ansible_project/" mkdir -p $PROJECT_DIRECTORY cd $PROJECT_DIRECTORY # Membuat file inventaris untuk ketiga node untuk menjalankan beberapa perintah adhoc. echo -e "controllernn[ubuntu1]nmanaged1nn[ubuntu2]nmanaged2" > inventory echo -e "[default]ninventory = inventory"> ansible.cfg echo -e "---- ---------------- MENJALANKAN ANSBILE ADHOC COMMAND - UPTIME ---------------------------- --" echo # menjalankan perintah adhoc untuk melihat apakah semuanya baik-baik saja, semua -i inventory -m "shell" -a "uptime" echo
Semua dari ketiga file ini di-host di repositori GitHub saya. Jangan ragu untuk berkontribusi dan meningkatkannya.
Memahami Konfigurasi Vagrantfile
Sebelum membangun lab Ansible, Anda harus memahami konfigurasi di dalam Vagrantfile dan shell scripts.
1. Alokasi Memori Dan Vcore
Untuk ketiga kotak gelandangan, kita perlu mengatur nilai memori dan CPU. Di sini memori diatur ke 2GB dan CPU diatur ke 2. Jika Anda ingin menambah atau mengurangi batas, cukup sesuaikan parameter yang disorot di Vagrantfile.
2. OS Flavor
Semua tiga node (Pengontrol & terkelola) menggunakan Ubuntu 20.04 gambar LTS. Jadi ketika Anda menjalankan perintah "vagrant up" gelandangan akan mencari parameter berikut dan mencoba menarik gambar jika tidak tersedia secara lokal.
3. Pengaturan Jaringan
Secara default gelandangan menggunakan NAT pada antarmuka pertama (adaptor1). Vagrant menggunakan penerusan port melalui NAT untuk terhubung ke mesin virtual. Di sini kita mengatur nama host dan alamat IP statis untuk ketiga VM melalui jaringan pribadi.
A antarmuka terpisah (Adapter2) akan dibuat dan alamat IP statis akan ditetapkan ke sana. VM yang merupakan bagian dari jaringan pribadi dapat berkomunikasi satu sama lain.
Dalam lingkungan multi-vm, gelandangan akan secara otomatis memperbaiki tabrakan port.
==> m2: Tabrakan port tetap untuk 22 => 2222. Sekarang di port 2201. ==> m2: Menghapus semua antarmuka jaringan yang ditetapkan sebelumnya... ==> m2: Menyiapkan antarmuka jaringan berdasarkan konfigurasi... m2: Adaptor 1: nat m2: Adaptor 2: hanya host ==> m2: Port penerusan... m2: 22 (tamu) => 2201 (host) (adaptor 1) ==> m2: Menjalankan kustomisasi VM 'pre-boot'... ==> m2: Booting VM... ==> m2: Menunggu mesin untuk boot. Ini mungkin memakan waktu beberapa menit... m2: Alamat SSH: 127.0.0.1:2201
- Nama Pengguna Dan Komunikasi SSH
Ada pengguna default yang disebut "gelandangan" dengan kata sandi "gelandangan". Pengguna gelandangan memiliki hak istimewa sudo tanpa kata sandi yang dikonfigurasi di vm secara default.
Dengan otentikasi berbasis kata sandi default dinonaktifkan untuk VM. Vagrant akan membuat pasangan kunci ssh dan menggunakan kunci pribadi untuk terhubung ke vm saat Anda menjalankan perintah "vagrant ssh".
$ vagrant ssh controller$ vagrant ssh m1$ vagrant ssh m2
Otentikasi berbasis kata sandi diaktifkan melalui bootstrap.sh file sehingga Anda dapat terhubung ke node menggunakan alamat IP dan otentikasi berbasis kata sandi alih-alih otentikasi berbasis kunci.
5. Bootstrap Script
Script bootstrap.sh bertanggung jawab untuk
Mengaktifkan otentikasi berbasis kata sandi.Membuat file .huhlogin untuk menekan pesan spanduk default.Menambahkan entri host di file /etc/hosts untuk ketiga node.Menginstal paket yang diperlukan.Menginstal dimungkinkan melalui manajer paket python(pip) hanya pada node controller.
Saya menggunakan penyedia shell, di mana bootstrap.sh akan disalin ke lokasi /tmp/ di ketiga VM dan skrip akan dijalankan dengan hak akses root.
Jika Anda sedang membangun lab berbasis RHEL, Anda harus mengedit perintah instalasi paket dari file bootstrap.sh sesuai dengan dnf atau rpm. Sisanya semua akan serupa di semua distribusi.
6. Hasilkan Pasangan Kunci
Ansible menggunakan pasangan kunci SSH untuk berkomunikasi dengan node yang dikelola dan menjalankan tugas. Kunci baru harus dibuat dari node pengontrol dan dibagikan dengan semua node yang dikelola sehingga memungkinkan untuk berkomunikasi dengan node yang dikelola tanpa meminta kata sandi setiap saat.
Script key_gen.sh akan menangani pembuatan kunci ssh dan mendistribusikan kunci ke semua node . Script juga akan membuat direktori proyek dengan file ansible.cfg dan file inventaris. Perintah adhoc akan dipicu sebagai bagian dari skrip untuk memvalidasi konektivitas.
Heads Up: Skrip ini harus dipicu secara manual dari node pengontrol setelah ketiga VM disediakan.
Build Ansible Lab Setup
Buka direktori proyek dan jalankan "vagrant up" dan sisanya akan diurus oleh gelandangan dan bootstrap script.
$ cd Ansible_lab_vagrant_virtualbox
$ gelandangan up
Contoh output:
Membawa 'pengontrol' mesin dengan penyedia 'virtualbox'... Mengangkat penyedia 'm1' mesin dengan ... 'virtualbox' Membawa mesin 'm2' dengan penyedia 'virtualbox'…………Post-Install Script
Setelah ketiga VM disediakan, masuk ke node pengontrol untuk menjalankan /home/vagrant/key_gen.sh untuk membuat pasangan kunci ssh dan memvalidasi dengan menjalankan perintah ad-hoc yang memungkinkan.
$ vagrant ssh controller$ cd /home/vagrant/$ bash key_gen.shPerintah Vagrant Untuk Mengelola VM
Perintah berikut akan membantu Anda dalam memelihara siklus hidup mesin gelandangan.
Untuk mulai membangun mesin virtual, jalankan perintah berikut dari direktori tempat file gelandangan berada.
$ vagrant up
Jika Anda hanya ingin membawa satu node ke atas, Anda dapat menambahkan nama host ke "gelandangan up" command.
$ vagrant up controller
Untuk memeriksa status mesin, jalankan perintah berikut.
$ status gelandangan Status mesin saat ini: pengontrol berjalan (virtualbox) m1 berjalan (virtualbox) m2 berjalan (virtualbox)
Anda juga dapat menggunakan perintah berikut yang akan memberikan informasi lebih lanjut tentang VM.
$ vagrant global-status --prune name provider state directory ----------------------------- -------------------------------------------------- --------------------------------------- 6095cc7 controller virtualbox berjalan /home/karthick/emka_Root/Work /Vagrant/Lab/Ansible_lab_vagrant_virtualbox cf2e302 m1 virtualbox berjalan /home/karthick/emka_Root/Work/Vagrant/ Lab/Ansible_lab_vagrant_virtualbox af10f7d m2 virtualbox menjalankan /home/karthick/emka_Root/Work/Vagrant/Lab/Ansible_lab_vagrant_virtualbox
Untuk terhubung ke mesin virtual, Anda dapat menjalankan perintah "vagrant ssh". Anda harus memberikan nama vm jika tidak maka akan memunculkan error berikut.
$ vagrant ssh Perintah ini memerlukan nama VM tertentu untuk ditargetkan di lingkungan multi-VM.
Untuk ssh ke m1 VM, perintahnya adalah:
$ vagrant ssh m1
Or ,
$ vagrant ssh cf2e302
Anda juga dapat terhubung menggunakan nama pengguna dan sandi jika otentikasi berbasis sandi diaktifkan.
$ ssh [email protected][email protected]'s password:[email protected]:~$
Untuk menghentikan mesin virtual tertentu , jalankan perintah halt dengan vm name.
$ vagrant halt controller
Untuk menghentikan semua mesin virtual, jalankan perintah berikut.
$ vagrant halt==> m2: Mencoba mematikan VM dengan anggun…==> m1: Mencoba mematikan VM dengan anggun …==> controller: Mencoba mematikan VM dengan anggun…
Untuk menghancurkan semua vm termasuk disk-nya, jalankan perintah berikut.
$ vagrant destroy -f==> m2: Menghancurkan VM dan drive terkait…==> m1: Menghancurkan VM dan rekan d drive…==> controller: Menghancurkan VM dan drive terkait…Conclusion
Dalam artikel ini, saya telah menunjukkan cara otomatis untuk menyiapkan lab yang memungkinkan menggunakan Vagrant dan VirtualBox. Lab dibuat dengan Ubuntu 20.04 LTS stack.
Jika Anda berencana untuk mengambil sertifikasi yang memungkinkan dan ingin lab berlatih, saya sarankan Anda untuk mengedit vagrantfile dengan mengarahkan nama kotak ke rasa RHEL dan mengganti perintah apt ke perintah dnf/yum yang sesuai di file bootstrap.sh.