SlideShare a Scribd company logo
1 of 20
Download to read offline
i
Tugas Akhir
AUTOMATION ANSIBLE
Disusun oleh :
Nama : Rakha Fauzi Maulana
NIS : 1516116122
Kelas : Teknik Komputer Jaringan 1
Sekolah Menengah Kejuruan Negeri 4 Bandung
2017
ii
KATA PENGANTAR
Puji syukur kita panjatkan kepada Allah SWT karena berkat Rahmat dan
KaruniaNya-lah penulis dapat menyelesaikan penulisan tugas akhir ini tepat
waktunya dengan Judul “Automation Ansible”. Tugas akhir ini disusun untuk
memenuhi salah satu serangkaian ujian sekolah
Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan.
Sehingga dengan kerendahan hati, penulis mengharapkan kritik dan saran dari
pembaca untuk perbaikan ke depannya.
Bandung, 30 Maret 2018
Rakha Fauzi Maulana
iii
DAFTAR ISI
KATA PENGANTAR....................................................................................................ii
DAFTAR ISI ...............................................................................................................iii
BAB 1......................................................................................................................... 1
PENDAHULUAN ........................................................................................................ 1
1.1. Latar Belakang ......................................................................................... 1
1.2. Rumusan Masalah ........................................................................................ 1
1.3. Tujuan........................................................................................................... 1
2.1. Ansible .......................................................................................................... 2
2.2. Apache2........................................................................................................ 2
2.3. Bind9............................................................................................................. 2
2.4. Iptables ......................................................................................................... 2
2.5. HAProxy........................................................................................................ 2
2.6. Proftpd .......................................................................................................... 3
2.7. Rsync............................................................................................................ 3
BAB 3......................................................................................................................... 4
PERANCANGAN........................................................................................................ 4
3.1. Topology ....................................................................................................... 4
3.2. Instalasi......................................................................................................... 4
3.3. Konfigurasi.................................................................................................... 4
BAB 4....................................................................................................................... 14
IMPLEMENTASI ...................................................................................................... 14
BAB 5....................................................................................................................... 17
KESIMPULAN .......................................................................................................... 17
1
BAB 1
PENDAHULUAN
1.1. Latar Belakang
Setiap bisnis adalah bisnis digital. Teknologi adalah mesin inovasi Anda, dan
mengirimkan aplikasi Anda dengan lebih cepat membantu Anda menang. Secara
historis, itu membutuhkan banyak upaya manual dan koordinasi yang rumit. Tapi
hari ini, ada Ansible - mesin otomatisasi TI yang sederhana namun canggih yang
digunakan ribuan perusahaan untuk mendorong kerumitan keluar dari lingkungan
mereka dan mempercepat inisiatif DevOps.
Tidak ada yang menyukai tugas yang berulang. Dengan Ansible, admin TI dapat
mulai mengotomatiskan pekerjaan membosankan dari tugas sehari-hari mereka.
Otomatisasi membebaskan admin hingga fokus pada upaya yang membantu
memberikan lebih banyak nilai bagi bisnis dengan mempercepat waktu untuk
pengiriman aplikasi, dan membangun budaya kesuksesan. Akhirnya, Ansible
memberi tim satu hal yang tidak pernah bisa mereka dapatkan: waktu.
Memungkinkan orang pintar untuk fokus pada hal-hal cerdas.
Pada era cloud seperti sekarang, sudah jadi hal umum jika satu orang atau
server Administrator memegang lebih dari satu server. Tentu akan kesulitan jika
sang administrator tidak mempunyai pengetahuan mengenai otomasi server. Untuk
mengatasi hal itu maka terciptalah Ansible, jadi seorang DevOps Engineer tidak
akan hanya berpikir cara instalasi, deployment namun juga cara memeliharanya.
Bayangkan saja ketika ada patch baru pada sebuah software yang tertanam di
beberapa server. Bukan hal yang mudah jika harus mengupdate nya satu per satu.
Langkah termudah dengan menggunakan tool atau software automation seperti
Ansible ini.
1.2. Rumusan Masalah
Berikut beberapa hal yang menjadi rumusan masalah dalam tugas akhir ini:
1. Bagaimana cara mengkonfigurasi server yang banyak dan sama dengan cepat.
2. Bagaimana cara bila ada patch baru maka semua server mendapatkan patch
tersebut
3. Bagaimana cara membuat server yang sama di beda tempat, atau server lain
1.3. Tujuan
Tugas akhir dibuat dengan beberapa tujuan. Berikut beberapa tujuan dari
pembuatan tugas akhir:
1. Hemat waktu dan lebih produktif
2. Hilangkan tugas yang berulang
3. Lebih sedikit kesalahan & kesalahan
4. Tingkatkan kolaborasi dan kepuasan kerja
2
BAB 2
LANDASAN TEORI
2.1. Ansible
Ansible adalah sebuah perangkat lunak komputer atau software yang dapat
membantu seorang devops atau sistem administrator untuk melakukan otomasi di
servernya. Ansible dapat membantu melakukan instalasi, deployment, bahkan
mengupdate server. Ansible dapat juga terkoneksi dengan server semacam LDAP
dan Kerberos kemudian mengatur segala hal yang ada di dalamnya. Lalu
bagaimana ansible bekerja? Ansible pada umumnya bekerja seperti tools lain ,
semacam Chef, Puppet, hanya saja Ansible tidak membutuhkan agent. Ansible
hanya bekerja cukup dengan koneksi SSH.
Ansible bekerja di koneksi SSH remote ke client yang ingin di deploy atau
dilakukan otomasi tersebut. Ansible juga membutuhkan data inventory atau data
server tujuan. Pada pemakaian lebih ke tingkat berikutnya, ansible juga dapat
memainkan peranan seperti playbook dan roles. Konfigurasi ditulis dalam format
markup YAML dan environment variable dapat ditulis pada format JSON. Mengapa
YAML, mungkin karena markup YAML sangat mudah dibaca oleh manusia.
Sehingga ansible dapat menjadi sebuah dokumentasi tersendiri nantinya. (Infra as a
code).
2.2. Apache2
Server HTTP Apache atau Server Web/WWW Apache adalah server web yang
dapat dijalankan di banyak sistem operasi (Unix, BSD, Linux, Microsoft
Windows dan Novell Netware serta platform lainnya) yang berguna untuk melayani
dan memfungsikan situs web. Protokol yang digunakan untuk melayani fasilitas
web/www ini menggunakan HTTP.
2.3. Bind9
BIND9 atau Berkeley Internet Name Domain Versi 9 adalah salah satu software
yang biasa digunakan untuk membuat, membangun dan mengatur sebuah DNS
(Domain Name Server) pada sistem operasi Linux.
2.4. Iptables
Iptables adalah suatu tools dalam sistem operasi linux yang berfungsi sebagai
alat untuk melakukan filter (penyaringan) terhadap (trafic) lalulintas data. Secara
sederhana digambarkan sebagai pengatur lalulintas data. Dengan iptables inilah kita
akan mengatur semua lalulintas dalam komputer kita, baik yang masuk ke komputer,
keluar dari komputer, ataupun traffic yang sekedar melewati komputer kita.
2.5. HAProxy
HAProxy adalah sebuah aplikasi opensource berbasis Linux yang biasa
digunakan sebagai load balancing trafic jaringan. Load balancing adalah teknik
untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara
seimbang agar trafik dapat berjalan optimal, memaksimalkan throughput,
memperkecil waktu tanggap dan menghindari overload pada salah satu jalur
3
koneksi. Teknik balancing dapat menggunakan beberapa cara yang berbeda,
tergantung kekompleksan yang ada.
2.6. Proftpd
ProFTPd adalah sebuah aplikasi yang di gunakan untuk melakukan transfer data
atau yang lebih dikenal dengan FTP(file transfer protokol).
Dengan menggunakan proftpd kita dapat membuat sebuah server FTP dimana
nantinya kita bisa membuat sebuah server yang bisa memberikan fasilitas upload
dan download dari server tersebut. ProFTPd juga mudah untuk di konfigurasikan.
2.7. Rsync
rsync adalah adalah sebuah program kecil yang berfungsi hampir sama dengan
scp, namun memiliki fitur tambahan yang lebih banyak dan menggunakan protokol
rsync remote update untuk mempercepat transfer file bila file tujuan sudah ada.
4
BAB 3
PERANCANGAN
3.1. Topology
3.2. Instalasi
# sudo apt-get update
# sudo apt-get install software-properties-common
# sudo apt-add-repository ppa:ansible/ansible
# sudo apt-get update
# sudo apt-get install ansible
3.3. Konfigurasi
Karena berkomunikasi menggunakan protokol SSH dan tanpa password maka
kita harus masukkan ssh id ke server ansible
# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.1
# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.10
# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.20
# ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.30
5
Kemudian masukkan ip hosts server ke /etc/ansible/hosts
# nano /etc/ansible/hosts
[router]
10.1.1.1 ansible_ssh_pass=Skill39 ansible_ssh_user=root
[internal]
10.1.1.10 ansible_ssh_pass=Skill39 ansible_ssh_user=root
[web]
10.1.1.20 ansible_ssh_pass=Skill39 ansible_ssh_user=root
10.1.1.30 ansible_ssh_pass=Skill39 ansible_ssh_user=root
[ftp]
10.1.1.20 ansible_ssh_pass=Skill39 ansible_ssh_user=root
Membuat alur direktori dan file seperti dibawah ini
- /etc/ansible
- ansible.cfg
- apache2.yml
- bind9.yml
- build.sh
- haproxy.yml
- iptables.yml
- proftpd.yml
- rsync.yml
- roles
- apache2
- handlers
- main.yml
- tasks
- main.yml
- templates
- main.yml
- bind9
- handlers
- main.yml
- tasks
- main.yml
- templates
- main.yml
- haproxy
- handlers
- main.yml
- tasks
- main.yml
- templates
- main.yml
- iptables
6
- handlers
- main.yml
- tasks
- main.yml
- templates
- main.yml
- proftpd
- handlers
- main.yml
- tasks
- main.yml
- rsync
- handlers
- main.yml
- tasks
- main.yml
- build.sh
# nano /etc/ansible/build.sh
ansible-playbook bind9.yml
ansible-playbook apache2.yml
ansible-playbook haproxy.yml
ansible-playbook proftpd.yml
ansible-playbook rsync.yml
ansible-playbook iptables.yml
- apache2
# nano /etc/ansible/apache.yml
---
- hosts: web
vars:
domain: www.smkn4bdg.sch.id
roles:
- role: roles/apache2
# nano /etc/ansible/roles/apache2/handlers/main.yml
---
- name: restart apache2
service:
name: apache2
state: restarted
# nano /etc/ansible/roles/apache2/tasks/main.yml
---
- name: Install apache2
apt: name=apache2 update_cache=yes state=latest
- name: Install php5
7
apt: name=php5 update_cache=yes state=latest
- name: create virtualhost
template:
src: virtualhost.conf
dest: /etc/apache2/sites-available/{{ domain }}.conf
owner: root
group: root
mode: 0644
notify: restart apache2
- name: directory
lineinfile:
dest: /etc/apache2/apache2.conf
regexp: "^<Directory /var/www/>"
line: "<Directory /home/www/>"
- name: create directory
file:
path: /home/www/{{ domain }}
owner: www
group: root
state: directory
- name: create index.php
template:
src: index.php
dest: /home/www/{{ domain }}/index.php
- name: a2ensite {{ domain }}
command: a2ensite {{ domain }}
args:
creates: /etc/apache2/sites-enabled/{{ domain }}.conf
notify: restart apache2
# nano /etc/ansible/roles/apache2/templates/index.php
<?php
echo "Welcome to the {{ domain }} ";
echo gethostname();
echo "n";
?>
# nano /etc/ansible/roles/apache2/templates/virtualhost.conf
<VirtualHost *:80>
ServerName {{ domain }}
DocumentRoot /home/www/{{ domain }}
</VirtualHost>
#<VirtualHost *:443>
# ServerName {{ domain }}
# DocumentRoot /var/www/{{ domain }}
8
# SSLEngine on
# SSLCertificateFile /cert/server.pem
# SSLCertificateKeyFile /cert/server.pem
#</VirtualHost>
- bind9
# nano /etc/ansible/bind9.yml
---
- hosts: internal
vars:
ip: 10.1.1.10
domain: smkn4bdg.sch.id
roles:
- role: roles/bind9
# nano /etc/ansible/roles/bind9/handlers/main.yml
---
- name: restart bind9
service:
name: bind9
state: restarted
# nano /etc/ansible/roles/bind9/tasks/main.yml
---
- name: Install bind9
apt: name=bind9 update_cache=yes state=latest
- name: membuat zone
template:
src: zona.local
dest: /etc/bind/named.conf.local
- name: membuat reverse
template:
src: db.forward
dest: /etc/bind/db.{{ domain }}
- name: membuat forward
template:
src: db.reverse
dest: /etc/bind/db.{{ ip }}
notify: restart bind9
9
# nano /etc/ansible/roles/bind9/templates/db.forward
$TTL 604800
@ IN SOA {{ domain }}. root.{{ domain }}. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS {{ domain }}.
@ IN A {{ ip }}
www IN A 10.1.1.1
ftp IN A 10.1.1.20
# nano /etc/ansible/roles/bind9/templates/db.reverse
$TTL 604800
@ IN SOA {{ domain }}. root.{{ domain }}. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS {{ domain }}.
1 IN PTR srv-1.{{ domain }}.
10 IN PTR srv-2.{{ domain }}.
20 IN PTR srv-3.{{ domain }}.
30 IN PTR srv-4.{{ domain }}.
# nano /etc/ansible/roles/bind9/templates/zona.local
zone "{{ domain }}" {
type master;
file "/etc/bind/db.{{ domain }}";
};
zone "1.1.10.in-addr.arpa" {
type master;
file "/etc/bind/db.{{ ip }}";
};
- haproxy
# nano /etc/ansible/haproxy.yml
---
- hosts: router
roles:
- role: roles/haproxy
10
# nano /etc/ansible/roles/haproxy/handlers/main.yml
---
- name: restart haproxy
service:
name: haproxy
state: restarted
# nano /etc/ansible/roles/haproxy/tasks/main.yml
---
- name: Install haproxy
apt: name=haproxy update_cache=yes state=latest
- name: load balancing
template:
src: haproxy.cfg
dest: /etc/haproxy/haproxy.cfg
notify: restart haproxy
# nano /etc/ansible/roles/haproxy/templates/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL).
ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-
SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
11
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend load
bind *:80
default_backend web
backend web
server s1 10.1.1.20:80 check
server s2 10.1.1.30:80 check
- iptables
# nano /etc/ansible/iptables.yml
---
- hosts: router
roles:
- role: roles/iptables
# nano /etc/ansible/roles/iptables/handlers/main.yml
---
- name: restart iptables-pesistent
service: name=iptables-persistent state=restarted
# nano /etc/ansible/roles/iptables/tasks/main.yml
---
- name: install iptables-persistant
apt: name=iptables-persistent update_cache=yes state=latest
- name: iptables
template:
src: iptables.sh
dest: /etc/iptables/rules.v4
- name: restart server
command: /sbin/reboot
# nano /etc/ansible/roles/iptables/tasks/main.yml
# Generated by iptables-save v1.4.21 on Thu Mar 8 07:12:59 2018
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [200:12000]
:POSTROUTING ACCEPT [200:12000]
-A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 10.1.1.10
-A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 10.1.1.10
-A POSTROUTING -p udp -m udp --dport 53 -j MASQUERADE
-A POSTROUTING -p tcp -m tcp --dport 53 -j MASQUERADE
COMMIT
# Completed on Thu Mar 8 07:12:59 2018
12
# Generated by iptables-save v1.4.21 on Thu Mar 8 07:12:59 2018
*filter
:INPUT DROP [2:130]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m udp --dport 53 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 53 -j ACCEPT
-A FORWARD -p tcp -m tcp --dport 22 -j ACCEPT
-A FORWARD -d 10.1.1.20/32 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Thu Mar 8 07:12:59 2018
- proftpd
# nano /etc/ansible/proftpd.yml
---
- hosts: ftp
roles:
- role: roles/proftpd
# nano /etc/ansible/roles/proftpd/handlers/main.yml
---
- name: restart proftpd
service:
name: proftpd
state: restarted
# nano /etc/ansible/proftpd/tasks/main.yml
---
- name: Install proftpd
apt: name=proftpd update_cache=yes state=latest
- name: default root
lineinfile:
dest: /etc/proftpd/proftpd.conf
regexp: "^# DefaultRoot ~"
line: "DefaultRoot ~"
state: present
notify: restart proftpd
13
- rsync
# nano /etc/ansible/rsync.yml
---
- hosts: web
roles:
- role: roles/rsync
# nano /etc/ansible/roles/rsync/handlers/main.yml
---
- name: restart rsync
service:
name: rsync
state: restarted
# nano /etc/ansible/roles/rsync/handlers/main.yml
---
- name: install rync
apt: name=rsync update_cache=yes state=latest
- name: sinkron file
lineinfile:
dest: /etc/crontab
line: "* * * * * root rsync -avz /home/www/ 10.1.1.30:/home/www/"
notify: restart rsync
14
BAB 4
IMPLEMENTASI
Automation Ansible ini sangat cocok di implementasikan bagi sysadmin yang
ingin membuat server yang sama di beda tempat. Untuk contohnya membuat server
di SMKN 4 Bandung dan di SMKN 3 Bandung yang sama persis. Sysadmin hanya
menjalankan script build.sh maka server tersebut akan sama persis, ini sangat
membantu sysadmin dalam menghemat waktu, dan bila ada kesalahan sysadmin
hanya memperbaikinya di satu server saja, dan untuk server yang lain hanya tingal
menjalankan script buld.sh kembali. Hal ini sangat bermanfaat dalam membuat ujian
berbasis komputer dan sysadmin hanya mempersiapkan satu buah komputer saja.
Untuk keamanan semua jalur yang keluar masuk ke server sudah dibatasi
oleh iptables, jadi hanya service-service tertentu yang diijinkan, dan dnsnya
dialihkan ke gateway tidak langsung ke server dns, itu untuk mencegah serangan
yang tidak diinginkan.
Sedangkan untuk webnya sudah dibuat load balancer menggunakan haproxy
untuk mencegah overload pada server web, maka tugasnya dibagi dua agar tidak
down, kedua server web itu saling berhubungan menggunakan rsync untuk
mengsinkronkan file script web di kedua server. Sedangkan jika ingin mengupload
file script web bisa menggunakan via ftp.
- Gambar
Gambar 3.1. Test ping ansible ke semua server
15
Gambar 3.2. Menjalankan script build.sh
Gambar 3.3. Cek webserver load balancer srv3
Gambar 3.4. Cek webserver load balancer srv4
16
Gambar 3.5. FTP berhasil mengirim file ke server
17
BAB 5
KESIMPULAN
Dengan adanya teknologi automation ansible diaharapkan para sysadmin
dapat mengautomation servernya, agar mempermudah kerjanya serta menghemat
waktu pada saat membuat server yang banyak dan sama, dan mengurangi proses
yang berulang. Semoga teknologi automation ansible ini terus berkembang dan
dapat di implementasikan di server-server sekolah dalam hal membuat system ujian
berbasis komputer karena dapat mempermudah pengolahan nilai secara cepat dan
menghemat kertas

More Related Content

What's hot

How To Install and Configure Log Rotation on RHEL 7 or CentOS 7
How To Install and Configure Log Rotation on RHEL 7 or CentOS 7How To Install and Configure Log Rotation on RHEL 7 or CentOS 7
How To Install and Configure Log Rotation on RHEL 7 or CentOS 7VCP Muthukrishna
 
Java ppt
Java pptJava ppt
Java ppt044249
 
Job Automation using Linux
Job Automation using LinuxJob Automation using Linux
Job Automation using LinuxJishnu Pradeep
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구Jae Sung Park
 
Mengevaluasi vlan pada jaringan
Mengevaluasi vlan pada jaringanMengevaluasi vlan pada jaringan
Mengevaluasi vlan pada jaringanPengin Pintar
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례Taehyun Kim
 
Rpl 011 - arsitektur sistem terdistribusi
Rpl   011 - arsitektur sistem terdistribusiRpl   011 - arsitektur sistem terdistribusi
Rpl 011 - arsitektur sistem terdistribusiFebriyani Syafri
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용NAVER D2
 
Laporan Praktikum TI Semester 1: Microsoft Word dan Excel
Laporan Praktikum TI Semester 1: Microsoft Word dan ExcelLaporan Praktikum TI Semester 1: Microsoft Word dan Excel
Laporan Praktikum TI Semester 1: Microsoft Word dan ExcelLaras Kun Rahmanti Putri
 
Tutorial membuat form login dengan php mvc dan my sql
Tutorial membuat form login dengan php mvc dan my sqlTutorial membuat form login dengan php mvc dan my sql
Tutorial membuat form login dengan php mvc dan my sqlAjiDwiKusman
 
Materi dreamwever-cs3
Materi dreamwever-cs3Materi dreamwever-cs3
Materi dreamwever-cs3azman_awan9
 
유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0sprdd
 
Perkembangan sistem operasi windows
Perkembangan sistem operasi windowsPerkembangan sistem operasi windows
Perkembangan sistem operasi windowsMiranti Dwi Kurnia
 
Ppt dns server
Ppt dns serverPpt dns server
Ppt dns serverMAFauzan
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지Changje Jeong
 

What's hot (20)

vlan
vlanvlan
vlan
 
How To Install and Configure Log Rotation on RHEL 7 or CentOS 7
How To Install and Configure Log Rotation on RHEL 7 or CentOS 7How To Install and Configure Log Rotation on RHEL 7 or CentOS 7
How To Install and Configure Log Rotation on RHEL 7 or CentOS 7
 
Java ppt
Java pptJava ppt
Java ppt
 
Job Automation using Linux
Job Automation using LinuxJob Automation using Linux
Job Automation using Linux
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구우리가 몰랐던 크롬 개발자 도구
우리가 몰랐던 크롬 개발자 도구
 
Linux file system
Linux file systemLinux file system
Linux file system
 
Mengevaluasi vlan pada jaringan
Mengevaluasi vlan pada jaringanMengevaluasi vlan pada jaringan
Mengevaluasi vlan pada jaringan
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
Rpl 011 - arsitektur sistem terdistribusi
Rpl   011 - arsitektur sistem terdistribusiRpl   011 - arsitektur sistem terdistribusi
Rpl 011 - arsitektur sistem terdistribusi
 
[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용[1A7]Ansible의이해와활용
[1A7]Ansible의이해와활용
 
Laporan Praktikum TI Semester 1: Microsoft Word dan Excel
Laporan Praktikum TI Semester 1: Microsoft Word dan ExcelLaporan Praktikum TI Semester 1: Microsoft Word dan Excel
Laporan Praktikum TI Semester 1: Microsoft Word dan Excel
 
Tutorial membuat form login dengan php mvc dan my sql
Tutorial membuat form login dengan php mvc dan my sqlTutorial membuat form login dengan php mvc dan my sql
Tutorial membuat form login dengan php mvc dan my sql
 
Materi dreamwever-cs3
Materi dreamwever-cs3Materi dreamwever-cs3
Materi dreamwever-cs3
 
유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0유닉스 리눅스 마이그레이션_이호성_v1.0
유닉스 리눅스 마이그레이션_이호성_v1.0
 
Perkembangan sistem operasi windows
Perkembangan sistem operasi windowsPerkembangan sistem operasi windows
Perkembangan sistem operasi windows
 
Ppt dns server
Ppt dns serverPpt dns server
Ppt dns server
 
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
AWS를 활용하여 Daily Report 만들기 : 로그 수집부터 자동화된 분석까지
 

Similar to Tugas akhir automation ansible final

MEMBANGUN SERVER VIDEO STREAMING BERBASIS CLOUD DENGAN ViMP
MEMBANGUN SERVER VIDEO STREAMING BERBASIS  CLOUD DENGAN ViMPMEMBANGUN SERVER VIDEO STREAMING BERBASIS  CLOUD DENGAN ViMP
MEMBANGUN SERVER VIDEO STREAMING BERBASIS CLOUD DENGAN ViMPAhmad Saktia Yunus
 
Laporan praktikum modul 3
Laporan praktikum modul 3Laporan praktikum modul 3
Laporan praktikum modul 3Devandy Enda
 
Laporan Projek Tugas Akhir - Printer Server Debian
Laporan Projek Tugas Akhir - Printer Server DebianLaporan Projek Tugas Akhir - Printer Server Debian
Laporan Projek Tugas Akhir - Printer Server DebianRio Aditya
 
Tugas webserver SO II - 09 154
Tugas webserver SO II - 09 154Tugas webserver SO II - 09 154
Tugas webserver SO II - 09 154ridhyld
 
Tugas webserver
Tugas webserverTugas webserver
Tugas webservernifran12
 
Tugas rekweb 0316 arifmunandar 1312510124
Tugas rekweb 0316 arifmunandar 1312510124Tugas rekweb 0316 arifmunandar 1312510124
Tugas rekweb 0316 arifmunandar 1312510124arief munandar
 
Tugas Akhir Streaming Server
Tugas Akhir Streaming ServerTugas Akhir Streaming Server
Tugas Akhir Streaming Serverrizki maulana
 
Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832fahreza yozi
 
Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587nurul azmi
 
Tugas 4 rekayasa web
Tugas 4 rekayasa webTugas 4 rekayasa web
Tugas 4 rekayasa webrimaafauziaah
 
Perkembagan web server di linux [tugas 2 ; SO II]
Perkembagan web server di linux [tugas 2 ; SO II]Perkembagan web server di linux [tugas 2 ; SO II]
Perkembagan web server di linux [tugas 2 ; SO II]sh1do
 
Tugas 2 0317 (Individu)
Tugas 2  0317 (Individu)Tugas 2  0317 (Individu)
Tugas 2 0317 (Individu)RiaWahyuni5
 
Laporan ta router dhcp server
Laporan ta router dhcp serverLaporan ta router dhcp server
Laporan ta router dhcp serverSuhestin Hezztun
 
Tugas-4 REKAYASA WEB
Tugas-4 REKAYASA WEBTugas-4 REKAYASA WEB
Tugas-4 REKAYASA WEBElisanendes
 
Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545imeldafelicia
 

Similar to Tugas akhir automation ansible final (20)

MEMBANGUN SERVER VIDEO STREAMING BERBASIS CLOUD DENGAN ViMP
MEMBANGUN SERVER VIDEO STREAMING BERBASIS  CLOUD DENGAN ViMPMEMBANGUN SERVER VIDEO STREAMING BERBASIS  CLOUD DENGAN ViMP
MEMBANGUN SERVER VIDEO STREAMING BERBASIS CLOUD DENGAN ViMP
 
Laporan praktikum modul 3
Laporan praktikum modul 3Laporan praktikum modul 3
Laporan praktikum modul 3
 
Proposal xmpp
Proposal xmppProposal xmpp
Proposal xmpp
 
Laporan Projek Tugas Akhir - Printer Server Debian
Laporan Projek Tugas Akhir - Printer Server DebianLaporan Projek Tugas Akhir - Printer Server Debian
Laporan Projek Tugas Akhir - Printer Server Debian
 
Tugas webserver SO II - 09 154
Tugas webserver SO II - 09 154Tugas webserver SO II - 09 154
Tugas webserver SO II - 09 154
 
Tugas webserver
Tugas webserverTugas webserver
Tugas webserver
 
PHP, MySQL, Apache
PHP, MySQL, ApachePHP, MySQL, Apache
PHP, MySQL, Apache
 
Tugas rekweb 0316 arifmunandar 1312510124
Tugas rekweb 0316 arifmunandar 1312510124Tugas rekweb 0316 arifmunandar 1312510124
Tugas rekweb 0316 arifmunandar 1312510124
 
Tugas Akhir Streaming Server
Tugas Akhir Streaming ServerTugas Akhir Streaming Server
Tugas Akhir Streaming Server
 
Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832Tugas 2 0317-fahreza yozi-1612510832
Tugas 2 0317-fahreza yozi-1612510832
 
Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587Tugas 2 0317-nurul azmi-1412510587
Tugas 2 0317-nurul azmi-1412510587
 
Tugas 4 rekayasa web
Tugas 4 rekayasa webTugas 4 rekayasa web
Tugas 4 rekayasa web
 
Perkembagan web server di linux [tugas 2 ; SO II]
Perkembagan web server di linux [tugas 2 ; SO II]Perkembagan web server di linux [tugas 2 ; SO II]
Perkembagan web server di linux [tugas 2 ; SO II]
 
Jawaban uts
Jawaban utsJawaban uts
Jawaban uts
 
Jawaban uts
Jawaban utsJawaban uts
Jawaban uts
 
Tugas 2 0317 (Individu)
Tugas 2  0317 (Individu)Tugas 2  0317 (Individu)
Tugas 2 0317 (Individu)
 
Laporan ta router dhcp server
Laporan ta router dhcp serverLaporan ta router dhcp server
Laporan ta router dhcp server
 
Tugas-4 REKAYASA WEB
Tugas-4 REKAYASA WEBTugas-4 REKAYASA WEB
Tugas-4 REKAYASA WEB
 
Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545Tugas 2 0317-imelda felicia-1412510545
Tugas 2 0317-imelda felicia-1412510545
 
Node.js
Node.jsNode.js
Node.js
 

Tugas akhir automation ansible final

  • 1. i Tugas Akhir AUTOMATION ANSIBLE Disusun oleh : Nama : Rakha Fauzi Maulana NIS : 1516116122 Kelas : Teknik Komputer Jaringan 1 Sekolah Menengah Kejuruan Negeri 4 Bandung 2017
  • 2. ii KATA PENGANTAR Puji syukur kita panjatkan kepada Allah SWT karena berkat Rahmat dan KaruniaNya-lah penulis dapat menyelesaikan penulisan tugas akhir ini tepat waktunya dengan Judul “Automation Ansible”. Tugas akhir ini disusun untuk memenuhi salah satu serangkaian ujian sekolah Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan. Sehingga dengan kerendahan hati, penulis mengharapkan kritik dan saran dari pembaca untuk perbaikan ke depannya. Bandung, 30 Maret 2018 Rakha Fauzi Maulana
  • 3. iii DAFTAR ISI KATA PENGANTAR....................................................................................................ii DAFTAR ISI ...............................................................................................................iii BAB 1......................................................................................................................... 1 PENDAHULUAN ........................................................................................................ 1 1.1. Latar Belakang ......................................................................................... 1 1.2. Rumusan Masalah ........................................................................................ 1 1.3. Tujuan........................................................................................................... 1 2.1. Ansible .......................................................................................................... 2 2.2. Apache2........................................................................................................ 2 2.3. Bind9............................................................................................................. 2 2.4. Iptables ......................................................................................................... 2 2.5. HAProxy........................................................................................................ 2 2.6. Proftpd .......................................................................................................... 3 2.7. Rsync............................................................................................................ 3 BAB 3......................................................................................................................... 4 PERANCANGAN........................................................................................................ 4 3.1. Topology ....................................................................................................... 4 3.2. Instalasi......................................................................................................... 4 3.3. Konfigurasi.................................................................................................... 4 BAB 4....................................................................................................................... 14 IMPLEMENTASI ...................................................................................................... 14 BAB 5....................................................................................................................... 17 KESIMPULAN .......................................................................................................... 17
  • 4. 1 BAB 1 PENDAHULUAN 1.1. Latar Belakang Setiap bisnis adalah bisnis digital. Teknologi adalah mesin inovasi Anda, dan mengirimkan aplikasi Anda dengan lebih cepat membantu Anda menang. Secara historis, itu membutuhkan banyak upaya manual dan koordinasi yang rumit. Tapi hari ini, ada Ansible - mesin otomatisasi TI yang sederhana namun canggih yang digunakan ribuan perusahaan untuk mendorong kerumitan keluar dari lingkungan mereka dan mempercepat inisiatif DevOps. Tidak ada yang menyukai tugas yang berulang. Dengan Ansible, admin TI dapat mulai mengotomatiskan pekerjaan membosankan dari tugas sehari-hari mereka. Otomatisasi membebaskan admin hingga fokus pada upaya yang membantu memberikan lebih banyak nilai bagi bisnis dengan mempercepat waktu untuk pengiriman aplikasi, dan membangun budaya kesuksesan. Akhirnya, Ansible memberi tim satu hal yang tidak pernah bisa mereka dapatkan: waktu. Memungkinkan orang pintar untuk fokus pada hal-hal cerdas. Pada era cloud seperti sekarang, sudah jadi hal umum jika satu orang atau server Administrator memegang lebih dari satu server. Tentu akan kesulitan jika sang administrator tidak mempunyai pengetahuan mengenai otomasi server. Untuk mengatasi hal itu maka terciptalah Ansible, jadi seorang DevOps Engineer tidak akan hanya berpikir cara instalasi, deployment namun juga cara memeliharanya. Bayangkan saja ketika ada patch baru pada sebuah software yang tertanam di beberapa server. Bukan hal yang mudah jika harus mengupdate nya satu per satu. Langkah termudah dengan menggunakan tool atau software automation seperti Ansible ini. 1.2. Rumusan Masalah Berikut beberapa hal yang menjadi rumusan masalah dalam tugas akhir ini: 1. Bagaimana cara mengkonfigurasi server yang banyak dan sama dengan cepat. 2. Bagaimana cara bila ada patch baru maka semua server mendapatkan patch tersebut 3. Bagaimana cara membuat server yang sama di beda tempat, atau server lain 1.3. Tujuan Tugas akhir dibuat dengan beberapa tujuan. Berikut beberapa tujuan dari pembuatan tugas akhir: 1. Hemat waktu dan lebih produktif 2. Hilangkan tugas yang berulang 3. Lebih sedikit kesalahan & kesalahan 4. Tingkatkan kolaborasi dan kepuasan kerja
  • 5. 2 BAB 2 LANDASAN TEORI 2.1. Ansible Ansible adalah sebuah perangkat lunak komputer atau software yang dapat membantu seorang devops atau sistem administrator untuk melakukan otomasi di servernya. Ansible dapat membantu melakukan instalasi, deployment, bahkan mengupdate server. Ansible dapat juga terkoneksi dengan server semacam LDAP dan Kerberos kemudian mengatur segala hal yang ada di dalamnya. Lalu bagaimana ansible bekerja? Ansible pada umumnya bekerja seperti tools lain , semacam Chef, Puppet, hanya saja Ansible tidak membutuhkan agent. Ansible hanya bekerja cukup dengan koneksi SSH. Ansible bekerja di koneksi SSH remote ke client yang ingin di deploy atau dilakukan otomasi tersebut. Ansible juga membutuhkan data inventory atau data server tujuan. Pada pemakaian lebih ke tingkat berikutnya, ansible juga dapat memainkan peranan seperti playbook dan roles. Konfigurasi ditulis dalam format markup YAML dan environment variable dapat ditulis pada format JSON. Mengapa YAML, mungkin karena markup YAML sangat mudah dibaca oleh manusia. Sehingga ansible dapat menjadi sebuah dokumentasi tersendiri nantinya. (Infra as a code). 2.2. Apache2 Server HTTP Apache atau Server Web/WWW Apache adalah server web yang dapat dijalankan di banyak sistem operasi (Unix, BSD, Linux, Microsoft Windows dan Novell Netware serta platform lainnya) yang berguna untuk melayani dan memfungsikan situs web. Protokol yang digunakan untuk melayani fasilitas web/www ini menggunakan HTTP. 2.3. Bind9 BIND9 atau Berkeley Internet Name Domain Versi 9 adalah salah satu software yang biasa digunakan untuk membuat, membangun dan mengatur sebuah DNS (Domain Name Server) pada sistem operasi Linux. 2.4. Iptables Iptables adalah suatu tools dalam sistem operasi linux yang berfungsi sebagai alat untuk melakukan filter (penyaringan) terhadap (trafic) lalulintas data. Secara sederhana digambarkan sebagai pengatur lalulintas data. Dengan iptables inilah kita akan mengatur semua lalulintas dalam komputer kita, baik yang masuk ke komputer, keluar dari komputer, ataupun traffic yang sekedar melewati komputer kita. 2.5. HAProxy HAProxy adalah sebuah aplikasi opensource berbasis Linux yang biasa digunakan sebagai load balancing trafic jaringan. Load balancing adalah teknik untuk mendistribusikan beban trafik pada dua atau lebih jalur koneksi secara seimbang agar trafik dapat berjalan optimal, memaksimalkan throughput, memperkecil waktu tanggap dan menghindari overload pada salah satu jalur
  • 6. 3 koneksi. Teknik balancing dapat menggunakan beberapa cara yang berbeda, tergantung kekompleksan yang ada. 2.6. Proftpd ProFTPd adalah sebuah aplikasi yang di gunakan untuk melakukan transfer data atau yang lebih dikenal dengan FTP(file transfer protokol). Dengan menggunakan proftpd kita dapat membuat sebuah server FTP dimana nantinya kita bisa membuat sebuah server yang bisa memberikan fasilitas upload dan download dari server tersebut. ProFTPd juga mudah untuk di konfigurasikan. 2.7. Rsync rsync adalah adalah sebuah program kecil yang berfungsi hampir sama dengan scp, namun memiliki fitur tambahan yang lebih banyak dan menggunakan protokol rsync remote update untuk mempercepat transfer file bila file tujuan sudah ada.
  • 7. 4 BAB 3 PERANCANGAN 3.1. Topology 3.2. Instalasi # sudo apt-get update # sudo apt-get install software-properties-common # sudo apt-add-repository ppa:ansible/ansible # sudo apt-get update # sudo apt-get install ansible 3.3. Konfigurasi Karena berkomunikasi menggunakan protokol SSH dan tanpa password maka kita harus masukkan ssh id ke server ansible # ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.1 # ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.10 # ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.20 # ssh-copy-id -i /root/.ssh/id_rsa.pub 10.1.1.30
  • 8. 5 Kemudian masukkan ip hosts server ke /etc/ansible/hosts # nano /etc/ansible/hosts [router] 10.1.1.1 ansible_ssh_pass=Skill39 ansible_ssh_user=root [internal] 10.1.1.10 ansible_ssh_pass=Skill39 ansible_ssh_user=root [web] 10.1.1.20 ansible_ssh_pass=Skill39 ansible_ssh_user=root 10.1.1.30 ansible_ssh_pass=Skill39 ansible_ssh_user=root [ftp] 10.1.1.20 ansible_ssh_pass=Skill39 ansible_ssh_user=root Membuat alur direktori dan file seperti dibawah ini - /etc/ansible - ansible.cfg - apache2.yml - bind9.yml - build.sh - haproxy.yml - iptables.yml - proftpd.yml - rsync.yml - roles - apache2 - handlers - main.yml - tasks - main.yml - templates - main.yml - bind9 - handlers - main.yml - tasks - main.yml - templates - main.yml - haproxy - handlers - main.yml - tasks - main.yml - templates - main.yml - iptables
  • 9. 6 - handlers - main.yml - tasks - main.yml - templates - main.yml - proftpd - handlers - main.yml - tasks - main.yml - rsync - handlers - main.yml - tasks - main.yml - build.sh # nano /etc/ansible/build.sh ansible-playbook bind9.yml ansible-playbook apache2.yml ansible-playbook haproxy.yml ansible-playbook proftpd.yml ansible-playbook rsync.yml ansible-playbook iptables.yml - apache2 # nano /etc/ansible/apache.yml --- - hosts: web vars: domain: www.smkn4bdg.sch.id roles: - role: roles/apache2 # nano /etc/ansible/roles/apache2/handlers/main.yml --- - name: restart apache2 service: name: apache2 state: restarted # nano /etc/ansible/roles/apache2/tasks/main.yml --- - name: Install apache2 apt: name=apache2 update_cache=yes state=latest - name: Install php5
  • 10. 7 apt: name=php5 update_cache=yes state=latest - name: create virtualhost template: src: virtualhost.conf dest: /etc/apache2/sites-available/{{ domain }}.conf owner: root group: root mode: 0644 notify: restart apache2 - name: directory lineinfile: dest: /etc/apache2/apache2.conf regexp: "^<Directory /var/www/>" line: "<Directory /home/www/>" - name: create directory file: path: /home/www/{{ domain }} owner: www group: root state: directory - name: create index.php template: src: index.php dest: /home/www/{{ domain }}/index.php - name: a2ensite {{ domain }} command: a2ensite {{ domain }} args: creates: /etc/apache2/sites-enabled/{{ domain }}.conf notify: restart apache2 # nano /etc/ansible/roles/apache2/templates/index.php <?php echo "Welcome to the {{ domain }} "; echo gethostname(); echo "n"; ?> # nano /etc/ansible/roles/apache2/templates/virtualhost.conf <VirtualHost *:80> ServerName {{ domain }} DocumentRoot /home/www/{{ domain }} </VirtualHost> #<VirtualHost *:443> # ServerName {{ domain }} # DocumentRoot /var/www/{{ domain }}
  • 11. 8 # SSLEngine on # SSLCertificateFile /cert/server.pem # SSLCertificateKeyFile /cert/server.pem #</VirtualHost> - bind9 # nano /etc/ansible/bind9.yml --- - hosts: internal vars: ip: 10.1.1.10 domain: smkn4bdg.sch.id roles: - role: roles/bind9 # nano /etc/ansible/roles/bind9/handlers/main.yml --- - name: restart bind9 service: name: bind9 state: restarted # nano /etc/ansible/roles/bind9/tasks/main.yml --- - name: Install bind9 apt: name=bind9 update_cache=yes state=latest - name: membuat zone template: src: zona.local dest: /etc/bind/named.conf.local - name: membuat reverse template: src: db.forward dest: /etc/bind/db.{{ domain }} - name: membuat forward template: src: db.reverse dest: /etc/bind/db.{{ ip }} notify: restart bind9
  • 12. 9 # nano /etc/ansible/roles/bind9/templates/db.forward $TTL 604800 @ IN SOA {{ domain }}. root.{{ domain }}. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS {{ domain }}. @ IN A {{ ip }} www IN A 10.1.1.1 ftp IN A 10.1.1.20 # nano /etc/ansible/roles/bind9/templates/db.reverse $TTL 604800 @ IN SOA {{ domain }}. root.{{ domain }}. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS {{ domain }}. 1 IN PTR srv-1.{{ domain }}. 10 IN PTR srv-2.{{ domain }}. 20 IN PTR srv-3.{{ domain }}. 30 IN PTR srv-4.{{ domain }}. # nano /etc/ansible/roles/bind9/templates/zona.local zone "{{ domain }}" { type master; file "/etc/bind/db.{{ domain }}"; }; zone "1.1.10.in-addr.arpa" { type master; file "/etc/bind/db.{{ ip }}"; }; - haproxy # nano /etc/ansible/haproxy.yml --- - hosts: router roles: - role: roles/haproxy
  • 13. 10 # nano /etc/ansible/roles/haproxy/handlers/main.yml --- - name: restart haproxy service: name: haproxy state: restarted # nano /etc/ansible/roles/haproxy/tasks/main.yml --- - name: Install haproxy apt: name=haproxy update_cache=yes state=latest - name: load balancing template: src: haproxy.cfg dest: /etc/haproxy/haproxy.cfg notify: restart haproxy # nano /etc/ansible/roles/haproxy/templates/haproxy.cfg global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon # Default SSL material locations ca-base /etc/ssl/certs crt-base /etc/ssl/private # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4- SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400.http errorfile 403 /etc/haproxy/errors/403.http errorfile 408 /etc/haproxy/errors/408.http errorfile 500 /etc/haproxy/errors/500.http
  • 14. 11 errorfile 502 /etc/haproxy/errors/502.http errorfile 503 /etc/haproxy/errors/503.http errorfile 504 /etc/haproxy/errors/504.http frontend load bind *:80 default_backend web backend web server s1 10.1.1.20:80 check server s2 10.1.1.30:80 check - iptables # nano /etc/ansible/iptables.yml --- - hosts: router roles: - role: roles/iptables # nano /etc/ansible/roles/iptables/handlers/main.yml --- - name: restart iptables-pesistent service: name=iptables-persistent state=restarted # nano /etc/ansible/roles/iptables/tasks/main.yml --- - name: install iptables-persistant apt: name=iptables-persistent update_cache=yes state=latest - name: iptables template: src: iptables.sh dest: /etc/iptables/rules.v4 - name: restart server command: /sbin/reboot # nano /etc/ansible/roles/iptables/tasks/main.yml # Generated by iptables-save v1.4.21 on Thu Mar 8 07:12:59 2018 *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [200:12000] :POSTROUTING ACCEPT [200:12000] -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 10.1.1.10 -A PREROUTING -p tcp -m tcp --dport 53 -j DNAT --to-destination 10.1.1.10 -A POSTROUTING -p udp -m udp --dport 53 -j MASQUERADE -A POSTROUTING -p tcp -m tcp --dport 53 -j MASQUERADE COMMIT # Completed on Thu Mar 8 07:12:59 2018
  • 15. 12 # Generated by iptables-save v1.4.21 on Thu Mar 8 07:12:59 2018 *filter :INPUT DROP [2:130] :FORWARD DROP [0:0] :OUTPUT DROP [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -p udp -m udp --dport 53 -j ACCEPT -A FORWARD -p tcp -m tcp --dport 53 -j ACCEPT -A FORWARD -p tcp -m tcp --dport 22 -j ACCEPT -A FORWARD -d 10.1.1.20/32 -j ACCEPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT COMMIT # Completed on Thu Mar 8 07:12:59 2018 - proftpd # nano /etc/ansible/proftpd.yml --- - hosts: ftp roles: - role: roles/proftpd # nano /etc/ansible/roles/proftpd/handlers/main.yml --- - name: restart proftpd service: name: proftpd state: restarted # nano /etc/ansible/proftpd/tasks/main.yml --- - name: Install proftpd apt: name=proftpd update_cache=yes state=latest - name: default root lineinfile: dest: /etc/proftpd/proftpd.conf regexp: "^# DefaultRoot ~" line: "DefaultRoot ~" state: present notify: restart proftpd
  • 16. 13 - rsync # nano /etc/ansible/rsync.yml --- - hosts: web roles: - role: roles/rsync # nano /etc/ansible/roles/rsync/handlers/main.yml --- - name: restart rsync service: name: rsync state: restarted # nano /etc/ansible/roles/rsync/handlers/main.yml --- - name: install rync apt: name=rsync update_cache=yes state=latest - name: sinkron file lineinfile: dest: /etc/crontab line: "* * * * * root rsync -avz /home/www/ 10.1.1.30:/home/www/" notify: restart rsync
  • 17. 14 BAB 4 IMPLEMENTASI Automation Ansible ini sangat cocok di implementasikan bagi sysadmin yang ingin membuat server yang sama di beda tempat. Untuk contohnya membuat server di SMKN 4 Bandung dan di SMKN 3 Bandung yang sama persis. Sysadmin hanya menjalankan script build.sh maka server tersebut akan sama persis, ini sangat membantu sysadmin dalam menghemat waktu, dan bila ada kesalahan sysadmin hanya memperbaikinya di satu server saja, dan untuk server yang lain hanya tingal menjalankan script buld.sh kembali. Hal ini sangat bermanfaat dalam membuat ujian berbasis komputer dan sysadmin hanya mempersiapkan satu buah komputer saja. Untuk keamanan semua jalur yang keluar masuk ke server sudah dibatasi oleh iptables, jadi hanya service-service tertentu yang diijinkan, dan dnsnya dialihkan ke gateway tidak langsung ke server dns, itu untuk mencegah serangan yang tidak diinginkan. Sedangkan untuk webnya sudah dibuat load balancer menggunakan haproxy untuk mencegah overload pada server web, maka tugasnya dibagi dua agar tidak down, kedua server web itu saling berhubungan menggunakan rsync untuk mengsinkronkan file script web di kedua server. Sedangkan jika ingin mengupload file script web bisa menggunakan via ftp. - Gambar Gambar 3.1. Test ping ansible ke semua server
  • 18. 15 Gambar 3.2. Menjalankan script build.sh Gambar 3.3. Cek webserver load balancer srv3 Gambar 3.4. Cek webserver load balancer srv4
  • 19. 16 Gambar 3.5. FTP berhasil mengirim file ke server
  • 20. 17 BAB 5 KESIMPULAN Dengan adanya teknologi automation ansible diaharapkan para sysadmin dapat mengautomation servernya, agar mempermudah kerjanya serta menghemat waktu pada saat membuat server yang banyak dan sama, dan mengurangi proses yang berulang. Semoga teknologi automation ansible ini terus berkembang dan dapat di implementasikan di server-server sekolah dalam hal membuat system ujian berbasis komputer karena dapat mempermudah pengolahan nilai secara cepat dan menghemat kertas