Halo dan selamat datang di artikel kami tentang Ansible Automation Tool yang mirip dengan Chef atau Puppet. Pertama-tama Ansible mudah dipasang, mudah dikonfigurasi, dan mudah dimengerti. Dalam TI, sangat penting untuk menjaga sistem dan proses Anda tetap sederhana. Ansible digunakan untuk manajemen konfigurasi yang membantu dalam mengonfigurasi server web dan aplikasi Anda dan memudahkan untuk membuat versi file Anda dan Anda juga dapat menggunakannya untuk mengelola berbagai konfigurasi di lingkungan pengembangan, pementasan, dan produksi Anda. Hal ini juga digunakan untuk penyebaran aplikasi. Ini dapat sepenuhnya mengotomatiskan penerapan aplikasi multi-tingkat Anda yang dapat menangani beberapa server dan database grup.
Ansible menggunakan SSH untuk terhubung ke server dan menjalankan Tugas yang dikonfigurasi dengan menghubungkan ke klien melalui SSH, tidak perlu menyiapkan agen khusus apa pun. Yang Anda butuhkan hanyalah python dan pengguna yang dapat masuk dan menjalankan skrip, kemudian Ansible mulai mengumpulkan fakta tentang mesin seperti sistem operasi dan paket apa yang diinstal dan layanan lain apa yang sedang berjalan dll. Setelah itu Ansible menjalankan playbook dalam format file YAML , playbook adalah sekumpulan perintah yang dapat melakukan banyak tugas.
Prasyarat
Dalam tutorial ini, kita akan menginstal dan mengonfigurasi Ansible pada CentOS 7 dan akan mengelola dua nodenya untuk memahami fungsinya.
Dalam lingkungan pengujian kami, kami akan menggunakan tiga VM Linux CentOS 7, satu untuk mengontrol di mana server Ansible diinstal dan dua Node yang akan dikelola oleh mesin pengontrol ini melalui SSH. Pastikan Anda telah menginstal Python 2.6 atau 2.7 pada node kontrol dan klien Anda untuk keberhasilan instalasi Ansible.
Mari sambungkan ke server kontrol Anda menggunakan pengguna root atau pengguna non-root dengan hak istimewa sudo untuk memulai Ansible.
Siapkan Repositori EPEL
Pertama kita perlu mengaktifkan repositori 'epel' untuk CentOS 7 di server kontrol karena paket Ansible tidak tersedia di repositori default yum.
Untuk Mengaktifkan repositori EPEL di CentOS 7/RHEL 7, ketik:
# yum install epel-release
Menginstal Kemungkinan
Sekarang kita dapat menginstal Ansible pada CentOS 7 menggunakan perintah 'yum' yang akan menginstalnya termasuk dependensi yang diperlukan dengan memilih kunci 'y' untuk melanjutkan seperti yang ditunjukkan.
# yum install ansible
Setelah Anda berhasil menginstal Ansible, Anda dapat memverifikasi dan memeriksa versi yang diinstal menggunakan perintah di bawah ini.
# ansible --version
Otentikasi SSH berbasis kunci dengan Node
Untuk melakukan penyebaran/manajemen dari 'localhost' ke host jarak jauh, pertama-tama kita perlu Menghasilkan kunci pada server Ansible dan menyalin kunci publik ke node klien. Jalankan perintah di bawah ini di server Ansible Anda untuk menghasilkan kunci publik dan pribadinya.
# ssh-keygen -t rsa -b 4096
Setelah membuat Kunci SSH, sekarang salin ke server jauh dengan menggunakan perintah berikut untuk menempatkan kunci SSH pada host jarak jauh.
# ssh-copy-id root@node1_ip
Jika Anda menggunakan port ssh khusus, sebutkan menggunakan parameter '-p' di perintah Anda. Anda akan dimintai kata sandi node klien Anda, setelah Anda memberikan kata sandi yang benar untuk node klien Anda, maka itu akan berhasil diotorisasi.
# ssh-copy-id -p2178 root@node1_ip
The authenticity of host '[72.25.70.83]:2178 ([72.25.70.83]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:9c:D9:35:le:09:3d:5f:31:43:a1:41:94:70:53.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Authorized uses only. All activity may be \ monitored and reported.
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '2178' '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
Anda juga dapat secara manual menambahkan kunci rsa publik dari server pengontrol Anda ke node clinet. Untuk melakukannya, login ke node klien Anda dan ikuti langkah-langkah di bawah ini.
Pertama-tama salin kunci dari file '/root/.ssh/id_rsa.pub' dan simpan di node klien dalam direktori home server Anda atau pengguna lain yang ingin Anda autentikasi.
[root@centos-7 .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
[root@node2 ~]# vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAPNRNS/BVcT7XqHDuSvd8oncAjbNl2ZiYiU22MCNFKN8p/cgcblOZoZS0gjlQHpQLR1wm5hVu7PcxY/JAFX2phKyeZ+dbfQlAQ7HLRaaXWfuonelWgTCcs530bSg6XP3MTDRWjW0ZEFTLaOqVz+Yq2nUP3xRYmRKYNq2PhPRrkoBxnDGlmAsgGDm4gWz2TGE59uYHuXvY2Ys4OPeMFHAp0blR5nJIfVF40RB4uH0U79pp19qZ0vbghEvYUiyD4NMjqG13Ba4YYBQQIphe4GA3OTjBvjVmnmBCWZyDOcO+bWWyyKpabEEZOga3KnsoTw4iQ+d+iUyhPTZOvXaoOFUmrFQo5wWG229/GMJnYe1Qv0D3K3CcAQ== root@centos-7
Simpan dan keluar dari file dan Anda dapat mengakses kedua node klien Anda dari server kontrol tanpa meminta kata sandi root.
[root@centos-7 ~]# ssh -p 2178 root@node1_ip
[root@centos-7 ~]# ssh -p 2178 root@node2_ip
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 21:42:09 2016 from 12.1.0.90
[root@node1 ~]# exit
logout
Connection to 72.25.10.83 closed.
[root@centos-7 .ssh]# ssh -p 2178 [email protected]
The authenticity of host '[72.25.10.84]:2178 ([72.25.10.84]:2178)' can't be established.
ECDSA key fingerprint is 49:8a:3c:85:55:61:79:1d:1f:21:33:s1:s1:fd:g0:53.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[72.25.10.84]:2178' (ECDSA) to the list of known hosts.
Authorized uses only. All activity may be \ monitored and reported.
Last login: Sun Mar 27 22:03:56 2016 from 12.1.0.90
[root@node2 ~]#
[root@node2 ~]# exit
logout
Connection to 72.25.10.84 closed.
Membuat Inventaris Host Jarak Jauh
Setelah mengatur otentikasi kunci SSH antara server Ansible dan node kliennya, sekarang akan mengkonfigurasi host jarak jauh tersebut pada server kontrol Ansible dengan mengedit file '/etc/ansible/hosts'. File ini menyimpan inventaris host jarak jauh yang perlu dihubungkan oleh Ansible melalui SSH untuk mengelola sistem.
Buka file menggunakan salah satu editor Anda untuk mengonfigurasinya.
[root@centos-7 ~]# vim /etc/ansible/hosts
Di sini, di file konfigurasi kami telah mengkonfigurasi kedua node klien untuk menggunakan port '2178', jika Anda menggunakan port ssh default maka Anda cukup memasukkan alamat IP host Anda.
Setelah menyimpan file, jalankan perintah ansible berikut dengan opsi '-m' untuk modul untuk memverifikasi konektivitas dari server Ansible ke server jarak jauh.
# ansible -m ping 72.25.10.83
# ansible -m ping 72.25.10.73
Anda juga dapat menggunakan perintah belo untuk melakukan ping ke semua host yang dikonfigurasi.
[root@centos-7 ~]# ansible all -m ping
72.25.10.83 | success >> {
"changed": false,
"ping": "pong"
}
72.25.10.73 | success >> {
"changed": false,
"ping": "pong"
}
Melaksanakan Perintah Jarak Jauh
Dalam contoh di atas, kita baru saja menggunakan modul ping untuk melakukan ping ke host jarak jauh. Ada berbagai modul yang tersedia untuk menjalankan perintah pada host jarak jauh. Sekarang kita akan menggunakan modul 'command' dengan perintah 'ansible' untuk mendapatkan informasi mesin jarak jauh seperti informasi nama host sistem, ruang disk kosong, dan waktu aktif seperti yang ditunjukkan.
# ansible -m command -a 'hostnamectl' 72.25.10.83
# ansible -m command -a 'df -h' 72.25.10.83
# ansible -m command -a 'uptime' 72.25.10.83
Demikian pula Anda dapat menjalankan banyak perintah shell menggunakan ansible pada host klien tunggal serta pada grup host serupa Anda seperti jika Anda memiliki grup 'server web' yang dikonfigurasi dalam file inventaris host yang memungkinkan, maka Anda akan menjalankan perintah seperti ini.
# ansible -m command -a "uptime" web-servers
Membuat Playbook di Ansible
Playbook adalah skrip manajemen konfigurasi Ansible yang digunakan untuk mengelola konfigurasi dan penerapan ke mesin jarak jauh. Playbook berisi serangkaian kebijakan yang Anda inginkan untuk diterapkan pada sistem jarak jauh Anda.
Mari buat playbook pertama Anda dengan nama file sebagai 'httpd.yml', kemudian kita akan mengkonfigurasi host untuk menjalankan server web apache. Di sini Anda akan memilih konfigurasi ke mesin mana dalam infrastruktur Anda untuk ditargetkan dan pengguna jarak jauh mana yang menyelesaikan tugas seperti yang ditunjukkan dalam file konfigurasi.
[root@centos-7 ~]# vi httpd.yml
---
- hosts: 72.25.10.83
remote_user: root
tasks:
- name: Installing Latest version of Apache
yum: pkg=httpd state=latest
- name: Copying the demo file
template: src=/etc/ansible/index.html dest=/var/www/html
owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
service: name=httpd enabled=yes
notify:
- start apache
handlers:
- name: start apache
service: name=httpd state=started
Simpan dan tutup file, lalu buat file html demo yang akan ditempatkan di Document Root default host jarak jauh.
[root@centos-7 ~]# vi /etc/ansible/index.html
Installing Apache by Ansible
Apache Web Server is installed by Ansible
Congratulations, Apache is managed through Ansible
Memahami Konfigurasi Playbook
Karena kami telah membuat buku pedoman pertama kami, sekarang penting untuk memahami cara kerjanya. Semua file YAML harus dimulai dengan (Tiga tanda hubung) '---', yang menunjukkan awal dokumen. Kemudian baris host adalah daftar satu atau lebih grup atau pola host yang dipisahkan oleh titik dua. Anda dapat menyebutkan akun pengguna jarak jauh bersama dengan host.
---
- hosts: 72.25.10.83
remote_user: root
Kemudian kami memiliki serangkaian tugas, di mana setiap permainan berisi daftar tugas, yang dieksekusi secara berurutan, satu per satu, melawan semua mesin yang cocok dengan pola host, sebelum melanjutkan ke tugas berikutnya.
tasks:
- name: Installing Latest version of Apache
yum: pkg=httpd state=latest
- name: Copying the demo file
template: src=/etc/ansible/index.html dest=/var/www/html
owner=apache group=apache mode=0644
- name: (Enable it on System Boot)
service: name=httpd enabled=yes
Setiap tugas harus memiliki nama, yang disertakan dalam output. Ini adalah output bagi kami, jadi bagus untuk memiliki deskripsi yang cukup baik dari setiap langkah tugas. Jadi, tugas Pertama kita akan menginstal versi terbaru apache, kedua akan menyalin html demo (/etc/ansible/index.html) ke /var/www/html direktori host jarak jauh dan yang ketiga akan mengaktifkan auto-start layanan apache selama boot sistem.
Setelah itu, tindakan 'beri tahu' dipicu di akhir setiap blok tugas dalam buku pedoman, dan hanya akan dipicu sekali meskipun diberi tahu oleh beberapa tugas berbeda.
notify:
- start apache
Item 'notify' berisi item yang disebut "start apache". Ini adalah referensi ke handler, yang dapat melakukan fungsi tertentu saat dipanggil dari dalam tugas. Kami akan mendefinisikan handler "mulai apache" di bawah ini.
handlers:
- name: start apache
service: name=httpd state=started
Handler adalah daftar tugas yang hanya berjalan ketika mereka diberitahu oleh tugas bahwa perubahan telah terjadi pada sistem klien. Karena kami memiliki handler yang memulai layanan Apache setelah paket diinstal.
Menjalankan Playbook di Ansible
Setelah mengatur konfigurasi playbook Anda, Anda dapat menjalankan playbook Anda menggunakan perintah di bawah ini.
# ansible-playbook -l 72.25.10.83 httpd.yml
Setelah ini, buka browser Anda dan navigasikan ke alamat IP host jarak jauh Anda yang disebutkan dalam inventaris yang memungkinkan.
http://your_client_node_ip/
Jadi, jika Anda mendapatkan halaman di atas berarti Anda telah berhasil menginstal apache dengan playbook Ansible. Dengan cara yang sama, Anda dapat membuat banyak buku pedoman untuk menginstal aplikasi kompleks Anda di banyak host.
Kesimpulan
Ansible cukup menarik dan sangat mudah, ringan. Dengan mudah bisa bangun dan berjalan dalam 5 menit. Jadi, Anda telah berhasil menginstal Ansible di CentOS 7 dan mempelajari penggunaan dasarnya untuk membuat buku pedoman sederhana untuk otomatisasi instalasi Apache. Semoga ini bermanfaat bagi Anda dalam otomatisasi tugas Anda.