Anda di halaman 1dari 38

Syah Dwi Prihatmoko

sdmoko@sdmoko.net
Apasih Ansible?
Apasih Ansible?

Platform otomatisasi

Bahasa otomatisasi yang dapat menggambarkan


infrastruktur aplikasi IT di Playbooks ansible

Mesin otomatisasi yang menjalankan Playbooks


Ansible
Ansible itu Sederhana


Otomatisasi yang mudah dibaca

Tidak memerlukan skill khusus untuk coding

Menjalankan tugas secara berurutan

Membuat kita lebih produktif
Ansible itu Mantap


Apllication Deployment

Configuration Management

Workflow Orchestration

Orchestrate the application lifecycle
Ansible itu Agentless


Agentless Architecture

Menggunakan OpenSSH & WinRM

Tidak ada agents untuk exploit atau update

Lebih efisien & lebih aman
Ansible itu Cross Platfrom

Agentless support for all major OS variants,


physical, virtual, cloud and network.
Memasang Ansible
# Cara yang paling umum dan disarankan
$ pip install ansible

# RHEL, CentOS, Oracle Linux or Scientific


Linux
$ sudo yum install ansible

# Ubuntu, Debian
$ sudo apt install ansible
Bagaimana Ansible bekerja
Modules

Apt/yum ●
Template

Copy ●
User

File ●
Mysql

Git ●
Uri

Ping ●
Assert

Service ●
Debug
Ad-Hoc Commands
AdHoc Commands
# Cek koneksi semua server yang siap dimanage
$ ansible all -m ping

# Menjalankan perintah uptime di host grup web


# dengan berkas inventory hosts.yml
$ ansible -i hosts.yml web -m command -a “uptime”

# Memeriksa dan menampilkan hasil pemeriksaan


# localhost
$ ansible localhost setup
AdHoc Commands
$ ansible localhost -m setup
localhost | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.77.77.1",
],
"ansible_all_ipv6_addresses": [
"fe80::800:27ff:fe00:0",
"fe80::b847:52bd:1f:1f49",

],
"ansible_architecture": "x86_64",
"ansible_bios_date": "12/01/2014",
Inventory

Merupakan koleksi dari hosts (nodes) yang akan


diatur oleh ansible.

Inventory biasanya berisi



Hosts

Groups

Inventory-spesific data

Statis atau dinamis
Static Inventory
[db]
192.168.100.1
192.168.100.10

[webservers]
alpha.example.org
beta.example.org
192.168.1.100
192.168.1.110

[all:vars]
ansible_user=vagrant
Pengenalan Playbooks & Demo
Variabel

Ansible dapat bekerja dengan metadata dari


berbagai sumber dan mengaturnya dalam konteks
form variabel.
Variabel

file: membuat atau menghapus direktori atau
berkas

yum: install/hapus paket

apt: install/hapus paket

service: mengatur status sebuah layanan

template: menyalin berkas dari template

git: menyalin kode sumber repositori
Contoh Tasks dalam Playbooks
tasks:
- name: update apt cache
apt: update_cache=yes cache_valid_time=3600

- name: install packages


apt: pkg=nginx state=latest

- name: restart nginx


action: service name=nginx state=restarted enabled=yes
Handlers Tasks

Handlers merupakan tasks spesial yang


dijalankan diakhir play jika “dicolek” oleh task
yang lain.

Jika berkas konfigurasi ada perubahan “colek”


task handler untuk menjalankan task.
Contoh Handlers dalam Playbooks
tasks:
- name: update apt cache
apt: update_cache=yes cache_valid_time=3600

- name: install packages


apt: pkg=nginx state=latest
notify: restart nginx

handlers:
- name: restart nginx
action: service name=nginx state=restarted enabled=yes
Plays & Playbooks

Plays merupakan urutan tasks untuk dieksekusi


terhadap pilihan host dari inventory.

Sebuah playbooks adalah berkas yang berisi satu


atau lebih plays.
Contoh Playbooks
- name: install and restarted nginx
hosts: webserver
remote_user: vagrant

tasks:
- name: update apt cache
apt: update_cache=yes cache_valid_time=3600

- name: install packages


apt: pkg=nginx state=latest
notify: restart nginx

handlers:
- name: restart nginx
action: service name=nginx state=restarted enabled=yes
Menjalankan Playbooks

$ ansible-playbook -i hosts.yml playbook.yml


Pengenalan Roles
Roles

Roles merupakan struktur direktori yang


digunakan memecah playbook agar mudah
digunakan dan dibagikan antar groups.
Struktur Roles
site.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
web/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
Playbooks dengan Roles

# site.yml
---
hosts: webservers
roles:
- common
- web
Membuat struktur Roles dengan Ansible-Galaxy
$ ansible-galaxy init namaroles1
$ ansible-galaxy init namaroles2
Memecah Playbooks menjadi Roles
Contoh Playbooks
- name: install and restarted nginx
hosts: webserver
remote_user: vagrant

tasks:
- name: update apt cache
apt: update_cache=yes cache_valid_time=3600

- name: install packages


apt: pkg=nginx state=latest
notify: restart nginx

handlers:
- name: restart nginx
action: service name=nginx state=restarted enabled=yes
Struktur Roles
site.yml
roles/
web/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
Tasks dalam Roles
# main.yml in tasks directory
---
- name: update apt cache
apt: update_cache=yes cache_valid_time=3600

- name: install packages


apt: pkg=nginx state=latest

- name: copy index.html


template: src=index.html.j2 dest={{nginx_docroot}}/index.html

- name: copy nginx conf


template: src=nginx.conf-{{ansible_os_family}}.j2 dest={{nginx_confroot}}/nginx.conf
notify: restart nginx
Handlers dalam Roles

### main.yml in handlers directory


---
handlers:
- name: restart nginx
action: service name=nginx state=restarted enabled=yes
Playbooks untuk menjalankan Roles

# site.yml di root directory playbooks & roles ansible


---
- name: install and restarted nginx
hosts: webserver
remote_user: vagrant

roles:
- web
Markiprek
Mari Kita Ngoprek

Anda mungkin juga menyukai