Apa saja yang bisa dilakukan dengan ansible ? -- Bagaimana ansible bekerja ? -- Ansible arsitektur Latihan 1.1 -- install ansible -- Konfigurasi ansible host -- setup SSH Keys -- lakukan perintah ping sederhana Sesi bertanya
-- file .yml breakdown -- jalankan ansible-playbook Sesi bertanya Ansible Role -- Mengenal ansible role Latihan 1.3 -- Membuat Role Framework -- Jalankan role Sesi bertanya Penutup
perangkat lunak komputer atau software yang dapat membantu seorang devops atau sistem administrator untuk melakukan otomasi di servernya. -- Apa saja yang bisa dilakukan dengan ansible ? Ansible dapat membantu melakukan instalasi, deployment, bahkan mengupdate sistem server. -- 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.
2.7 # refreshing the repositories sudo apt update # its wise to keep the system up to date! # you can skip the following line if you not # want to update all your software sudo apt dist-upgrade # installing python 2.7 and pip for it sudo apt install python2.7 python-pip
bisa masukan ip atau domain dari server yang ingin kita remote. dan bisa kita kelompokan sesuai nama group. sudo nano /etc/ansible/hosts [semua] host1 ansible_ssh_host=192.168.50.22 host2 ansible_ssh_host=192.168.50.33 host3 ansible_ssh_host=192.168.50.44 [staging-doank] host4 ansible_ssh_host=192.168.50.22 [production-doank] host5 ansible_ssh_host=192.168.50.33 [live-doank] host6 ansible_ssh_host=192.168.50.44
ssh-keygen -t rsa Langkah kedua : Masukkan Passphrase Enter passphrase (empty for no passphrase): Enter same passphrase again: Sekarang kita punya dua file kunci atau key, yaitu : id_rsa , di mana ini adalah kunci pribadi atau private key id_rsa.pub , yang ini adalah kunci publik atau public key
server yang ingin di remote sudo vi /etc/ssh/sshd_config pada bagian PasswordAuthentication no rubah menjadi yes PasswordAuthentication yes kemudian save dan reload ssh sudo systemctl reload sshd.service
mesin target Kunci publik ini dapat kita pergunakan untuk mengakses server yang ingin kita remote. Kita harus menyalin isi id_rsa.pub ini ke authorized_keys mesin yang ingin kita remote. kita akan di minta masukan password berdasarkan setting kita sebelumnya di file sshd_config. password menyesuaikan dari password vm yang di gunakan. ssh-copy-id [email protected] ssh-copy-id [email protected] ssh-copy-id [email protected]
kita apakah sudah benar dengan melakukan ping ke server yang ingin kita remote. untuk perintah ping kita dapat lakukan berdasarkan nama group atau nama single server. ping group ansible -m ping semua ping nama server ansible -m ping host1:host2 jika benar hasilnya akan seperti ini host1 | SUCCESS >> { "changed": false, "ping": "pong" }
kita bisa setting ssh-agent sebagai berikut. eval `ssh-agent` kemudian add passphrase ssh-add /home/vagrant/.ssh/id_rsa klo sudah bisa mengulangi command ping, tapi kali ini tanpa meminta passphrase.
case ingin otomasi tiap -tiap server yang kita punya dengan setup server nginx. kemudian nanti kita juga akan mengupload file default web di nginx dengan suatu kondisi. sebelum mulai kita buat terlebih dahulu kita buat directory static_files pada directory .ansible/ mkdir static_files
directory .ansible/ kita buat terlebih dahulu directory playbook pada directory ansible. menjadi .ansible/playbook/ mkdir playbook kemudian buat file nginx.yml vi nginx.yml
src=/home/vagrant/.ansible/static_files/index.nginx-debia when: php is failed handlers: - name: start nginx service: name=nginx state=started note : kita belum mengkonfigurasi php pada server remote jadi walaupun kita upload belum tentu jalan atau dapat di proses. maka kita buat kondisi jika sukses atau gagal.
kita buat kita akan breakdown supaya tau fungsi - fungsi nya. # ini adalah fungsi awalan dari sebuah script yaml. --- # host adalah server yang kita remote, parameternya bisa all untuk se - host # tasks adalah list dari tugas tertentu yang diberikan ke server. - tasks # name adalah nama dari task yang diberikan. - name # become adalah state untuk memberikan kita hak akses sebagai root. become
# notify adalah refrensi untuk handler notify # copy adalah sama hal nya dengan apt yaitu ansible module untuk mela copy # register adalah state untuk pengkondisian dari suatu task register # ignore_errors adalah state untuk menyembunyikan/menampilkan notifik ignore_errors # command adalah sama hal dengan command bash di linux command # when adalah kondisi when # handlers sama dengan task tapi jalan berdasarkan kondisi task handlers # service mengacu pada service di os linux service
sudah kita buat. kita bisa menjalankan untuk semua server atau hanya server tertentu yang ingin kita setup. ke semua server ansible-playbook nginx.yml ke salah 1 server tertentu ansible-playbook -l host1 nginx.yml 2 atau lebih ansible-playbook -l host1:host2 nginx.yml
modular dari playbook. digunakan untuk pengorganisasian playbook sehingga lebih mudah dalam pemeliharaan fungsi - fungsi, jika bertambah banyak dan perlu pemisahan dari playbook untuk job yang berbeda.
src=index.nginx-debian.html dest=/usr/share/nginx/html/ m when: php is failed - name: Remove index.nginx-debian.html for host become: yes copy: src=index.nginx-debian.html dest=/usr/share/nginx/html/ m when: php is success
dari directory framework yang sudah kita buat dan berada di dalam directory ansible. dan isi nya sebagai berikut. --- - hosts: all roles: - role: nginx -- Jalankan role sekarang kita bisa jalankan role yang sudah kita buat ansible-playbook play.yml