Showing posts with label oracle soa. Show all posts
Showing posts with label oracle soa. Show all posts

Sunday, July 1, 2018

Import SOA Composites Menggunakan Python Script

Pada Blog sebelumnya saya sudah menjelaskan bagaimana cara untuk melakukan export project SOA menggunakan python script. Nah, kali ini saya akan membahas bagaimana cara untuk Import atau yang biasa kita kenal dengan Deploy .jar project SOA menggunakan python script.
Ketika kita ingin melakukan Import alias deploy .jar project yang sudah kita buat ke SOA Server maka kita harus melakukan import atau deploy satu-satu. Sama halnya seperti export, Bagaimana jika project yang akan kita import/depoly ada ribuan? apakah kita akan melakukan import/depoly satu-satu juga? Terlalu rumit dan melelahkan.
Nah untuk itulah, lagi-lagi saya akan membagikan python script untuk memudahkan proses import atau deploy project SOA yang banyak hanya dengan sekali execute file python script.
Langkah-langkahnya adalah sebagai berikut :
Siapkan python script nya terlebih dahulu.
Anda bisa melihatnya pada gambar di bawah :
  • Script untuk melakukan Proses Import/Deploy SOA Composite
    Arthur_SOAMigrateScript.py
    Script diatas terlebih dahulu akan membaca folder dimana anda menyimpan semua file .jar project anda dan kemudian akan menjalankan command ls -l  untuk melihat detail list .jar file anda.
    Perhatikan script pada bagian :
    read_list = os.popen("ls -l /u01/apps/oracle/bpel/")
    list_jar = read_list.read()
    Setelah menjalakan command itu, maka script ini akan otomatis menjalankan WLST Command untuk import/deploy .jar file project anda sebanyak list project yang ada pada folder anda.
    Perhatikan command :
    sca_deployComposite(host_deploy,path_jar+jarfile,user="username",password="password",forceDefault=false,overwrite=true)
    Pastikan host, username dan password sudah sesuai dengan SOA Server anda. Karena jika tidak maka proses import/deploy ini akan gagal.
Langkah untuk menjalankan Script ini juga sangat sederhana :
  • Pada script pastikan anda sudah memasukkan host, username dan password SOA Server sesuai dengan host, username, dan password SOA server anda dengan benar.
  • Pastikan anda mengetahui letak path nodemanager SOA Server anda. Dimana anda akan meletakkan file python script nya di path ini.
  • Jika Anda membuat python Script tersebut pada local anda, maka pastikan anda sudah meng-copy file tersebut ke path nodemanager SOA Server anda.
    untuk melakukan copy dari local ke SOA Server bisa anda lakukan dengan menjalankan command berikut (jangan lupa memasukkan host dan username yang sesuai dengan SOA Server anda):
    scp /Users/toms/Documents/Nostra/ORACLE/DokumentasiTutorial/Arthur_SOAMigrateScript.py user@host:/u01/oracle/config/aserver/JWS_BPM/nodemanager/
  • Sekarang silahkan masuk ke SOA Server anda. Dalam hal ini saya melakukan ssh ke SOA Server saya.
    berikut ada contoh command yang saya jalankan untuk masuk ke SOA server saya menggunakan ssh :
    ssh user@host
  • Silahkan masuk menggunakan command CD menuju path nodemanager anda.
    berikut ada contoh command yang saya jalankan untuk masuk ke nodemanager server saya :
    cd /u01/oracle/config/aserver/JWS_BPM/nodemanager/
  • Pastikan bahwa python Script anda sudah ter-copy ke path nodemanager.
  • Jika sudah, maka sekarang saatnya kita menjalankan script nya.
    Namun, seperti umumnya dalam oracle. Untuk bisa menjalankan WLST Command maka kita harus set envelope wlst command terlebih dahulu.
    Biasanya pada SOA Server sudah tersedia satu script untuk set envelope yang ada pada path nodemanager itu juga, sehingga kita bisa jalankan script itu saja. Berikut adalah cara jalankan script untuk set envelope wlst command:
    . ./setWLSTEnv.sh 
  • Jika sudah, maka jalankan scriptnya. Berikut ada command untuk menjalankan scriptnya:
    java weblogic.WLST Arthur_SOAMigrateScript.py (*untuk meng-import List .jar project dari path /u01/apps/oracle/bpel ke SOA Server ).
  • Tunggu hingga proses import/deploy selesai.
  • jika sudah selesai, maka silahkan cek list project anda dengan cara menjalankan script Arthur_SOAMigrateScript.py dengan operasi save_list_tofile() seperti yang sudah saya jelakan pada blog sebelumnya. Pasti list project anda sudah bertambah sesuai dengan list project yang baru saja anda import/deploy menggunakan script diatas.
  • Finish
  • Anda tidak perlu lelah lagi melakukan import satu-satu .jar file anda, karena sekarang anda tinggal jalankan script diatas.
Demikian yang bisa saya bagikan kali ini, semoga bermanfaat dan terimakasih.

Export SOA Composites Menggunakan Python Script

Pada Blog kali ini saya akan membahas bagaimana cara untuk Export SOA Composite menggunakan python script.
Apasih SOA Composite itu?
Untuk teman-teman yang sudah biasa bermain di dunia oracle middleware pasti tidak jarang lagi mendengar SOA Composite. SOA Composite merupakan kumpulan dari service-service yang sudah kita deploy dan di simpan dalam satu app (contoh project BPEL, BPM dan lain-lain).
Ketika kita ingin melakukan export atau download project yang sudah kita deploy ke SOA Server pada umumnya kita harus melakukan export satu-satu. Bagaimana jika project yang akan kita export ada ribuan? apakah kita akan melakukan export satu-satu juga?
Saya rasa itu akan membuat kita pusing dan bukan kerjaan bangat kalau harus export satu-satu .jar file nya.
Nah untuk itulah, saya akan membagikan python script untuk memudahkan kita dalam melakukan export project yang banyak hanya dengan sekali execute file python script.
Langkah-klangkahnya adalah sebagai berikut :
Siapkan python script nya terlebih dahulu.
Ada dua script python, dan anda bisa melihatnya pada gambar di bawah :

  • Script untuk melihat semua list SOA Composite yang ada pada SOA Server.
    Arthur_ListSoaComposites.py
    Dalam file Arthur_ListSoaComposites.py paste command WLST di bawah ini :
    sca_listDeployedComposites("host", "port", "username", "password")
    Ganti host, port, username dan password sesuai dengan host, port, username dan password SOA Server anda.
    Siapkan satu file lagi untuk meng-eksekusi WLST Command diatas, untuk mendapatkan semua list SOA Composites yang ada pada SOA Server anda.
    Arthur_SOAMigrateScript.py (*fungsi save_list_to_file())
    Script diatas berguna untuk mendapatkan semua list project SOA yang ada pada SOA Server anda. List tersebut kemudian akan disimpa pada sebuah file .txt dengan nama fileHandling.txt.
    Anda bisa menentukan kemana path file tersebut akan disimpan, dengan cara menambahkan path terlebih dahulu kemudian di ikuti dengan nama file pada variable file pada script anda.
  • Script untuk melakukan Proses Export SOA Composite
    Arthur_SOAMigrateScript.py (*fungsi export_composites())
    Script diatas terlebih dahulu akan membaca file .txt yang sudah anda buat sebelumnya menggunakan script List SOA diatas. Nah dari file itu Script ini akan mengetahui project mana saja yang akan di export.
    Setelah Membaca file, maka script ini akan otomatis menjalankan WLST Command untuk export SOA composite sebanyak nama project yang tertera pada file anda.
  • Script main function untuk memilih operasi apa yang akan dijalankan oleh Script kita.
    Urutannya adalah kita harus memilih operasi save_list_to_file(), kemudian pilih operasi export_composites().
    Arthur_SOAMigrateScript.py (*fungsi main()).

Langkah untuk menjalankan Script ini juga sangat sederhana :
  • Pastikan anda sudah menyediakan folder kemana semua hasil export-an anda akan disimpan.
  • Dalam Script semua project yang ter-export akan tersimpan ke path : /u01/apps/oracle/bpel/
  • Pastikan anda sudah memasukkan host, username dan password SOA Server sesuai dengan host, username, dan password SOA server anda dengan benar.
  • Pastikan anda mengetahui letak path nodemanager SOA Server anda. Dimana anda akan meletakkan file python script nya di path ini.
  • Jika Anda membuat python Script tersebut pada local anda, maka pastikan anda sudah meng-copy file tersebut ke path nodemanager SOA Server anda.
    untuk melakukan copy dari local ke SOA Server bisa anda lakukan dengan menjalankan command berikut (jangan lupa memasukkan host dan username yang sesuai dengan SOA Server anda):
    scp /Users/toms/Documents/Nostra/ORACLE/DokumentasiTutorial/Arthur_SOAMigrateScript.py user@host:/u01/oracle/config/aserver/JWS_BPM/nodemanager/
  • Sekarang silahkan masuk ke SOA Server anda. Dalam hal ini saya melakukan ssh ke SOA Server saya.
    berikut ada contoh command yang saya jalankan untuk masuk ke SOA server saya menggunakan ssh :
    ssh user@host
  • Silahkan masuk menggunakan command CD menuju path nodemanager anda.
    berikut ada contoh command yang saya jalankan untuk masuk ke nodemanager server saya :
    cd /u01/oracle/config/aserver/JWS_BPM/nodemanager/
  • Pastikan bahwa python Script dan file .txt anda sudah ter-copy ke path nodemanager.
  • Jika sudah, maka sekarang saatnya kita menjalankan script nya.
    Namun, seperti umumnya dalam oracle. Untuk bisa menjalankan WLST Command maka kita harus set envelope wlst command terlebih dahulu.
    Biasanya pada SOA Server yang sudah tersedia, kita langsung bisa menjalankan satu script untuk set envelope yang ada pada path nodemanager itu juga. Berikut ada cara jalankan script untuk set envelope untuk wlst command:
    . ./setWLSTEnv.sh 
  • Jika sudah, maka jalankan scriptnya. Berikut ada command untuk menjalankan scriptnya:
    java weblogic.WLST Arthur_SOAMigrateScript.py (*pilih operasi save_list_to_file() untuk menyimpan List SOA Composite ke file .txt)
    Berikut adalah contoh isi file list .txt yang sudah berhasil ter-create pada folder saya ketika script Arthur_SOAMigrateScript.py dengan pilihan operasi save_list_to_file() di jalankan :
    java weblogic.WLST Arthur_SOAMigrateScript.py (*pilih operasi export_composite() untuk meng-export List SOA Composite dari file .txt ke path /u01/apps/oracle/bpel/)
    Kedua operasi yang ada pada script di atas harus di jalankan satu-satu, setelah script Arthur_SOAMigrateScript.py dengan operasi save_list_to_file() selesai maka dengan command yang sama jalankan script Arthur_SOAMigrateScript.py dan pilih operasi export_composites().
  • Tunggu hingga proses export selesai.
  • jika sudah selesai, maka silahkan masuk ke folder dimana anda menyimpan .jar file hasil export-an dari script anda.
    cd /u01/apps/oracle/bpel/
  • tarrraaaa, maka secara otomatis folder anda akan di isi dengan .jar file yang sudah berhasil ke export.
    Berikut contoh project saya yang sudah berhasil ter-export :
  • Finish
  • Anda tidak perlu lelah lagi melakukan export satu-satu .jar file anda, karena sekarang anda tinggal jalankan script diatas.
Demikian yang bisa saya bagikan kali ini, semoga bermanfaat dan terimakasih.



Friday, December 19, 2014

The Hostname Strategy


Dalam dunia jaringan komputer, setiap komputer yang terhubung dalam sebuah jaringan memiliki sebuah identitas yang unik berupa IP address atau berupa hostname. IP address adalah serangkaian segment angka desimal (atau heksadesimal pada IPv6) yang menunjukkan jaringan mana sebuah komputer terhubung. Contoh dari IP address misalnya 192.168.0.1 di mana 192.168.0 menunjukkan jaringan, dan 1 menunjukkan identitas komputer yang dimaksud. Sedangkan hostname atau machine name merupakan alias dari sebuah mesin komputer. [1]

Fully Qualified Domain Name (FQDN) adalah domain name yang lengkap untuk mereferensi sebuah komputer yang berada di Internet [2]. FQDN membutuhkan naming service seperti DNS untuk me-resolve hostname mapping ke IP address. Contoh dari FQDN misalnya dev.nostratech.com di mana dev merupakan machine name dan nostratech.com merupakan domain name tempat mesin dev tersebut terhubung. [2]

Ketika tahap development, umumnya kita hanya diberikan informasi IP address karena infrastruktur DNS belum/tidak ada pada development environment. Sehingga kita menggunakan IP address tersebut sebagai penanda identitas server address pada konfigurasi aplikasi. Ketika deployment ke production, barulah konfigurasi IP address tersebut diganti menjadi IP address production atau hostname yang sudah ditetapkan. 

Pada dasarnya alur kerja seperti ini tidak akan bermasalah, namun terkadang saya menemui aplikasi seperti Oracle Enterprise Manager 12c yang tidak mau di-install jika menggunakan IP address. Aplikasi tersebut mengharapkan FQDN sebagai server address yang ter-register. Masalah lain juga pernah saya temui ketika perlu membuat development environment yang merupakan clone dari production environment, di mana salah satu SOA composite deployment me-refer ke IP address dari production environment sedangkan development environment berada di beda jaringan dengan production. Bagaimana cara mengatasinya dengan kondisi yang terbatas seperti itu?
Satu hal yang mulai saya biasakan ketika membuat development environment adalah dengan membuat entry hostname di file /etc/hosts server. Jika memang DNS service belum tersedia di environment, saya gunakan hostname untuk server address pada konfigurasi aplikasi dan meng-update file /etc/hosts dengan IP address yang sesuai. Keuntungan dari metode ini adalah jika suatu ketika dari tim jaringan ada perubahan topologi atau mapping IP address, tidak ada perubahan yang harus dilakukan di sisi aplikasi. Satu-satunya perubahan yang perlu dilakukan adalah mapping hostname-IP address pada file /etc/hosts di masing-masing server.

Hostname sendiri bisa dibagi menjadi 2 tipe hostname, yaitu physical hostname dan virtual hostname. Physical hostname adalah hostname yang merupakan mapping dari physical IP address (koneksi kabel fisik) sebuah server, sedangkan virtual hostname adalah hostname yang merupakan mapping dari virtual IP address (software-based IP address) sebuah server. Saya mulai mengetahui adanya kedua tipe ini ketika saya mulai mempelajari dokumentasi Oracle. Pada dokumentasi tersebut nampak ada 4 physical hosts, yaitu SOAHOST1, SOAHOST2, BAMHOST1, dan BAMHOST2. Physical IP address pada dokumentasi adalah IP1, IP2, dan IP3; sementara VIP1, VIP2, VIP3, VIP4, dan VIP5 adalah virtual IP address-nya. Berikut adalah diagram yang saya capture pada dokumentasi Oracle tersebut: [3]
IP dan Virtual IP assignment pada dokumentasi Oracle

Setelah memperhatikan dan mulai mengikuti network plan dari Oracle, saya mulai membiasakan untuk melakukan strategi hostname berikutnya yaitu dengan menggunakan virtual hostname untuk server address yang dipanggil dalam operasi yang sifatnya internal atau transparan dari sisi pengguna. Misalnya, ketika ingin mengacu ke database server address yang memiliki physical hostname db1-dev.nostratech.com, maka gunakan virtual hostname appdb. Keuntungan dari strategi ini adalah konfigurasi yang sama dapat digunakan di environment yang berbeda tanpa harus mengubah hostname pada konfigurasi. Namun ada pengecualian seperti pada kasus Oracle Database RAC di mana harus menggunakan DNS service untuk me-register ke-3 FQDN milik RAC.

Ketika membuat disaster recovery site atau kloning dari production environment, dokumentasi Oracle menyarankan untuk menggunakan alias hostname pada mesin target. Misalnya, di production environment server address untuk database server adalah proddb1.nostratech.com, maka entry /etc/hosts yang diperlukan di production site dan disaster recovery site adalah sebagai berikut: [4]
# Production Site
192.168.1.100    proddb1.nostratech.com proddb1 dbnode1.nostratech.com dbnode1

# Disaster Recovery Site
192.168.100.100  proddb1.nostratech.com proddb1 stbydbnode1.nostratech.com stbydbnode1

# Development Site
192.168.99.100   proddb1.nostratech.com proddb1 devdbnode1.nostratech.com devdbnode1

# Site X Format
# IP_ADDRESS     ALIAS_WITH_DOMAIN ALIAS HOSTNAME_WITH_DOMAIN HOSTNAME

Jadi, kesimpulan dari strategi hostname yang bisa saya usulkan adalah:
  1. Jangan pernah menggunakan IP address dalam melakukan konfigurasi server address, kecuali jika memang aplikasi tersebut hanya dapat menggunakan IP address.
  2. Bedakan antara physical hostname dengan virtual hostname yang akan digunakan oleh aplikasi untuk lebih mendukung portabilitas konfigurasi.
  3. Manfaatkan file /etc/hosts di masing-masing server untuk server address yang sifatnya internal operation yang tidak perlu di-ekspose ke pengguna aplikasi, misalnya database server address, WebLogic virtual hostname, dan server address lainnya yang tidak perlu di-entry di DNS service.
  4. Gunakan DNS service hanya pada server address yang sifatnya harus diakses langsung dari client. Jika DNS service belum tersedia, manfaatkan kembali file /etc/hosts pada client dan server.
  5. Pastikan eksternal server address yang akan menjadi address yang diakses oleh client dalam bentuk FQDN.
  6. Gunakan alias hostname ketika ingin membuat disaster recovery site untuk meminimalkan konfigurasi yang perlu dilakukan pada kedua site (production dan disaster recovery site).
Happy weekend! :)

Daftar Pustaka:
[1] Massachusetts Institute of Technology Knowledge Base
[2] Indiana University Knowledge Base
[3] Oracle Fusion Middleware Enterprise Deployment Guide for Oracle SOA Suite
[4] Oracle Fusion Middleware Disaster Recovery Guide