Data Container

Mengautomasikan penyediaan PostgreSQL menggunakan Ansible

Written by Ajit Gadge

| Apr 16, 2019

5 MIN READ

This is the Malay translation to the original blog –  Automating PostgreSQL provisioning using Ansible
Moto Ansible ialah “mudah, tanpa agen dan automasi IT sumber terbuka yang berkuasa” dipetik dari dokumen Ansible. Ansible adalah teman yang anda rujuk apabila anda ingin mengautomasikan segala perkara di dalam sistem anda. Ianya tanpa ejen dan dengan mudah boleh menguruskan sistem anda (seperti server, load balancer, switch, firewall) melalui SSH. Ianya adalah alat bantuan yang telah digunakan untuk mengautomasikan tugas-tugas admin, penyediaaan infrastruktur dan lebih lagi. Jadi ayuh selidik lebih mendalam bagaimana kita boleh mengautomasikan penyediaan Postgres menggunakan Ansible, dalam blog ini.
Dalam dunia IT yang bergerak pantas, kita perlu melancarkan server/nod dalam persekitaran yang berbeza seperti public cloud, private cloud atau persekitaran maya pada premise, kerap melakukan penyediaan Infra bagi aplikasi berbeza, mengautomasikan pembaikan dan kemaskini untuk 100/1000 server dan sebagainya. Tugasan-tugasan ini adalah remeh dan memerlukan banyak masa. Jurutera System, Jurutera Rangkaian atau DBA perlu menguruskan tugasan-tugasan biasa ini setiap hari. Secara jujur, saya sendiri telah bertugas sebagai DBA untuk beberapa tahun, ianya bukan lah satu tugasan yang menarik bagi kebanyakan jurutera.
Sebaliknya, mereka lebih inginkan fokus pada satu tugasan baru yang mencabar menggunakan teknologi baru. Dan sebab itu lah saya rasa Ansible menyelesaikan masalah itu untuk mereka.
Di sini saya akan menerangkan bagaimana anda boleh membina satu Ansible playbook yang mudah dan kemudian menbina satu peranan Ansible bagi PostgreSQL untuk penyediaan secara automatik pada cloud dan premise.
Jagi ayuh mulakan – Saya andaikan, anda telah mengetahui cara memasang Ansible. Oleh itu, saya akan melangkau bahagian pemasangan tersebut dari blog ini. Tetapi jika tidak, anda boleh merujuk ke halaman ini, yang mengandungi pemasangan Ansible pada pelbagai Sistem Linux.
Selepas anda memasang Ansible, anda boleh lihat tiga fail utama, Ansible.cfg, Ansible_playbook.yml dan hosts.
Fail Ansible.cfg ialah satu fail tetapan persekitaran di mana anda boleh definisikan parameter tetapan persekitaran seperti di mana terdapatnya satu fail inventori pada hos jauh, di mana role_path, pengguna lalai dan pengguna sistem jauh malah anda boleh menambah kunci SSH anda dari mana anda mengakses persekitaran hos. Di bawah ini ialah gambar fail Ansible.cfg, untuk rujukan anda:
cmd1
Fail hosts ialah fail mudah di mana anda perlu menyatakan alamat IP hos jauh di mana ingin anda gunakan playbook/peranan Ansible. Jika anda mempunyai jenis server / nod yang berbeza seperti Server Sistem, Server Aplikasi, Server DB, anda sebenarnya boleh membuat satu kumpulan yang sama – yang boleh anda nyatakan server/nod yang berbeza.
Ansible_playbook.yml ialah permulaan anda di mana anda boleh menyatakan kumpulan hos, pengguna jauh dan peranan dari mana ia akan bermula dan gunakannya pada server/nod hos. Di bawah ini adalah satu contoh.
cmd2
Ingat, Ansible memerlukan pustaka python pada hos juga pada mesin jauh di mana anda boleh jalankan Ansible; dan pada server/nod yang boleh anda jalankan peranan Ansible.
Kini ayuh semak contoh mudah untuk ping mesin jauh dengan Ansible. Berikut ialah satu contoh lain.
Anda dengan mudah boleh mengedit fail hosts dan menambah alamat IP hos anda di mana anda ingin jalankan peranan Ansible.
cmd3
Ansible Roles melengkapkan tugasan di mana anda boleh menjelaskan apa yang ingin anda automasikan. Roles mempunyai direktori dan struktur fail yang berbeza seperti common, tasks, handlers vars, default dan sebagainya. Kita dengan mudah boleh membuat struktur fail/direktori ini untuk peranan itu.
Ansible Galaxy ialah satu arahan yang boleh anda gunakan untuk membuat satu peranan Ansible dan struktur direktorinya. Dalam kes kita, kita akan membuat peranan untuk PostgreSQL DB sebagai peranan creatdb. Berikut adalah satu contoh. Jika anda lihat di bawah, ia mempunyai Ansible-Galaxy sedang membuat satu peranan sebagai createdb dan di dalam folder tersebut, ia telah membuat semua keperluan struktur fail/direktori.
cmd4
Kini, ayuh bina peranan-peranan yang boleh melakukan penyediaan PostgreSQL. Di bawah peranan createdb, folder penting ialah tasks dan handlers.
Anda boleh menyatakan main.yml anda di mana anda boleh tulis tugasan automatik di bawah folder tasks. Berikut ialah contoh saya untuk fail main.yml bagi Pemasangan dan penyediaan Postgresql.
Di dalam fail main.yml berikut, saya memasang PostgreSQL menggunakan apt-get kerana saya menggunakan Ubuntu pada server jauh. Bersama dengan PostgreSQL, saya juga memeriksa dan memasang pakej opnessl, devel sebagai prasyarat. Saya juga menyediakan Postgresql dengan parameter pemasangan seperti local, template dan sebagainya dan menetapkan “postgresql” sebagai pengguna dan pangkalan data lalai.
cmd5
Di bawah folder handlers, anda boleh nyatakan status perkhidmatan Postgresql seperti start, restart dalam main.yml.
Berikut adalah contoh baginya.
cmd6
Sekarang, ayuh jalankan Ansible-playbook untuk menyediakan postgresql pada hos yang diberi dengan peranan createdb Ansible yang telah kita tulis.
cmd7
Jika anda lihat pada fail output di atas, anda boleh lihat bahawa ia telah melakukan tugasan yang diarah yang telah kita nyatakan dalam main.yml di bawah peranan tersebut. Anda telah siap. Anda telah pasang PostgreSQL hanya dalam masa beberapa minit sahaja dan anda juga boleh konfigurasikan replikasi PostgreSQL, membuat penalaan pada fail postgresql.conf dalam masa beberapa minit.
Terdapat satu lagi cara lain, anda boleh dapatkan fail Ansible Galaxy dari halaman web Ansible Galaxy. Terdapat banyak peranan yang telah dipratakrifkan di mana anda boleh gunanya seperti cara yang ditunjukkan di bawah.
Hanya buat direktori folder peranan anda dan taip arahan di bawah.
ansible-galaxy install zzet.postgresql
Ini akan memuat turun dan memasang peranan zzet.postgresql dari https://galaxy.ansible.com. Anda boleh dapati banyak peranan yang telah dipratakrif untuk kebanyakan teknologi.
Secara asasnya, alatan seperti Ansible membenarkan anda mengurus perubahan dan mengekalkannya dengan meletakkan konfigurasi dan infrastruktur sebagai kod. Ini hanya satu contoh mudah cara bagaimana anda boleh mengautomasikan salah satu tugasan pentadbiran dalam PostgreSQL. Saya telah menggunakan konsep peranan dalam demontrasi contoh saya ini. Menyatakan peranan akan membantu anda memastikan kebolehgunaan semula komponen granular. Anda juga boleh mendapat peranan pratakrif bagi pelbagai tugasan berbeza. Automasi secara amnya dan Ansible khasnya, boleh menjadi teman karib untuk DBA dan pentadbir sistem yang menggunakan PostgreSQL. Ia boleh membantu anda memastikan penempatan sekata, pengeluaran lebih cepat dan pengurusan konfigurasi mudah merentasi berbilang persekitaran.
Tidak banyak perusahaan yang menyedari nilai sepenuh automasi. Di acara Tech Insights yang dianjurkan oleh Ashnik baru-baru ini, hanya 1 daripada 75 yang hadir mengatakan yang mereka berupaya untuk melakukan automasi sehingga satu persekitaran baru dibuat sejajar dengan penetapan pangkalan data yang mengambil masa 20-30 minit. Sehubungan dengan itu, kami boleh membantu. Kami telah membantu ramai pelanggan mengautomasikan tugasan biasa seperti ujian sandaran dan tugasan mencabar yang memerlukan ketepatan seperti pemulihan nod yang gagal. Sila hubungi kami jika anda sedang mencari perunding bagi memodenkan penempatan pangkalan data, pengurusan konfigurasi dan tugasan pentadbiran.


Go to Top