SEMANGAT

Kamis, 20 Oktober 2016

Installasi Openstack Mitaka pada Ubuntu 14.04 LTS Part 2

Silahkan buka part 1 (lab 1 – 7) terlebih dahulu untuk mengerjakan part 2 ini > “Installasi Openstack Mitaka pada Ubuntu 14.04 LTS Part 1”

Pada part 2 ini, kita akan nge-lab tentang komponen Identity Services pada Openstack yang juga juga kita tau komponen tersebut mempunyai nama Keystone
Keystone ini menyimpan semua informasi tentang users, komponen openstack yang lain, dan sebagainya.
Keystone juga menyediakan layanan untuk memanajemen authentication, authorization dan katalog services openstack itu sendiri serta API endpoints-nya.
Keystone akan mengirimkan authorization token valid yang akan di terima ke semua layanan pada openstack, yang kemudian token tersebut akan di verifikasi sehingga kita dapat menggunakan layanan tersebut.
Jadi keystone ini bisa di katakan sebagai jembatan agar semua layanan dalam openstack agar bisa berkomunikasi satu sama lain.
Lab 8 – Membuat Database Keystone – Node Controller
Pertama kita buat database keystone terlebih dahulu pada node controller, dengan cara masuk ke mode database mysql terlebih dahulu :
# mysql -u root -p
kemudian buat database keystone-nya
> CREATE DATABASE keystone;
Buat Database Keystone
Buat Database Keystone
dan kemudian edit permission keystone database tersebut
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  -> IDENTIFIED BY 'keystone123';
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  -> IDENTIFIED BY 'keystone123';
 keystone123 itu adalah password dari database keystone-nya.
atur permission database keystone-nya
atur permission database keystone-nya
kemudian keluar dari mode database-nya, dan juga masuk ke “user biasa” bukan user root, untuk generate random token yang akan digunakan sebagai administrasi token pada beberapa konfigurasi awal ini.
$ openssl rand -hex 10
generate token
generate token
Dan jangan lupa hasil generate token tersebut di simpan/catat, karena akan di gunakan nanti untuk mengkonfigurasi beberapa keystone-nya.
Lab 9 – Konfigurasi Komponen Keystone – Node Controller
pertama kita disable service keystone terlebih dahulu, karena pada saat setelah installasi keystone, keystone akan langsung running service-nya.
# echo "manual" > /etc/init/keystone.override
Kemudian baru kita install package keystone beserta Apache HTTP Server. Kenapa di butuhkan HTTP server? karena keystone ini memerlukan port 5000 dan 35357 untuk mendapatkan request dari identity services, dan port tersebut merupakan bagian dari HTTP server.
# apt-get install keystone apache2 libapache2-mod-wsgi
kemudian kita buka file keystone.conf, untuk konfigurasi
# vi /etc/keystone/keystone.conf
dan edit beberapa variabel di bawah ini
[DEFAULT]
admin_token = f402be63f78dc1a46aea

[database]
connection = mysql+pymysql://keystone:keystone123@10.10.10.10/keystone

[token]
provider = fernet
keterangan
  • f402be63f78dc1a46aea, adalah token yang tadi kita tadi generate
  • keystone123, adalah password database keystone
  • 10.10.10.10, adalah ip dari host controller, atau bisa juga di ganti dengan contoller
edit beberapa konfigurasi pada keystone.conf
edit beberapa konfigurasi pada keystone.conf
Setelah itu save, dan sinkronisasikan database keystone-nya
# su -s /bin/sh -c "keystone-manage db_sync" keystone
output hasil sinkron keystone database
output hasil sinkron keystone database
Kemudian install fernet keys
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
install fernet keys
install fernet keys
Lab 10 – Konfigurasi Apache HTTP Server – Node Controller
buka file /etc/apache/apache2.conf dengan menggunakan user root
# vi /etc/apache2/apache2.conf
lalu edit opsi ServerName dan tambahkan opsi ServerName beserta ip/hostname node controller
ServerName 10.10.10.10
tambahkan opsi ServerName
tambahkan opsi ServerName
Lalu save, dan kita buat file wsgi-keystone.conf, yang akan di gunakan oleh komponen keystone
# vi /etc/apache2/sites-available/wsgi-keystone.conf
dan copy paste script di bawah ini (jika menggunakan ssh)
Listen 5000
Listen 35357

    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    
        Require all granted

    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    
        Require all granted
    
tetapi jika anda masih menggunakan console virutalbox bisa pakai
# wget https://fauzanooor.id/c/wsgi-keystone.conf /etc/apache2/sites-available/
kemudia buat link file tersebut ke directory sites-enabled, agar virtualhosts keystone yang tadi di buat dapat di aktifkan/di publish
# ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
setelah itu restart service apache-nya
# /etc/init.d/apache2 restart
secara default, ubuntu membuat SQLi Database sendiri. Tapi karena pada konfigurasi ini kita menggunakan SQL Database Server, maka lebih baik kita hapus file database SQLite-nya
# rm -f /var/lib/keystone/keystone.db
Lab 11 – Membuat Entity Service dan API endpoints – Node Controller
Pada konfigurasi default, di dalam database layanan identity tidak mengandung informasi apapun untuk mendukung authentication dan layanan katalog yang di pakai di keystone. Jadi kita harus membuat authentication token sementara yang pada sudah kita buat pada lab 1 agar service entity dan API endpoints dapat di buat.
Masuk ke user biasa, bukan user root.
Lalu pertama kita konfigurasi authentication token-nya
$ export OS_TOKEN=f402be63f78dc1a46aea
ingat token tersebut sudah kita buat pada lab 1. Kemudian konfigurasi endpoint URL-nya
$ export OS_URL=http://10.10.10.10:35357/v3
Dan juga konfigurasi versi identity API-nya
$ export OS_IDENTITY_API_VERSION=3
export authentication, endpoint URL dan versi identity API
export authentication, endpoint URL dan versi identity API
Sekarang, kita buat service entity untuk identity service yang berguna untuk me-manage katalog dari services pada Openstack Environment yang kita buat, service itu menggunakan katalog karena untuk menentukan bagaimana berkomunikasi dengan services lain dalam Openstack Environment tersebut.
Dan buat entity service-nya dengan cara sebagai sebagai berikut
$ openstack service create \
--name keystone --description "Noor Openstack Identity" identity
setelah membuat service entity tersebut, maka akan ada output seperti ini
output setelah membuat service entity keystone
output setelah membuat service entity keystone
OpenStack menggunakan 3 API endpoints untuk setiap service yaitu admin, internal dan public. Dan berikut perbedaannya
  • Admin, diizinkan modifikasi users dan tenants, hanya operator yg dapat mengelola infrastruktur cloud
  • Public, tidak diizinkan modifikasi users dan tenants, dapat dikelola melalui internet (public) sehingga client dapat mengelola cloud mereka
  • Internal, tidak diizinkan modifikasi users dan tenants, terbatas untuk hosts yang berisi service dari OpenStack
Dan kita akan membuat dan menggunakan ke-3 API endpoint di atas, dan pertama kita buat untuk yang admin
$ openstack endpoint create --region RegionOne \
identity admin http://10.10.10.10:35357/v3
kedua kita buat untuk public
$ openstack endpoint create --region RegionOne \
identity public http://10.10.10.10:5000/v3
Dan terakhir kita buat untuk internal
$ openstack endpoint create --region RegionOne \
identity internal http://10.10.10.10:5000/v3
output setelah dibuat endpoints
output setelah dibuat endpoints
keterangan, 10.10.10.10 itu adalah ip dari host controller, tetapi bisa diganti jadi hostname controller-nya.
Lab 12 – Membuat Domain, Projects/Tenants, User dan Roles – Node Controller
Layanan identity menyediakan layanan authentication untuk setiap layanan dari OpenStack, dan authentication tersebut menggunakan kombinasi dari domain, projects/tenants, users dan juga roles.
fyi : pada versi openstack liberty domain default sudah dibuat secara default pada saat installasi, sedangkan pada versi mitaka ini harus dibuat terlebih dahulu
Dan pertama-tama kita buat domain-nya terlebih dahulu, yaitu dengan cara
$ openstack domain create --description "Default Domain" default
output setlah domain service dibuat
output setlah domain service dibuat
Setelah itu kita buat project admin, dengan cara sebagai berikut
$ openstack project create --domain default \
--description "Admin Project" admin
output setelah project admin dibuat
output setelah project admin dibuat
buat juga project service
$ openstack project create --domain default \
--description "Service Project" service
output setelah project service dibuat
output setelah project service dibuat
Dan juga buat project demo
$ openstack project create --domain default \
--description "Demo Project" demo
output setelah project demo dibuat
output setelah project demo dibuat
Di sini kita akan membuat user untuk admin dan juga untuk demo dengan cara sebagai berikut
$ openstack user create --domain default \
--password-prompt admin
yang di atas untuk admin, dan kita buat untuk yang demo
$ openstack user create --domain default \
--password-prompt demo
membuat user admin dan demo pada openstack
membuat user admin dan demo pada openstack
keterangan, pada saat membuat user, kita di suruh membuat password untuk tiap user tersebut (admin dan demo).
Setelah membuat projects dan users, kita juga akan membuat role, yang mana role ini berguna sebagai privileges daripada user itu sendiri.
Sekarang kita buat role untuk admin dengan cara
$ openstack role create admin
dan juga buat untuk users
$ openstack role create user
setelah dibuat maka akan ada output seperti gambar dibawah ini
output setelah role openstack dibuat
output setelah role openstack dibuat
Setelah itu kita tambahkan admin role ke dalam admin project dan user, dengan cara sebagai berikut
$ openstack role add --project admin --user admin admin
kemudian tambahkan juga user role kedalam demo project dan user
$ openstack role add --project demo --user demo user
role di add tidak mengeluarkan output apapun
role di add tidak mengeluarkan output apapun
Verifikasi Services, Projects, Users dan Roles.
Untuk mengecek semua services, projects, user maupun role yang telah dibuat bisa menggunakan perintah dibawah ini
  • Cek service openstack yang telah dibuat
    $ openstack service list
  • Cek endpoint openstack yang telah dibuat
    $ openstack endpoint list
  • Cek domain openstack yang telah dibuat
    $ openstack domain list
  • Cek project openstack yang telah dibuat
    $ openstack project list
  • Cek user openstack yang telah dibuat
    $ openstack user list
  • Cek role openstack yang telah dibuat
    $ openstack role list
verifikasi dari service, endpoint, domain, project, user dan role OpenStack
verifikasi dari service, endpoint, domain, project, user dan role OpenStack
Verifikasi Keystone
Verifikasi dari identity service sebelum menginstall service yang lain.
Dan sekarang, kita non-aktifkan mekanisme authentication token sementara, untuk alasan keamanan, dengan cara buka file /etc/keystone/keystone-paste.ini
# vi /etc/keystone/keystone-paste.ini
kemudian hapus perintah “admin_token_auth” pada opsi
  • [pipeline:public_api]
  • [pipeline:admin_api]
  • [pipeline:api_v3]
Setelah dihapus menjadi seperti dibawah ini..
hapus admin_token_auth pada file keystone-paste.ini
hapus admin_token_auth pada file keystone-paste.ini
Kemudian, hapus variable OS_TOKEN dan OS_URL, dengan cara seperti dibawah ini
$ unset OS_TOKEN OS_URL
lalu kita request authentication token untuk user admin
$ openstack --os-auth-url http://10.10.10.10:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
dan juga request authentication token untuk user demo juga
$ openstack --os-auth-url http://10.10.10.10:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
output seperti gambar dibawah ini
klik untuk memperbesar
klik untuk memperbesar
keterangan, pada saat me-request authentication token-nya, kita di suruh memasukka password user-nya yang sudah dibuat.
Lab 13 – Membuat Script OpenStack Client Environment – Node Controller
Pada saat lab 11, kita telah membuat variables dan opsi perintah untuk menjalankan identity service via openstack client, karena hal tersebut cukup ribet. Maka sekarang kita buat script agar memudahkan menjalankan identity service tersebut, berikut caranya
Pertama kita buat sebuah file “admin-openrc”
note, kita membuat file tersebut dengan menggunakan user biasa
$ vi admin-openrc
kemudian tulis script dibawah ini di dalam file tersebut
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin123
export OS_AUTH_URL=http://10.10.10.10:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
admin123 adalah password user admin, dan 10.10.10.10 adalah ip dari node controller (tapi bisa juga di ganti dengan hostname node controller)
Setelah itu save file tersebut, dan buat juga untuk yang demo, buat file “demo-openrc”
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo123
export OS_AUTH_URL=http://10.10.10.10:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
demo123 adalah password user admin, dan 10.10.10.10 adalah ip dari node controller (tapi bisa juga di ganti dengan hostname node controller)
Setelah itu save file tersebut.
Kemudian load file admin-openrc dengan cara
$ . admin-openrc
Dan juga request authentication token-nya, dengan cara
$ openstack token issue
klik untuk memperbesar
klik untuk memperbesar

0 komentar:

Posting Komentar