GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Menginstal &Mengonfigurasi Ansible di CentOS 8 / RHEL 8

Ansible adalah alat manajemen konfigurasi dan penyediaan perangkat lunak sumber terbuka untuk sistem operasi mirip Unix dan Microsoft Windows.

Tidak seperti, Wayang, Koki, dan CFEngine, perangkat lunak server diinstal pada satu mesin, dan mesin klien dikelola melalui perangkat lunak agen. Dimana Ansible, node dikelola dengan mengontrol node (Ansible server) melalui SSH, sehingga tidak akan ada perangkat lunak agen yang berjalan pada mesin node yang dikelola (Client Server).

Ansible dapat melakukan penyebaran, manajemen konfigurasi perangkat lunak pada 100-an node menggunakan SSH, seluruh operasi biasanya dijalankan oleh satu perintah tunggal yang dimungkinkan. Namun, dalam beberapa kasus, di mana Anda mungkin perlu menjalankan beberapa perintah untuk penerapan.

Panduan ini akan membantu Anda menginstal Ansible di CentOS 8 / RHEL 8.

Lingkungan

Nama Inang Alamat IP OS Tujuan
server.itzgeek.local 192.168.0.10 CentOS 8 / RHEL 8 Mengontrol Mesin
node1.itzgeek.local 192.168.0.20 CentOS 8 Node 1 Terkelola
node2.itzgeek.local 192.168.0.30 CentOS 7 Node Terkelola 2

Instal Ansible pada CentOS 8 / RHEL 8

Setup Control Node

Untuk menginstal Ansible, kita harus mengaktifkan repositori EPEL dan Ansible masing-masing pada CentOS 8 dan RHEL 8.

### CentOS 8 ###

yum install -y epel-release

### RHEL 8 ###

subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms

Instal Ansible dengan perintah yum.

yum install -y ansible

Setelah Ansible diinstal, verifikasi versi Ansible dengan menjalankan perintah di bawah ini.

ansible --version

Keluaran:

ansible 2.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, May 21 2019, 23:51:36) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]

Siapkan Node Terkelola

Mesin klien setidaknya harus memiliki Python 2 (versi 2.6 atau yang lebih baru) atau Python 3 (versi 3.5 atau yang lebih baru).

### CentOS 8 / RHEL 8 ###

yum install -y platform-python

### CentOS 7 / RHEL 7 ###

yum install -y python

SELinux

Jika Anda telah mengaktifkan SELinux pada node yang dikelola, Anda harus menginstal paket di bawah ini pada node sebelum menggunakan fungsi terkait salinan/file/templat di Ansible.

### CentOS 8 / RHEL 8 ###

yum install -y python3-libselinux

### CentOS 7 / RHEL 7 ###

yum install -y libselinux-python

Otentikasi SSH

Seperti yang dikatakan sebelumnya, Ansible menggunakan OpenSSH asli untuk komunikasi jarak jauh. Ansible mendukung otentikasi tanpa kata sandi dan kata sandi untuk menjalankan perintah pada node yang dikelola.

Di sini, untuk demo ini, saya telah menggunakan komunikasi tanpa kata sandi antara node pengontrol yang memungkinkan (root) dan node yang dikelola (root). Namun, saya akan menunjukkan cara menggunakan Ansible dengan otentikasi kata sandi.

Otentikasi kunci SSH (Otentikasi Tanpa Sandi)

Ketika berbicara tentang autentikasi ssh, secara default, ia menggunakan kunci ssh (otentikasi tanpa kata sandi) untuk mengautentikasi dengan mesin jarak jauh.

BACA :Cara Mengatur Login Tanpa Kata Sandi SSH di CentOS 8 / RHEL 8

BACA :Cara Mengatur Login Tanpa Kata Sandi SSH di CentOS 7 / RHEL 7

Seperti yang Anda ketahui, penyediaan perangkat lunak atau perubahan konfigurasi yang Anda lakukan pada node memerlukan hak akses root atau hak akses setara root (sudo). Jadi, atur komunikasi tanpa kata sandi antara pengguna root Server Ansible dan pengguna root node untuk kemudahan.

Otentikasi Kata Sandi

Otentikasi kata sandi juga dapat digunakan jika diperlukan dengan menyediakan opsi –ask-pass. Opsi ini memerlukan sshpass ke mesin pengontrol aktif.

yum install -y sshpass 

Buat Inventaris yang Mungkin

File /etc/ansible/hosts menyimpan inventaris host jarak jauh yang akan dihubungkan oleh Ansible melalui SSH/Winrm (Windows) untuk mengelolanya. Saat ini, kita hanya akan melihat bagaimana mengelola konfigurasi node Linux jarak jauh.

Edit file inventaris.

vi /etc/ansible/hosts

Masukkan satu atau lebih alamat IP atau nama host sistem jarak jauh di dalamnya. Anda dapat mengelompokkan server dengan [GROUP_NAME]. Di sini, saya telah menambahkan kedua mesin ke grup demoservers.

Grup digunakan untuk mengklasifikasikan sistem untuk penggunaan tertentu. Jika Anda tidak menentukan grup apa pun, mereka akan bertindak sebagai host yang tidak dikelompokkan.

[demoservers]
192.168.0.20
192.168.0.30

Periksa Konektivitas yang Memungkinkan

Mari kita periksa konektivitas node dengan menggunakan ping (modul) dari mesin pengontrol. Untuk melakukannya, kita akan menggunakan perintah yang dimungkinkan dengan opsi -m (load module) dan all (semua server) atau demoservers (sekelompok node).

Modul ping ini sering digunakan untuk memecahkan masalah konektivitas Ansible.
# All servers - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping all

# All servers - If you use passwordless authentication and the remote user is different from logged in user on Ansible server

ansible -m ping -u raj all

# All servers - If you use password authentication and the remote user is different from logged in user on Ansible server

ansible -m ping all -u raj --ask-pass

# Only demoservers group - If you use passwordless authentication. Current logged in user on Ansible server and remote node's user are same

ansible -m ping demoservers

Keluaran:

192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.30 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Pada contoh di atas, kita telah melihat bagaimana menggunakan modul ping dengan perintah yang memungkinkan untuk melakukan ping ke semua atau sekelompok host jarak jauh dengan otentikasi tanpa kata sandi dan kata sandi.

Dengan cara yang sama, kita dapat menggunakan berbagai modul dengan perintah yang memungkinkan. Anda dapat menemukan modul yang tersedia di sini.

Jalankan Perintah Pada Node

Kali ini, kita akan menggunakan modul perintah dengan perintah yang memungkinkan untuk mendapatkan informasi mesin jarak jauh.

Perintah di bawah ini ditulis dengan asumsi bahwa Anda memiliki komunikasi tanpa kata sandi antara node kontrol dan node yang dikelola. Saya menggunakan grup demoservers untuk menjalankan perintah.

Periksa Nama Inang

Dalam contoh pertama kami, kami akan menjalankan perintah hostname dengan modul perintah untuk mendapatkan nama host dari node jarak jauh sekaligus.

ansible -m command -a "hostname" demoservers

Keluaran:

192.168.1.30 | SUCCESS | rc=0 >>
node2.itzgeek.local

192.168.1.20 | SUCCESS | rc=0 >>
node1.itzgeek.local

Periksa Waktu Aktif

Untuk memeriksa waktu aktif node.

 ansible -m command -a "uptime" demoservers

Keluaran:

192.168.1.30 | SUCCESS | rc=0 >>
 16:36:45 up 56 min,  3 users,  load average: 0.00, 0.00, 0.00

192.168.1.20 | SUCCESS | rc=0 >>
 16:36:45 up  1:09,  2 users,  load average: 0.05, 0.04, 0.05

Baca File Jarak Jauh

Anda juga dapat melihat konten file tertentu.

ansible -m command -a "cat /etc/hosts" demoservers

Keluaran:

192.168.1.30 | SUCCESS | rc=0 >>
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53

192.168.1.20 | SUCCESS | rc=0 >>
# Generated by NetworkManager
search itzgeek.local
nameserver 8.8.8.8
nameserver 192.168.1.1

Mengalihkan Output File

Anda juga dapat menyimpan output (di server Ansible) ke file apa pun dengan menggunakan pengalihan.

ansible -m command -a "cat /etc/resolv.conf" demoservers > /tmp/ouput_file

cat /tmp/ouput_file

Membuat Perubahan Konfigurasi pada Node

Kita dapat menggunakan modul lineinfile untuk mengedit file pada node jarak jauh. Misalnya, untuk menambahkan server nama tambahan, kita dapat menggunakan perintah di bawah ini.

ansible -m lineinfile -a "path=/etc/resolv.conf line=nameserver 8.8.4.4" demoservers

Anda dapat memvalidasi perubahan menggunakan perintah di bawah ini.

ansible -m command -a "cat /etc/resolv.conf | grep -i nameserver" demoservers

Kesimpulan

Itu saja. Anda sekarang telah berhasil menginstal Ansible di CentOS 8 / RHEL 8. Anda dapat melanjutkan untuk membuat playbook Ansible untuk mengotomatisasi tugas Anda.


Cent OS
  1. Cara Menginstal Ansible di CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

  2. Cara Menginstal Ansible di CentOS 7

  3. Cara Menginstal Ansible di CentOS 8

  1. Cara menginstal phpMyAdmin di RHEL 8 / CentOS 8

  2. CentOS / RHEL 7 :Cara menginstal dan mengkonfigurasi telnet

  3. Cara menginstal dan mengkonfigurasi Samba di CentOS / RHEL

  1. Cara Menginstal P7Zip di RHEL 8 / CentOS 8

  2. Cara menginstal ntfs-3g di RHEL 8 / CentOS 8

  3. Cara Menginstal PHP-mbstring di RHEL 8 / CentOS 8