Tagged: DevOps Toggle Comment Threads | Keyboard Shortcuts

  • Tuan Pembual 13:13 on 7 February 2017 Permalink | Reply
    Tags: DevOps, DSL, , , ,   

    DevOps; Jenkins, Pengantar Lain 

    logo-jenkins*Tulisan dibawah ini banyak nggamblehnya.

    Di era-era menuju implementasi DevOps, Jenkins bukanlah barang baru. Dan tidak diragukan lagi, Jenkins merupakan salah satu tools wajib dalam menunjang proses pengembangan perangkat lunak secara keseluruhan (Continuous Integration) dan memberdayakan tim untuk melaksanakan bagian teknis dari pengiriman berkelanjutan( Continuous Delivery).

    Dalam pekerjaannya, praktisi DevOps diharuskan mampu mengubah infrastuktur, konfigurasi dan alat-alat yang menunjang proses DevOps menjadi sebuah kode. Beberapa menyebutnya “Infrastructure as Code (IaC)”. Tujuannya adalah pengurangan biaya(Cost reduction), kecepatan eksukusi (Speed- Faster execution) dan pengurangan resiko( (Risk – remove errors and security violations).

    Ada banyak cara untuk melakukannya. Provisioning merupakan salah satunya. Toolsnya juga macam-macam. Saya terbiasa menggunakan shell scripting, chef dan ansible. Sudah itu aja pengantarnya. Abis ini saya ndongeng membuat jobs di Jenkins.

    Sebenarnya membuat jobs di Jenkins itu ndak susah-susah amat. Namun kebiasaannya, membuat jobs cukup dengan klik klik terus jadi. Ya jadi. Tapi bagaimana dengan prinsip  IaC diatas? Ya mbuh. Nek jenkinsnya modar, trs? Ya wasalam.

    Sebenarnya jobs dan konfigurasi di Jenkins bisa saja langsung disimpan, tapi formatnya adalah xml. Sedikit nganu.

    Salah satu solusinya adalah dengan menulis Jenkins Jobs dalam format *.groovy. Kumpulan *.groovy ini dikumpulkan dalam lumbung, yang akan diperbaharui otomatis. Adalah job-dsl yang bertugas mengubah format groovy menjadi jobs yang disimpan dalam bentuk xml.

    Kita mulai dari mana?

    1. Salin repo
      $ git clone https://github.com/tuanpembual/jenkins-jobs.git
      
    2. Install Jenkins. Cara paling mudah adalah menggunakan Vagrant. Vagrantfilenya bisa dicomot dari repo saya. Dalam Vagrantfile sudah ada box yg bisa dipilih. Saya menggunakan ubuntu 16.04. Kemudian jalankan instalasi jenkins via shell provisioning. Oh iya, sekalian direktori share foldernya dicek; sesuaikan dengan kondisi anda.
    3. Install plugin jobs-dsl (ini plugin awal kita bekerja). Dan install jg beberapa plugin lain yang dibutuhkan. Berikut beberapa plugin yang saya rasa perlu:
      • git
      • greenballs
      • build-pipeline-plugin
      • job-dsl
      • cloudbees-folder
      • swarm
      • slack
      • envinject
      • gradle
      • view-job-filters
      • postbuildscript
      • email-ext
      • plot
      • aws sdk
      • s3 plugin
    4. Konfigurasi root jenkins. Bagian yang perlu diperhatikan adalah bagian root:
      <workspaceDir>${ITEM_ROOTDIR}/workspace</workspaceDir>
      <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
      
    5. Buat jobs untuk menampung seed jobs. Isian untuk seed jobs kira-kira begini: (atau bisa nyomot file xml di repo tadi)
      Project Name: seed-jobs
      SCM: none
      Build Trigger: none
      Build: Process Jobs DSLs

      • DSL Script: jobs/*.groovy
      • Action for removed jobs: Disable
      • Action for removed views: Ignore
    6. Buat folder jobs di repo. Dengan vim, buatlah file baru semisal BelajarJenkins.groovy. Isinya kira-kira begini:
      ## jobs/BelajarJenkins.groovy
      String app = "BelajarJenkins"
      folder("${app}") {
        description "ini adalah description"
      }
      job("${app}/BuildGradle") {
        description "Coba build gradle"
        logRotator {
          daysToKeep(7)
          numToKeep(10)
        }
        triggers {
          scm('H/2 * * * *')
        }
        steps {
          gradle {
            tasks('clean test')
          }
        }
        publishers {
          mailer('mail@example.com', false, true)
        }
      }
      
    7. Lakukan perintah buid di seed jobs di Jenkins dengan menekan tombol build now. *semoga g ada error 😀
    8. Tadaaaa. Jobs pertama sudah jadi. Silahkan buat file *.groovy lainnya untuk membuat jobs lainnya ya.

    Jika akan digunakan untuk proses produksi, silahkan aktifkan scm menuju repo jenkins-jobs anda. Kemudian trigger scm dalam format cron (* * * * *). Artinya seed-jobs akan dibuild setiap menit jika terdapat perubahan pada repo. Efeknya adalah segala perubahan manual pada jenkins jobs lainnya akan ditimpa selalu. Dan untuk melakukan perubahan diharuskan mengubah langsung pada file *.groovy dan ajukan pull request ke repo.

    Sudah, itu saja. Berikut beberapa bacaan lain terkait jobs-dsl. Setelah ini saya akan menulis beberapa potongan kode yang biasa saya gunakan dalam membuat jobs.

    Bacaan:
    [0]. Getting Started:  https://github.com/jenkinsci/job-dsl-plugin/wiki/Tutorial—Using-the-Jenkins-Job-DSL
    [1]. API Viewer: https://jenkinsci.github.io/job-dsl-plugin/

    Selamat mencoba.

    Estu~

    Advertisements
     
    • amey 20:26 on 7 February 2017 Permalink | Reply

      mantab sharingnya senior Devops satu ini 🙂

  • Tuan Pembual 09:17 on 30 May 2016 Permalink | Reply
    Tags: , , DevOps, Kitchen, Test-Kitchen, Testing   

    Chef; Membuat Cookbook Sederhana dan Ujicoba Cookbook dengan Test-Kitchen 

    Chef Software Inc. company logo

    Melanjutkan tulisan sebelumnya.
    Prasyarat tool dan kawan-kawannya yang digunakan:

    1. ChefDK dan Ruby
    2. Text Editor
    3. Vagrant
    4. Internet kenceng
    5. Test-Kitchen

    Kali ini rencananya mau bikin cookbook nginx untuk lingkungan deb (debian, ubuntu, etc). Mari dimulai membuat cookbook dan ujicoba di lokal:

    1. Buat lingkungan kerja
      $ mkdir -p ~/chef-repo/cookbook && cd ~/chef-repo
    2. Generate cookbook kosong dengan perintah chef
      $ chef generate cookbook cookbooks/nginx
    3. Edit resep, tambahkan perintah untuk memasang paket nginx dan dependensinya
      $ vim cookbooks/nginx/recipes/default.rb
      #
      # Cookbook Name:: nginx
      # Recipe:: default
      #
      # Copyright (c) 2016 The Authors, All Rights Reserved.
      
      include_recipe "apt"
      
      # memasang nginx
      package 'nginx' do
        action :install
      end
      
      service 'nginx' do
        action [:enable, :start]
      end
      
      # mengubah conten index.html dgn isi lain
      template "/usr/share/nginx/html/index.html" do
      	source "nginx.erb"
      	mode "0644"
      end
      $ vim cookbooks/nginx/metadata.rb
      
      name 'nginx'
      maintainer 'The Authors'
      maintainer_email 'you@example.com'
      license 'all_rights'
      description 'Installs/Configures nginx'
      long_description 'Installs/Configures nginx'
      version '0.1.0'
      
      depends 'apt'
    4. Generate template halaman index.html
      $ chef generate template cookbooks/nginx nginx
      $ vim cookbooks/nginx/templates/default/nginx.erb
      nginx.erb
    5. Mari kita uji resepnya lewat kitchen
      $ cd cookbooks/nginx
      $ vim .kitchen.yml
      ---
      driver:
        name: vagrant
      
      provisioner:
        name: chef_zero
      
      platforms:
        - name: ubuntu/trusty64
      
      suites:
        - name: default
          run_list:
            - recipe[nginx::default]
          attributes:
      $ kitchen create
      $ kitchen converge
    6. Tambahkan unit testing dengan bantuan serverspec
      $ vim cookbooks/nginx/test/integration/default/serverspec/default_spec.rb
      require 'spec_helper'
      
      # Serverspec examples can be found at
      # http://serverspec.org/resource_types.html
      
      nginx_port = 80
      
      describe 'nginx' do
      
        describe package('nginx') do
        	it { should be_installed}
        end
      
        describe service('nginx') do
        	it { should be_running}
        end
      
        describe service('nginx') do
        	it { should be_enabled}
        end
      
        describe port(nginx_port) do
          it { should be_listening}
        end
      end
      
    7. Lakukan testing-kitchen
      $ kitchen verify
    8. Proses ini akan memakan waktu lama, tergantung internet. Jika tanpa error maka cookbook sudah benar. Selamat!
      Login ke mesin dan lakukan curl

      $ kitchen login
      $ curl localhost
    9. Hancurkan instansce kitchen setiap selesai testing.
      $ kitchen destroy

    Sekian, tulisan selanjutnya akan membahas knife bootstrap.

    *kode sumber cookbook ini dapat dilihat di akun github saya.

    Bacaan:

    [0] https://learn.chef.io/learn-the-basics/rhel/configure-a-package-and-service/
    [1] https://learn.chef.io/local-development/ubuntu/get-started-with-test-kitchen/
    [2] https://www.digitalocean.com/community/tutorials/how-to-create-simple-chef-cookbooks-to-manage-infrastructure-on-ubuntu

    Estu, yang lagi sibuk di dapur

     
  • Tuan Pembual 16:40 on 27 May 2016 Permalink | Reply
    Tags: , , DevOps, Provision,   

    Chef; Sebuah Pengenalan 

    Chef Software Inc. company logo

    Chef Software Inc. – Logo

    Chef adalah salah satu tools yang digunakan untuk otomatisasi oleh DevOps. Dalam penggunaannya, Chef ditulis dengan bahasa ruby. Terus, bagaimanakah gambaran chef bekerja?

    workstation-server-node

    Istilah-istilah umum:

    • Cookbook; Buku Resep, adalah sekumpulan perintah untuk memasang dan mengkonfigurasi sistem. Misal nginx cookbook, adalah resep untuk memasang nginx, dan lain-lain.
    • Workstation; Komputer yang kita gunakan untuk bekerja, bisa laptop maupun desktop dengan sistem operasi Linux/Mac OS/Windows.
    • Chef Server; adalah pusat lumbung yang menyimpan kumpulan cookbook (buku resep) dan informasi setiap node. Semisal chef server menyimpan data fqdn node dan sistem operasi yang terpasang.
    • Node; adalah komputer (server) yang dikelola oleh Chef Server. Setiap node telah terpasang chef-client. Node lah tempat kita menerapkan cookbook. Node bisa berbentuk fisik maupun mesin virtual.

    Begitulah kira-kira.. Langkah selanjutnya adalah memasang Chef Development Kit (ChefDK) sebelum memulai menulis resep; ditulisan selanjutnya.

    Bagi yang masih penasaran tentang Chef dan DevOps gabung aja di DevOps Meetup #1 Jogja, 4 Juni 2016.

    Dan dibawan ini daftar isi tulisan saya tentang Chef:

    1. Chef; Konfigurasi Workstation; Memasang Chef Development Kit (ChefDK)
    2. Chef; Membuat Cookbook Sederhana dan Ujicoba Cookbook dengan Test-Kitchen
    3. Chef; Mengenal Supermarket; Repository Cookbook ala Chef
    4. Chef; Mengatur Chef-Server
    5. Chef; Bootstrap Node Menggunakan Vagrant

    Estu, yang lagi masak-masak.

     
  • Tuan Pembual 16:53 on 25 May 2016 Permalink | Reply
    Tags: , , DevOps, , ,   

    DevOps Meetup #1 Jogja 

    DevOpsPoster

    Hae,

    Ndak mau ketinggalan dgn kota sebelah yang bawain materi DevOps Ansible, Jogja bikin juga dong. Yuk ikutan DevOps Meetup #1 Jogja!

    Apasih DevOps itu?

    Devops (Development Operations) adalah sebuah trend pada pengembangan perangkat lunak yang memungkinkan seluruh operasi Service Backend ter-maintain dan ter-manage lebih mudah dan cepat dengan menggunakan teknologi-teknologi terkini. Dewasa ini, kebutuhan akan DevOps team di perusahaan – perusahaan IT sangat tinggi, mengingat kompleksitas kebutuhan bisnis dan ketersediaan teknologi semakin tinggi. Targetnya sih dapat meningkatkan ketertarikan para penggiat IT di Indonesia untuk mendalami Bidang DevOps ini guna menunjang kebutuhan industri kreatif IT di Indonesia.

    Pemateri dan Topik

    Lutvi Rosyady (Head of Engineer GTV) – Pengenalan DevOps
    Robet Hutagalung (Freelance DevOps) – Continuous Integration
    Estu Fardani (Product Engineer GO-JEK) – Chef & Cookbook

    Kapan dan dimana?

    • Waktu   : Sabtu 4 Juni 2016
    • Tempat : GO-JEK Tech Valley
      Jl. Raya Tajem, RT 22 Wonokerso Gondang Legi, Wedomartani, Sleman, 55584

    Cara daftarnya?

    Cukup kirim surel ke: azka.addina@gmail.com (peserta terbatas) – Gratis!

    Estu, (yg lagi bikin buku resep)

     

     

     
c
Compose new post
j
Next post/Next comment
k
Previous post/Previous comment
r
Reply
e
Edit
o
Show/Hide comments
t
Go to top
l
Go to login
h
Show/Hide help
shift + esc
Cancel