Sebagai seorang SysAdmin, mungkin akan membutuhkan waktu dalam memanage server yang lebih dari 1 seperti monitoring, maupun instalasi dengan perintah yang sama ke beberapa server, untuk itu diperlukan Ansible untuk memudahkan prosesnya. Pada artikel ini, kami akan membahas mengenai cara menggunakan Ansible untuk instalasi LEMP di Debian 11.
Ansible
Ansible adalah provisioning tool yang dikembangkan oleh Red Hat yang bersifat open source, menjadi salah satu jalan termudah untuk melakukan automasi.
Ansible adalah alternatif yang bagus untuk opsi automasi, karena menawarkan arsitektur yang tidak memerlukan software khusus yang harus di install pada server/node, menggunakan SSH untuk mengeksekusi automation task dan file YAML untuk menentukan provisioning details.
Server Automation saat ini memainkan peran penting dalam system administration, karena sifat sekali pakai dari modern application environment. Tools manajemen konfigurasi seperti Ansible biasanya digunakan untuk merampingkan proses automate server setup dengan menetapkan standar prosedur untuk server baru dan juga mengurangi human error yang terkait dengan manual setup.
Persiapan
Ada beberapa hal yang perlu disiapkan:
- Memiliki 2 VPS yang aktif dengan OS Debian 11.
- Sudah melakukan Instalasi Ansible pada Control Node.
- Memiliki akses root.
2 VPS yang perlu disiapkan untuk:
- 1 Ansible Control Node: Ansible Control Node yang akan digunakan untuk connect dan control ke Ansible Host melalui SSH.
- 1 Ansible Hosts: Ansible Host nantinya akan di kontrol oleh Ansible Control Node yang sudah dikonfigurasi untuk automasi.
Point
- Update Server
- Playbook
- Run Playbook
Cara Menggunakan Ansible untuk Instalasi LEMP di Debian 11
Berikut cara menggunakan Ansible untuk Instalasi LEMP di Debian 11.
Update Server
Login sebagai root dan update package yang ada pada server supaya up-to-date.
$ apt-get update -y
$ reboot
Playbook
Untuk instalasinya nanti melalui Playbook, playbook untuk Linux, Nginx, MySQL, PHP (LEMP Stack) akan melakukan beberapa proses pada Ansible Hosts kamu seperti:
- Install aptitude, direferensikan oleh Ansible sebagai pengganti apt package manager.
- Install package yang dibutuhkan LEMP.
- Create file konfigurasi Nginx yang baru.
- Enable file konfigurasi Nginx yang baru dan juga disable file konfigurasi Nginx default.
- Disable default Apache pages, dimana value pada disable_default di-set ke true.
- Set password untuk MySQL root.
- Remove Anonymous MySQL account dan test database.
- Set up PHP test script seperti info php.
Ketika proses playbook sudah selesai, kamu memiliki web PHP environment yang berjalan di atas Nginx.
Run Playbook
Yang perlu dilakukan adalah dengan menggunakan playbook, kamu bisa dapatkan dari Repository GitHub atau kamu bisa membuatnya sendiri, di sini kami menggunakan dari S-Damian yang mungkin outdated, namun karena ini adalah tutorial, jadi kami hanya gunakan untuk contoh saja. Kemudian lakukan clone repository ke server yang dijadikan Ansible Control Node.
$ cd ~ $ git clone https://github.com/s-damian/ansible-web-server-debian.git $ cd ansible-web-server-debian
Isi dari repository tersebut adalah
ansible-web-server-debian ├── ansible │ ├── roles │ └── hosts │ └── web-server.yml └── README.md
Move directory tersebut ke /etc/ansible/
$ mv ansible-web-server-debian/ /etc/ansible/
Ubah value pada konfigurasi playbook tersebut.
$ cd /etc/ansible/ansible-web-server-debian/ansible/ $ nano web-server.yml
Ubah pada section # REQUIRED.
hosts: all linux_user: www-data domains: - vps201.dewiweb.net mariadb_super_user_username: super_user mariadb_super_user_password: P4ssword123su! mariadb_prod_username: user_prod mariadb_prod_password: P4ssword123prod!
Sesuaikan value di atas dengan kebutuhan kamu.
Jika sudah, save dan exit.
Kemudian, jalankan playbooknya. Kami memilih untuk menjalankan playbooknya secara spesifik ke server1.
$ ansible-playbook -l server1 -u root -i /etc/ansible/hosts /etc/ansible/ansible-web-server-debian/ansible/web-server.yml
Outputnya akan seperti berikut:
PLAY [Installing the LEMP server] ************************************************************************************************************************************************************************* TASK [Gathering Facts] ************************************************************************************************************************************************************************************ ok: [server1] TASK [start : Update and upgrade] ************************************************************************************************************************************************************************* changed: [server1] TASK [start : Installation] ******************************************************************************************************************************************************************************* ok: [server1] TASK [domains-architecture : Create domain architecture] ************************************************************************************************************************************************** included: /etc/ansible/ansible-web-server-debian/ansible/roles/domains-architecture/tasks/domain.yml for server1 => (item=vps201.dewiweb.net) TASK [domains-architecture : Create /home/www-data/www/sites/vps201.dewiweb.net/public folder] ************************************************************************************************************ changed: [server1] TASK [domains-architecture : Create /home/www-data/www/sites/vps201.dewiweb.net/public/index.php file] **************************************************************************************************** changed: [server1] TASK [php : Installation of useful packages] ************************************************************************************************************************************************************** ok: [server1] TASK [php : Ondrej Sury - Download the GPG key] *********************************************************************************************************************************************************** ok: [server1] TASK [php : Ondrej Sury - Add the repository to sources list.] ******************************************************************************************************************************************** changed: [server1] TASK [php : APT update] *********************************************************************************************************************************************************************************** ok: [server1] TASK [php : Install PHP 8.2 and PHP-FPM and few packages] ************************************************************************************************************************************************* ok: [server1] … TASK [phpmyadmin : Installation on the domain vps201.dewiweb.net with a symlink] ************************************************************************************************************************** changed: [server1] TASK [end : Remove apache2] ******************************************************************************************************************************************************************************* ok: [server1] TASK [end : Change the timezone - Put UTC] **************************************************************************************************************************************************************** [WARNING]: Consider using 'become', 'become_method', and 'become_user' rather than running sudo changed: [server1] TASK [end : Update and upgrade] *************************************************************************************************************************************************************************** ok: [server1] PLAY RECAP ************************************************************************************************************************************************************************************************ server1 : ok=68 changed=46 unreachable=0 failed=0 skipped=20 rescued=0 ignored=0
Proses playbook sudah selesai, kamu bisa akses domain atau IP yang kamu set di playbook sebelumnya.
Tampilan di atas adalah hasil dari akses ke IP/Domain.
Kesimpulan
Dengan mengikuti artikel ini, artinya kamu telah berhasil menggunakan Ansible untuk instalasi LEMP di Debian 11, kamu dapat modifikasi lagi playbook-nya sesuai dengan kebutuhan kamu.
Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu.