Chef; Bootstrap Node Menggunakan Vagrant

Chef Software Inc. company logo

Mari lanjut. Setelah Workstation dan Chef-Server sudah diatur. Mari kita coba.

  1. Siapkan vagrant sebagai node yang akan kita atur
    $ cd ~/chef-repo
    $ vim Vagrantfile
    Isinya kira-kira begini, sesuaikan saja.
    Vagrant.configure(2) do |config|
    config.vm.box = “ubuntu/trusty64″

    config.vm.define :node1 do |node1|
    node1.vm.host_name=”node1”
    node1.vm.network “public_network”, ip: “10.0.0.40”
    end
    end

  2. Jalankan vagrant
    $ vagrant up
  3. Upload cookbook yang sudah kita buat pada panduan sebelumnya termasuk dependesinya
    $ knife cookbook site download apt
    $ tar zxvf apt-3.0.0.tar.gz
    $ rm -rf apt-3.0.0.tar.gz && mv apt cookbooks/.
    $ knife cookbook upload apt
    $ knife cookbook upload nginx
  4. Lakukan list cookbook yg sudah diunggah
    $ knife cookbook list
  5. Lakukan test ssh ke mesin vagrant
    $ ssh vagrant@10.0.0.40
    Jika ditanya password, masukkan ‘vagrant’
  6. Jalankan knife bootstrap
    $ knife bootstrap 10.0.0.40 –ssh-user vagrant –ssh-password ‘vagrant’ –sudo –use-sudo-password –node-name node1 –run-list ‘recipe[nginx]’
  7. Lakukan testing dengan bantuan curl
    $ curl 10.0.0.40

Jreng-jreng, kelar!!

Bacaan:
https://learn.chef.io/manage-a-node/rhel/bootstrap-your-node/

Estu~ *yang lagi balik utik2 cookbook lagi..

Advertisements

Chef; Mengatur Chef-Server

Chef Software Inc. company logo*diterjemahkan dari halaman https://learn.chef.io/manage-a-node/ubuntu/set-up-your-chef-server/ dengan penyesuaian seperlunya.

0. Tentukan Mesin Chef Server.

Dalam pengenalaman chef sebelumnya, telah digambarkan bahwa dalam praktiknya kita membutuhkan chef server. Untuk mendapatkan chef server ada dua opsi:

  1. Buat mesin yang didedikasikan sebagai chef server, caranya bisa mengikuti panduan ini,
  2. Mengunakan chef server ujicoba gratis bawaan dari chef dengan mendaftar di https://manage.chef.io/signup/

Untuk pengenalan awal saya menyarankan menggunakan opsi kedua. Yuk daftar-daftar….

Setelah mendaftar, kita akan menerima email untuk konfirmasi akun. Klik link dalam email tersebut untuk memverifikasi akun dan password. Setelah itu, arahkan ke https://manage.chef.io/ dan masuk. Kemudian ikuti langkah-langkah untuk membuat sebuah organisasi.

  1. Klik Create New Organization. Masukkan nama lengkap dan nama pendek untuk organisasi, semisal nama projek.
  2. Klik Create Organization.

1. Atur Komunikasi Chef Server dengan Workstation.

Knife adalah alat baris perintah yang menyediakan antarmuka antara workstation dan server Chef. Knife memungkinkan untuk mengunggah cookbook ke server Chef dan mengelola node server.

Knife membutuhkan dua file untuk berkomunikasi dengan server Chef, kunci RSA pribadi (RSA private key) dan file konfigurasi. Setiap permintaan ke server Chef dikonfirmasi melalui proses pencocokan kunci RSA. Chef Server menyimpan kunci publik; dan kita menyimpan kunci private.

File konfigurasi biasanya bernama knife.rb. Ini berisi informasi seperti URL Chef server, lokasi dan nama kunci private, serta lokasi default cookbook. Kedua file ini biasanya terletak di direktori bernama .chef. Setiap kali knife dijalankan, knife akan mengecek folder .chef direktori kerja saat ini. Jika direktori .chef tidak ditemukan, knife akan mencari di lokasi induk atau home direktori. Proses ini mirip dengan bagaimana Git bekerja.

  • Buat direktori ~/chef-repo/.chef sebagai berikut
    $ mkdir ~/chef-repo/.chef
  • Buat konfigurasi knife yang diunduh dari web manage.chef.io
    1. Lakukan Sign In ke https://manage.chef.io/.
    2.Pilih organsasi dari tab Administration.
    3. Pilih Generate Knife Config dari menu sebelah kiri dan simpan file tersebut.
    manage_generate_knife_config-633ea565
    4. Salin file unduhan tadi ke direktory .chef

    $ mv ~/Unduhan/knife.rb ~/chef-repo/.chef/.
  • Generate kunci RSA private dari chef-server
    1. Lakukan Sign In ke https://manage.chef.io/.
    2. Dari tab Administration, pilih Users dari menu sebelah kiri. Pilih username kita, dan pilih Reset key dari menu sebelah kiri, dan pilih Reset key dari jendela ditampilkan.
    manage_reset_key-ee79ad1a
    3. Jendela selanjutnya akan menampilakan kunci private kita. Pada bagian bawah jendela klik tombol Download untuk mengunduh file tersebut.
    manage_download_key-aede5162
    4. Salin kunci RSA private ke folder .chef

    $ mv ~/Unduhan/username.pem ~/chef-repo/.chef/.
  • Lakukan verifikasi kunci
    $ ls ~/learn-chef/.chef

    knife.rb your_name.pem

    $ knife ssl check

    Connecting to host api.chef.io:443
    Successfully verified certificates from `api.chef.io’

Kelar, selamat mencoba. Selanjutnya adalah mengunggah cookbook dan melakukan bootstrap node.

Estu~ yg lagi mantengin log kitchen.

Chef; Mengenal Supermarket; Repository Cookbook ala Chef

logo-supermarket

supermarket.chef.io | https://github.com/chef/supermarket

Kalau GNU/Linux punya repository/lumbung, Android punya Google Play, maka Chef punya Supermarket berisi resep-resep yang diunggah oleh komunitas dan bisa kita gunakan kembali(reuse). Kita bisa mencari resep yang kita inginkan dengan mengetikkan kata kunci di kolom pencarian. Nah bagaimana cara menggunakannya dengan mode konsole? Yuk simak langkah berikut:

Sebagai contoh penggunaan, kita butuh resep apt, yup tinggal unduh dari supermarket dengan tool knife.

$ knife cookbook site download apt

maka knife akan mengunduh resep apt dalam format tar.gz. Tinggal lakukan ekstrasi dan pindahkan ke direktori cookbooks.

$ tar zxvf apt-3.0.0.tar.gz
$ rm -rf apt-3.0.0.tar.gz && mv apt cookbooks/.

Kira-kira begitulah sambil baca panduan sebelumnya.

Estu yang lagi masak kue~

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

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.

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)