Tutorial Install dan Konfigurasi Openstack : Identity Service Kode Name (Keystone)

halo sobat life4code, setelah kita membuat environtment yang ada, pada kesempatan hari ini, kita akan belajar mengenai Identity Service, dengan kode name Keystone. sebelum kita masuk dalam "install dan konfigurasi", ada baiknya kita mengenali apa itu Identity Service. oke saya akan menjelaskan sedikit apa itu Identity Service.

#LAB 8 Mengenali apa itu Identity Service (Keystone)

OpenStack Identity service melayani intregasi single point untuk manajemen authentication, authorization, dan service catalog services.  OpenStack services lainnya menggunakan  Identity service sebagai koneksi API. Selain itu, services yang menyediakan informasi tentang users tapi tidak include di OpenStack seperti  (LDAP services) dapat di intregasikan ke infrastruktur sebelumnya.

untuk mendapatkan fungsi dari Identity service, OpenStack services lainnya harus dikolaborasi dengan ini. ketika OpenStack service menerima sebuah request dari user, request tersebut akan dicheck dengan Identity service apakah user  mempunyai kewenangan untuk membuat request.

Identity service berisi berbagai komponen sebagai berikut:

Server 
Sebuah pusat server menyediakan authentication dan authorization services menggunakan RESTful interface. 

Drivers
Driver atau sebuah service back end yang terintregasi pada server pusat. digunakan untuk mengakses identity information pada external repositori ke OpenStack, dan mungkin sudah ada pada infrastruktur dimana OpenStack dideploy (contoh, SQL databases / LDAP servers). 

Modules 

Modul Middleware berjalan di address space dari OpenStack komponen yang biasa digunakan di Identity service. modul ini memotong service requests, men-extract user credentials, dan mengirim mereka ke pusat server untuk authorization. integrasi diantara modul middleware dan OpenStack komponen menggunakan Python Web Server Gateway Interface.

saat menginstall OpenStack Identity service, kamu harus mendaftarkan setiap service pada openstack. Identity service kemudian dapat melacak yang mana OpenStack services yang telah terinstall, dan dimana lokasi mereka berada.
#9 Install dan Konfigurasi Identity Service ( Keystone )

pada bagian ini digambarkan bagaimana cara install dan konfigurasi OpenStack Identity service, dengan code-name keystone, pada node controller. untuk performanya, konfigurasi ini mendeploy sebuah Apache HTTP server untuk menghandle requests dan Memcached untuk menyimpan tokens daripada SQL database.

Persyaratan :
sebelum kamu mengkonfigurasi Openstack Identity Service, kamu harus membuat sebuah database dan administration token.

1. untuk membuat database, ikuti langkah-langkah berikut:

  • digunakan database access client untuk connect ke  database server sebagai  user root:
$ mysql -u root -p 
  • buat database keystone:
CREATE DATABASE keystone;
  • memberikan access untuk database keystone:
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
          Ganti KEYSTONE_DBPASS dengan password sama.
keluar dari database access client.

2. generate random value untuk dipakai sebagai administration token saat konfigurasi awal:
$ openssl rand -hex 10
Install dan Konfigurasi Komponen Identity Service 

Catatan
pada tutorial ini kita menggunaka Apache HTTP server dengan mod_wsgi untuk menyediakan Identity service requests di port 5000 dan 35357. By default, keystone service masih listens di ports 5000 and 35357. makadari itu, tutorial ini akan mematikan keystone service.

1. matikan keystone service:
# echo "manual" > /etc/init/keystone.override
2. jalankan command ini untuk install paketnya:
# apt-get install keystone apache2 libapache2-mod-wsgi \
  memcached python-memcache
3. Edit file/etc/keystone/keystone.conf dan ikuti langkah-langkah berikut:
nano /etc/keystone/keystone.conf
  • pada variable [DEFAULT],tetapkan nilai administration token:
[DEFAULT]
...
admin_token = ADMIN_TOKEN
         Ganti ADMIN_TOKEN dengan random value yang telah kamu buat sebelumnya.

  • pada variable [database], konfigurasi database:

[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
          Replace KEYSTONE_DBPASS with the password you chose for the database.

  • In the [memcache] section, configure the Memcached service:
[memcache]
...
servers = localhost:11211

  • In the [token] section, configure the UUID token provider and Memcached driver:
[token]
...
provider = uuid
driver = memcache
  • In the [revoke] section, configure the SQL revocation driver:
[revoke]
...
driver = sql
  • (Optional) untuk memudahkan troubleshooting, aktifkan verbose logging pada variable [DEFAULT] :
[DEFAULT]
...
verbose = True

4. mengisi identity service database :
# su -s /bin/sh -c "keystone-manage db_sync" keystone
#LAB 10 Konfigurasi Apache HTTP server

Edit file /etc/apache2/apache2.conf dan konfigurasi pilihan ServerName  untuk menjadikan controller 1. node sebagai titik acuan:
nano /etc/apache2/apache2.conf
lalu isi dengan:
ServerName controller 
2. buat file di /etc/apache2/sites-available/wsgi-keystone.conf  dan isikan content tersebut dengan script dibawah ini:

Listen 5000
Listen 35357
<VirtualHost *:5000>
    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
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>
<VirtualHost *:35357>
    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
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/apache2/keystone.log
    CustomLog /var/log/apache2/keystone_access.log combined
    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>
3. aktifkan identity service virtual host:

# ln -s /etc/apache2/sites-available/wsgi-keystone.conf /etc/apache2/sites-enabled
Final Instalasi

1. Restart Apache HTTP server:
# service apache2 restart
2. By default, pada paket ubuntu menggunakan SQLite database.
karena tutorial ini menggunakan SQL database server, kamu bisa menghapus file SQLite database:


# rm -f /var/lib/keystone/keystone.db
#LAB 11 Membuat service entity and API endpoints

Persyaratan

secara default, Identity service database tidak cukup banyak memiliki authentication konvesional dan catalog services. kamu harus menggunakan temporary authentication token yang telah kamu buat pada saat bagian generate untuk menginialisasi API endpoint pada Identity service.

kamu harus memasukan authentication token ke openstack command dengan script --os-token parameter / set OS_TOKEN variabel environment . Demikian pula,kamu juga harus memberi value Identity service URL di openstack command --os-url parameter / set OS_URL variabel environment.


1. Konfigurasi authentication token:
$ export OS_TOKEN=ADMIN_TOKEN
ganti ADMIN_TOKEN dengan authentication token yang telah kamu generate sebelumnya.

2. Konfigurasi endpoint URL:
$ export OS_URL=http://10.0.0.10:35357/v3
3. Konfigurasi Identity API version:
$ export OS_IDENTITY_API_VERSION=3

buat layanan entity dan API endpoints

Identity service membuat sebuah catalog services pada environment OpenStack kamu . layanan tsb menggunakan catalog ini untuk menentukan layanan lainnya yang  ada pada environmentmu.

Create layanan entity untuk Identity service:

$ openstack service create \
  --name keystone --description "OpenStack Identity" identity


Catatan

OpenStack generate ID secara dinamis, jadi kamu dapat melihat perbedaan output value ketika kamu membuat lagi.

Identity service mengelolas catalog API endpoints terkait dengan layanan pada environment OpenStackmu. Services menggunakan catalog ini untuk menentukan bagaimana cara berkomunikasi dengan services lainnya di environmentmu.

OpenStack menggunakan 3 variasi API endpoint untuk setiap service: admin, internal, dan public. secara default, admin API endpoint mengizinkan modifikasi users dan tenants, sedangkan public dan internal API tidak mengizinkan operation ini. pada environment produksi, 3 variasi ini mungkin berada pada jaringan yang terpisah dan service karena alasan keamanan. contoh, public API network mungkin dapat terlihat dari Internet jadi pelanggan dapat mengelola clouds mereka. pada jaringan admin API  mungkin dibatasi dengan organisasi yang mengelola cloud. pada jaringan internal API mungkin dibatasi pada hosts yang berisi layanan OpenStack. OpenStack mendukung multiple regions untuk skalabilitas.pada tutorial menggunakan management network untuk semua variasi endpoint dan default daerah RegionOne.

  • Admin : mengizinkan modifikasi users dan tenants, hanya operator yg dapat mengelola infrastruktur cloud
  • Public : mengizinkan modifikasi users dan tenants, dapat dikelola melalui internet (public) sehingga client dapat mengelola cloud mereka
  • Internal : mengizinkan modifikasi users dan tenants, terbatas untuk hosts yang berisi service dari OpenStack


buat Identity service API endpoints:

Buatlah public endpoint
$ openstack endpoint create --region RegionOne \
identity public http://10.0.0.10:5000/v2.0
juga internal endpoint
$ openstack endpoint create --region RegionOne \
identity internal http://10.0.0.10:5000/v2.0
jangan lupa admin endpoinnya
$ openstack endpoint create --region RegionOne \
identity admin http://10.0.0.10:35357/v2.0
Catatan
setiap service yang kamu tambahkan pada OpenStack environmentmu membutuhkan 1 atau lebih layanan entities dan 3 variasi API endpoint pada Identity service.


#LAB 12 Membuat projects, users, dan roles
The Identity service melayanin authentication services untuk setiap OpenStack service. authentication service menggunakan kombinasi domain, projects (tenants), users, dan roles.
Catatan
untuk mempermudah, tutorial ini menggunakan default domain.
1. buatlah administrative project, user, role untuk administrative operations pada environmentmu:
  •  membuat admin project:
$ openstack project create --domain default \
  --description "Admin Project" admin
  •  membuat admin user:
$ openstack user create --domain default \
  --password-prompt admin
  • Create the admin role:
$ openstack role create admin
  • tambahkan admin role ke admin project and user:
$ openstack role add --project admin --user admin admin
Catatan: pada command ini  tidak akan ada output.
Catatan: setiap roles yang kamu buat harus berpeta pada spesifik roles di  file policy.json  pada konfigurasi file directory setiap layanan OpenStack. 
tutorial ini menggunakan  layanan project yang berisi user unique untuk setiap service yang kamu tambah ke environment.

buat service project:
$ openstack project create --domain default \
  --description "Service Project" service
Regular (non-admin) tasks seharusnya menggunakan unprivileged project dan user.contoh, pada tutorial ini menggunakan demo project dan user.
Create the demo project:
$ openstack project create --domain default \
  --description "Demo Project" demo
Catatan
Jangan ulangi step ini ketika menambah user untuk project ini

membuat demo user:
$ openstack user create --domain default \
  --password-prompt demo
tambah user role ke demo project dan user:
$ openstack role add --project demo --user demo user
#LAB 13 Verifikasi Operasi pada Controller Node 

verifikasi terlebih dahulu Identity service sebelum install service lainnya.

 1. untuk alasan keamanan, matikan mekanisme temporary authentication token :

Edit file /etc/keystone/keystone-paste.ini dan hapus admin_token_auth dari
[pipeline:public_api]
[pipeline:admin_api]
[pipeline:api_v3]

2. Unset temporary OS_TOKEN dan OS_URL variabel environment:
$ unset OS_TOKEN OS_URL
3. sebagai user admin, request authentication token:
$ openstack --os-auth-url http://10.0.0.10:35357/v3 \
  --os-project-domain-id default --os-user-domain-id default \
  --os-project-name admin --os-username admin --os-auth-type password 
4. sebagai demo user, request authentication token:
$ openstack --os-auth-url http://10.0.0.10:5000/v3 \
  --os-project-domain-id default --os-user-domain-id default \
  --os-project-name demo --os-username demo --os-auth-type password \
  token issue

 Catatan :
pada perintah ini menggunakan password untuk demo user dan port API 5000 yang hanya mengizinkan regular (non-admin) akses untuk Identity service API.

#LAB 14 Membuat skrip OpenStack client environment

gunakan kombinasi dari variabel environment dan command options untuk berinteraksi dengan Identity service via  openstack client. untuk meningkatkan keefisienan pada client operations, OpenStack mendukung client environment scripts yang biasa dikenal sebagai file OpenRC . skrip ini biasanya berisi  options umum untuk semua clients, tapi juga mendukung unique options.

Membuat Skrip tersebut

membuat skrip client environment untuk  admin dan demo projects users. agar kedepannya pada tutorial ini kita tidak perlu menuliskan 1 per 1.
Edit file admin-openrc.sh dan isi sebagai berikut:

nano admin-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://10.0.0.10:35357/v3
export OS_IDENTITY_API_VERSION=3
ganti ADMIN_PASS dengan password yang telah kamu buat untuk admin user pada Identity service.

edit demo-openrc.sh file dan tambahkan isinya sebagai berikut:
nano demo-openrc.sh
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://10.0.0.10:5000/v3
export OS_IDENTITY_API_VERSION=3
ganti DEMO_PASS dengan password yang kamu buat untuk demo user pada Identity service.

Menggunakan Skript yang telah kita buat

untuk menjalankan clients sebagai spesifik project dan user, kamu dapat secara simpel meload client environment yang terkait pada script prioritas untuk menjalankannya. contoh:

Load file admin-openrc.sh  untuk menggunakan environment variabel dengan lokasi dari Identity service pada admin project dan user credentials:
$ source admin-openrc.sh

Request authentication token:
$ openstack token issue 


0 Response to "Tutorial Install dan Konfigurasi Openstack : Identity Service Kode Name (Keystone)"

Post a Comment