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 sshpassDi 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.