
Ansible adalah alat sumber terbuka yang memungkinkan Anda untuk menyediakan, mengonfigurasi, mengelola, dan menyebarkan aplikasi. Ini membantu untuk menjalankan infrastruktur sebagai kode, pada dasarnya alat otomatisasi. Ansible berjalan di sistem Linux, Unix-like, dan Windows. Ini adalah alat gratis yang ditulis dengan Python.
Menggunakan Ansible, otomatisasi dan pengendalian sebagian besar server disederhanakan. Hal ini membuat admin sistem atau teknisi DevOps mengelola semua server dari satu node kontrol.
Tidak seperti Chef and Puppet, Ansible tidak memerlukan perangkat lunak khusus untuk diinstal pada node. Ansible menggunakan SSH untuk menjalankan tugas dan file YAML untuk menentukan informasi penyediaan.
Tutorial ini akan menunjukkan cara menginstal ansible di Ubuntu 20.04 dan mempelajari dasar-dasarnya.
Node Kontrol dan Host yang Memungkinkan
Node kontrol yang memungkinkan adalah komputer yang telah diinstal dan mengontrol satu atau lebih host jarak jauh. Node kontrol berkomunikasi dengan host atau node melalui SSH menggunakan alat baris perintah atau skrip konfigurasi (playbook).
Host atau node Terkelola adalah perangkat jaringan atau server yang memungkinkan untuk dikelola. Ansible menyederhanakan operasi dengan menggunakan SSH, sehingga mesin host hanya memerlukan layanan SSH berjalan dan port terbuka.
Di bagian berikut, kita mempelajari cara menyiapkan node kontrol dan mengambil informasi dari host.
Persyaratan
- Satu simpul kontrol dengan pasangan kunci ssh
- Satu atau lebih host - server jarak jauh dengan kunci publik ssh ditambahkan
Untuk demonstrasi, kami akan menggunakan mesin Ubuntu 20.04 untuk kedua tujuan.
Instal Ansible di Ubuntu
Komponen yang memungkinkan dipasang pada node kontrol. Perintah berikut untuk menginstal Ansible di Ubuntu.
Pertama, dapatkan daftar terbaru semua paket dari sumbernya:
$ sudo apt update
Sekarang untuk menginstal yang memungkinkan, ketik:
$ sudo apt install ansible
Siapkan node kontrol dan host
Direkomendasikan untuk membuat pengguna non-root dengan hak sudo pada node kontrol Ansible. Kemudian siapkan pasangan kunci SSH untuk pengguna tersebut.
Buat pengguna non-root baru:
$ sudo adduser controller
Kemudian, Anda harus menetapkan sudo
izin ke controller
pengguna:
$ sudo usermod -aG sudo controller
Sekarang, Anda dapat login ke controller
sesi pengguna dan buat kunci SSH:
$ su - controller
$ ssh-keygen
Keluaran:
Generating public/private rsa key pair.
Enter file in which to save the key (/home/controller/.ssh/id_rsa):
Created directory '/home/controller/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/controller/.ssh/id_rsa
Your public key has been saved in /home/controller/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:R033P2ygbVuZv5jJdRbIZtaPG8Af7ZFL2pE9vbzQgP0 controller@linoxide
The key's randomart image is:
+---[RSA 3072]----+
| . . |
| o . . |
| . .. .|
| . .* =.O|
| S .oo@.^=|
| . =o%+@|
| ++E*|
| . *++|
| =.o |
+----[SHA256]-----+
Kita harus mengaktifkan SSH tanpa kata sandi dari Ansible Control Node ke setiap host. Pada dasarnya, kita harus menyalin kunci publik node kontrol ke file otor_keys di setiap host.
Dalam tutorial ini, kita akan menggunakan dua host yang memungkinkan:host1@ip_address_1
dan host2@ip_address_2
.
Pada node kontrol Ansible, jalankan perintah berikut untuk menyalin kunci publik ke server host:
$ ssh-copy-id host1@ip_address_1
$ ssh-copy-id host2@ip_address_2
Menyiapkan File Inventaris
Ansible menggunakan inventory file
untuk menyimpan informasi tentang server jarak jauh (host) yang dikelola oleh Ansible Control Node. Tuan rumah dapat diatur ke dalam grup atau subgrup.
File inventaris default yang memungkinkan terletak di /etc/ansible/hosts
, tetapi Anda dapat membuat file inventaris di lokasi mana pun dan Anda harus menunjukkan jalur ke file inventaris Anda menggunakan -i
parameter saat menjalankan perintah Ansible.
Sekarang, Anda dapat membuka file inventaris dengan editor favorit Anda dan memodifikasinya sebagai berikut:
$ sudo vim /etc/ansible/hosts
Perhatikan bahwa ganti IP di bawah ini dengan alamat IP dari host Ansible Anda.
[servers]
server1 ansible_host=178.0.113.111
server2 ansible_host=178.0.113.112
Verifikasi inventaris dengan perintah berikut:
$ ansible-inventory --list -y
Keluaran:
all:
children:
servers:
hosts:
server1:
ansible_host: 178.0.113.111
server2:
ansible_host: 178.0.113.112
ungrouped: {}
Menguji koneksi
Saatnya untuk memeriksa apakah Ansible dapat terhubung ke server jarak jauh. Anda dapat menggunakan -u
argumen untuk menentukan pengguna jarak jauh di server. Misalnya:
$ ansible all -m ping -u root
Perintah menggunakan ping
yang memungkinkan modul untuk memeriksa konektivitas dari Ansible Control Node ke server jarak jauh.
server1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
server2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Saat Anda menerima pong
membalas dari server jarak jauh, Anda dapat menjalankan perintah dan buku pedoman yang memungkinkan di server tersebut.
Menjalankan Ad-hoc
perintah pada host jarak jauh yang memungkinkan, misalnya:
$ ansible all -a "df -h" -u root
Keluaran:
server1 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 2.3M 744M 1% /run
/dev/sda1 20G 4.7G 15G 25% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop1 130M 130M 0 100% /snap/google-cloud-sdk/161
/dev/loop0 32M 32M 0 100% /snap/snapd/10238
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
server2 | CHANGED | rc=0 >>
Filesystem Size Used Avail Use% Mounted on
udev 3.7G 0 3.7G 0% /dev
tmpfs 746M 1.7M 745M 1% /run
/dev/sda1 20G 4.2G 16G 22% /
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/1932
/dev/loop1 32M 32M 0 100% /snap/snapd/10492
/dev/sda15 105M 3.6M 101M 4% /boot/efi
tmpfs 746M 0 746M 0% /run/user/1001
Kesimpulan
Ansible sekarang dimiliki oleh Redhat dan membawa banyak perbaikan pada kodenya. Ansible Tower adalah Ansible versi perusahaan tempat Anda dapat mengelola server dari UI berbasis web modern.
Dalam tutorial ini, Anda telah belajar cara menginstal ansible di Ubuntu dan pengaturan dasar melalui contoh. Terima kasih telah membaca dan silakan tinggalkan saran Anda di bagian komentar di bawah.