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

Cara Menginstal Ansible di CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

Mungkin adalah alat manajemen konfigurasi gratis, dan mendukung pengelolaan konfigurasi sistem mirip Unix dan Microsoft Windows. Mungkin mengelola node melalui SSH atau PowerShell dan python untuk diinstal pada mereka.

Mungkin membantu Anda melakukan konfigurasi, pengelolaan, dan penerapan perangkat lunak pada 100-an node menggunakan SSH, seluruh operasi dapat dijalankan dengan satu perintah ansible . Namun, dalam beberapa kasus, di mana Anda mungkin perlu menjalankan beberapa perintah untuk penerapan.

Panduan ini akan membantu Anda menginstal Ansible di CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

Arsitektur

Jika Anda menggunakan alat manajemen konfigurasi lain seperti boneka, koki, dan CFEngine, perangkat lunak server diinstal pada satu mesin, dan mesin klien dikelola melalui agen. Dimana Ansible, node dikelola dengan mengontrol mesin (Ansible server) melalui SSH, sehingga tidak akan ada agen yang berjalan pada mesin node.

Ansible menyebarkan modul ke node melalui SSH, dan modul ini disimpan sementara di node dan berkomunikasi dengan server Ansible melalui protokol JSON. Modul tidak lain adalah skrip yang ditulis dengan Python, Perl, Ruby , bash, dll.

Persyaratan Sistem

Mesin Pengontrol

Anda dapat menjalankan Ansible di mesin apa pun yang menginstal Python 2.6 atau 2.7 (Windows tidak didukung untuk mesin kontrol).

Mendukung Red Hat, Debian, CentOS, OS X, salah satu BSD.

Node Klien

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

Jika Anda mengaktifkan SELinux pada node jarak jauh, Anda harus menginstal libselinux-python paket pada node sebelum menggunakan fungsi terkait salinan/file/templat di Ansible

Lingkungan

Nama Inang Alamat IP OS Tujuan
server.itzgeek.local 192.168.1.10 CentOS 7 / Ubuntu 18.04 / Debian 9 Mengontrol Mesin
node1.itzgeek.local 192.168.1.20 CentOS 7 Node 1 Terkelola
node2.itzgeek.local 192.168.1.30 Ubuntu 18.04 Node Terkelola 2

Instal Ansible pada CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9

Menyiapkan Mesin Pengontrol

Untuk menginstal Ansible, kita harus Mengaktifkan repositori EPEL di CentOS 7 / RHEL 7 .

### CentOS 7 ###

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

### RHEL 7 ###

subscription-manager repos --enable rhel-7-server-ansible-2.6-rpms

### Ubuntu 18.04 / Ubuntu 16.04 ###

sudo apt-get update
sudo apt-get install software-properties-common 
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update 

### Debian 9 ###

sudo apt-get install dirmngr
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
sudo apt-get update

Instal Ansible.

### CentOS 7 / RHEL 7 & Fedora 28 ###

yum install -y ansible

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y ansible

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

ansible --version

Keluaran:

ansible 2.6.3
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

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 7 / RHEL 7 & Fedora ###

yum install -y python

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo apt-get install -y python

SELinux (CentOS / RHEL / Fedora)

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.

yum install -y libselinux-python

Otentikasi SSH

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

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 7 / RHEL 7

Meskipun tautan di atas untuk CentOS, langkah-langkah di dalamnya akan berfungsi untuk Ubuntu/Debian juga.

Setelah Anda menyiapkan komunikasi tanpa kata sandi, verifikasikan.

ssh [email protected]
ssh [email protected]

Anda sekarang seharusnya dapat masuk ke mesin jarak jauh tanpa kata sandi.

Otentikasi Kata Sandi

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

### CentOS 7 / RHEL 7 & Fedora ### 

yum install -y sshpass 

### Ubuntu 18.04 / 16.04 & Debian 9 ### 

sudo apt-get update
sudo apt-get install -y sshpass
Di sini, untuk demo ini, saya telah menggunakan komunikasi tanpa kata sandi antara node pengontrol yang memungkinkan dan node yang dikelola.
Nama pengguna server yang memungkinkan =root
Nama pengguna node yang dikelola =raj

Buat Inventaris yang Mungkin

Edit (atau buat) /etc/ansible/hosts berkas. File ini menyimpan inventaris host jarak jauh yang akan dihubungkan oleh Ansible melalui SSH untuk mengelolanya.

### CentOS 7 / RHEL 7 & Fedora ###

vi /etc/ansible/hosts

### Ubuntu 18.04 / 16.04 & Debian 9 ###

sudo nano /etc/ansible/hosts

Letakkan satu atau lebih sistem jarak jauh dan kelompokkan. Di sini, saya telah menambahkan kedua mesin ke grup server-demo.

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

[demo-servers]
192.168.1.20
192.168.1.30

Perintah Pertama

Sekarang saatnya untuk memeriksa semua node kita hanya dengan melakukan ping dari mesin pengontrol, untuk itu kita akan menggunakan perintah ansible dengan opsi -m (memuat modul) dan semua (semua server).

# all servers - Works when both server's and client's user name are same (Passwordless)

ansible all -m ping

# all servers - "raj" is managed node's user (Passwordless)

ansible all -u raj -m ping

OR

# Only demo-servers group - "raj" is managed node's user (Passwordless)

ansible demo-servers -u raj -m ping

OR

# If you use password authendication

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

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 menggunakan modul ping dengan ansible perintah untuk melakukan ping ke semua atau grup host jarak jauh.

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

Di sini, untuk demo ini, saya telah menggunakan komunikasi tanpa kata sandi antara node pengontrol yang memungkinkan dan node yang dikelola.
Nama pengguna server yang memungkinkan =root
Nama pengguna node yang dikelola =raj
Jadi, semua perintah saya yang memungkinkan akan memiliki -u raj

Eksekusi Perintah Jarak Jauh

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

Misalnya, kami akan menjalankan hostname perintah dengan perintah modul untuk mendapatkan nama host dari host jarak jauh sekaligus.

ansible -m command -a "hostname" -u raj demo-servers

Keluaran:

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

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

Kami akan mendapatkan detail partisi dengan perintah di bawah ini.

ansible -m command -a "df -hT" -u raj demo-servers

Keluaran:

192.168.1.30 | SUCCESS | rc=0 >>
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs          tmpfs     395M  1.5M  393M   1% /run
/dev/sda4      ext4       94G  4.9G   84G   6% /
tmpfs          tmpfs     2.0G     0  2.0G   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0     squashfs   87M   87M     0 100% /snap/core/4486
/dev/loop3     squashfs  3.4M  3.4M     0 100% /snap/gnome-system-monitor/36
/dev/loop1     squashfs  1.7M  1.7M     0 100% /snap/gnome-calculator/154
/dev/loop2     squashfs  141M  141M     0 100% /snap/gnome-3-26-1604/59
/dev/loop4     squashfs   21M   21M     0 100% /snap/gnome-logs/25
/dev/loop5     squashfs   88M   88M     0 100% /snap/core/5328
/dev/loop6     squashfs   13M   13M     0 100% /snap/gnome-characters/69
/dev/sda1      vfat       93M  4.6M   88M   5% /boot/efi
tmpfs          tmpfs     395M   28K  395M   1% /run/user/120
tmpfs          tmpfs     395M   36K  395M   1% /run/user/1000
/dev/loop7     squashfs   15M   15M     0 100% /snap/gnome-logs/40

192.168.1.20 | SUCCESS | rc=0 >>
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        50G  1.1G   49G   3% /
devtmpfs                devtmpfs  1.4G     0  1.4G   0% /dev
tmpfs                   tmpfs     1.5G     0  1.5G   0% /dev/shm
tmpfs                   tmpfs     1.5G  8.5M  1.4G   1% /run
tmpfs                   tmpfs     1.5G     0  1.5G   0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  188M  827M  19% /boot
/dev/mapper/centos-home xfs        46G   33M   46G   1% /home
tmpfs                   tmpfs     287M     0  287M   0% /run/user/1000
tmpfs                   tmpfs     287M     0  287M   0% /run/user/0

Untuk memeriksa waktu aktif dan memuat detail di kedua node.

 ansible -m command -a "uptime" -u raj demo-servers

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

Anda juga dapat memeriksa konten file tertentu.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers

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

Anda juga dapat menyimpan output ke file apa pun dengan mengarahkan ulang seperti di bawah ini.

ansible -m command -a "cat /etc/resolv.conf" -u raj demo-servers > /tmp/ouput_file

cat /tmp/ouput_file

Dengan cara ini, Anda dapat menjalankan banyak perintah shell menggunakan ansible.

Anda sekarang telah berhasil menginstal Ansible di CentOS 7 / Ubuntu 18.04 / Ubuntu 16.04 / Debian 9 .

BACA SELENGKAPNYA :Cara Membuat Playbook yang Memungkinkan untuk Otomatisasi TI

Itu saja.


Cent OS
  1. Cara Menginstal Apache Hadoop di CentOS 7, Ubuntu 18.04 &Debian 9

  2. Cara Menginstal Redis di CentOS 7 / RHEL 7 &Ubuntu 18.04 / Ubuntu 16.04

  3. Cara Menginstal Ansible di CentOS 7

  1. Cara Menginstal Ansible di Debian 11

  2. Cara Menginstal Ansible di CentOS 8

  3. Cara Menginstal SSHFS di CentOS/RHEL/Ubuntu

  1. Cara menginstal phpMyAdmin di RHEL 8 / CentOS 8

  2. Cara Menginstal P7Zip di RHEL 8 / CentOS 8

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