Berikut adalah panduan contoh saja use case dengan simple http nginx belum https untuk membuat role Ansible yang mengatur Nginx dengan template untuk menambahkan virtual host `www.sabang.net` misalnya:
### Langkah 1: Menentukan Struktur Peran
Pertama, buat struktur direktori yang diperlukan untuk peran Ansible.
```bash
mkdir -p roles/nginx/{tasks,templates,defaults,handlers}
```
### Langkah 2: Buat `defaults/main.yml`
File ini akan mendefinisikan variabel default untuk peran.
```yaml
# roles/nginx/defaults/main.yml
nginx_user: www-data
nginx_conf_dir: /etc/nginx
nginx_vhost_template: nginx_vhost.j2
nginx_sites_available_dir: "{{ nginx_conf_dir }}/sites-available"
nginx_sites_enabled_dir: "{{ nginx_conf_dir }}/sites-enabled"
nginx_domain: www.sabang.net
nginx_root: /var/www/{{ nginx_domain }}
```
### Langkah 3: Buat `tasks/main.yml`
File ini akan berisi tugas-tugas untuk menginstal dan mengonfigurasi Nginx.
```yaml
# roles/nginx/tasks/main.yml
---
- name: Pastikan Nginx terinstal
apt:
name: nginx
state: present
become: true
- name: Pastikan layanan Nginx diaktifkan dan dijalankan
service:
name: nginx
state: started
enabled: true
become: true
- name: Buat direktori root dokumen
file:
path: "{{ nginx_root }}"
state: directory
owner: "{{ nginx_user }}"
group: "{{ nginx_user }}"
mode: '0755'
become: true
- name: Template konfigurasi virtual host Nginx
template:
src: "{{ nginx_vhost_template }}"
dest: "{{ nginx_sites_available_dir }}/{{ nginx_domain }}"
notify:
- Reload Nginx
become: true
- name: Aktifkan virtual host
file:
src: "{{ nginx_sites_available_dir }}/{{ nginx_domain }}"
dest: "{{ nginx_sites_enabled_dir }}/{{ nginx_domain }}"
state: link
become: true
```
### Langkah 4: Buat `handlers/main.yml`
File ini akan mendefinisikan handler untuk me-reload Nginx saat konfigurasi berubah.
```yaml
# roles/nginx/handlers/main.yml
---
- name: Reload Nginx
service:
name: nginx
state: reloaded
become: true
```
### Langkah 5: Buat Template Virtual Host Nginx
Template Jinja2 ini akan mendefinisikan konfigurasi virtual host untuk Nginx.
```nginx
# roles/nginx/templates/nginx_vhost.j2
server {
listen 80;
server_name {{ nginx_domain }};
root {{ nginx_root }};
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
```
### Langkah 6: Gunakan Roles dalam Playbook
Terakhir, buat playbook untuk menerapkan peran.
```yaml
# playbook.yml
---
- hosts: webservers
become: true
roles:
- nginx
```
### Langkah 7: Jalankan Playbook
Jalankan playbook untuk mengatur Nginx dan mengonfigurasi virtual host.
```bash
ansible-playbook -i inventory playbook.yml
```
Ganti `inventory` dengan file inventory Anda, dan pastikan grup `webservers` dalam file inventory Anda menyertakan host target.
Untuk script ansible lengkapnya: https://github.com/bagussa/ITNSA-Ansible-Config-Mgmt
Setup ini akan menginstal Nginx, membuat direktori root dokumen, dan mengonfigurasi virtual host untuk `www.sabang.net`. Sesuaikan path dan konfigurasi sesuai kebutuhan lingkungan Anda.
Comments
Post a Comment