ติดตั้ง Database แบบ Automation คลิกเดียวรู้เรื่อง!!

Orange’ Baitoey
Sirisoft
Published in
7 min readNov 26, 2018

สวัสดีค่ะทุกคน กลับมาพบกันอีกแล้วนะคะ ยังจำหน่องเตยได้อยู่มั้ยน้า… หน่องเตยมาเขียน Blog แบบนี้ แสดงว่ามีอะไรดีๆ มานำเสนอนะจ๊ะ อิอิ :p

หลายๆ คนคงรู้จัก DevOps CI/CD (Continuous Integration และ Continuous Delivery/Deployment) กันใช่มั้ยคะ

DevOps เป็น Culture การทำงานที่มีหัวใจสำคัญ คือ ความสะดวกและรวดเร็วในการ Development, Test และการ Deployment ด้วยวิธีการแบบ Automation ซึ่งจะมีประโยชน์มากในการทำงานที่ต้องมีการทดสอบ แก้ไข และ release product version ใหม่อยู่บ่อยครั้ง

แต่เนื่องจากหน่องเตยเป็นสาย DBA จึงเลยอยากลองนำ หัวใจดวงน้อยๆของ devOps คือ Automation ของ DevOps มาประยุกต์ใช้กับ Database ดูบ้าง

วันนี้เลยจะขอนำเสนอการทำ Automate Create Oracle Database by Jenkins ค่ะ ชื่อตรงตัวเลย ก็คือ Install Oracle Database 18c Softwareพร้อมทั้ง Create Database แบบพร้อมใช้งานโดยใช้ tool คุณลุง Jenkins นั่นเองค่ะ

เพียงสั่งการไปที่ Jenkins คลิกเดียว ก็สามารถเนรมิต Oracle Database มาให้เราใช้บน OS Linux ได้อย่างง่ายดาย ทันใจ ทันใช้ฝุดๆ ไปเริ่มพร้อมกันที่ละ step เลยค่ะ

Software และ Technology ที่เกี่ยวข้อง
Prerequisite ที่ต้องเตรียมพร้อม

มาทำ Prerequisite กันทีละขั้นตอนเลยจ้าาา

set minimum RAM
set minimum swap memory Read More command Click

# dd if=/dev/zero of=/tmp/newswap bs=8MB count=1024

# mkswap /tmp/newswap

# swapon /tmp/newswap

# free -m

# echo “/tmp/newswap swap swap defaults 0 0” >> /etc/fstab

Map Host Name กับ IP

# vi /etc/hosts

Stop firewall

# systemctl stop firewalld

# systemctl disable firewalld

Install Jenkins

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins.io/redhat-stable/jenkins.repo

# rpm — import http://pkg.jenkins.io/redhat-stable/jenkins.io.key

# yum install jenkins -y

start Jenkins service

# systemctl start jenkins

Login Jenkins
unlock Jenkins

# cat /var/lib/jenkins/secrets/initialAdminPassword

จากนั้นทำการ copy password ไปกรอกผ่านหน้า website
install Jenkins plugins

เมื่อ install plugins เสร็จก็ให้ทุกคน Create user สำหรับทำ operation ต่างๆ ผ่าน Jenkins ค่ะ

ส่วนนี้เป็นการกำหนด URL สำหรับการเข้าถึง Jenkins Management ค่ะ

Jenkins is ready! เย้ เย้

นี่ก็คือหน้าตา Dashboard ของ Jenkins ที่จะเป็นฐานบัญชาการสั่งทำงานแบบ Automation ค่ะ อิ้อิ้

และอย่าลืม install GitHub plugins ให้กับ คุณลุง Jenkins แกด้วยนะคะ เพราะเราจะทำการ clone scripts จาก GitHub มาค่ะ โดยไปที่เมนู Manage Jenkins

เลือก Manage Plugins

เลือกที่ Available tab และ search หา GitHub คราวนี้เตยเลือกแค่ plugin หลักๆ คือ GitHub Pull Request Coverage Status และ GitHub Integration เลือก download now and install after restart จ้าาา

เลื่อนลงมาข้างล่างแล้วเลือก เครื่องหมายถูก ให้ restart Jenkins ด้วยนะคะ เมื่อ download เสร็จก็ให้คลิก go back to the top page

ระหว่างนี้ไป prepare step ถัดไปกันค่ะ

Transfer oracle database 18c software Zip file to node

pscp.exe C:\Users\Suphisara\Desktop\oracle_database_18c\LINUX.X64_180000_db_home.zip root@172.20.10.3:/home/

Push script to GitHub

git status

git add .

git status

git commit -m “please work”

git push origin master

login GitHub

สามารถ clone git คลิกที่นี่ และนำ script มาปรับให้เหมาะสมตาม environment ที่ต้องการใช้ได้เลยค่ะ

Scripts ที่ถูก push ขึ้นไปบน GitHub จ้าาาา

เลือกที่ create new jobs

เลือก freestyle project และตั้งชื่อ ครั้งนี้เตยจะสร้าง Project ไว้ 2 Project นะคะ

  1. Automate_Install_SW18c : สำหรับการติดตั้งครั้งแรก โดยคำสั่งภายในจะเป็นการเรียก script เพื่อ install oracle database software และสร้าง database ตัวที่ 1 ชื่อว่า jelly1
Project : Automate_Install_SW18c

โดยเราจะตั้งค่าลำดับการทำงานของ Jenkins ในการเรียก Scripts แต่ละตัวจากส่วนที่เป็น Build แบบ Execute Shell และใส่คำสั่งในการเรียก scripts ดังนี้

#1
#transfer file oracle18c.zip to /home/
#by using cmd
#pscp.exe C:\Users\Suphisara\Desktop\oracle_database_18c\LINUX.X64_180000_db_home.zip root@172.20.10.3:/home/

#put all script into github
#by using git bash
# git status
# git add .
# git status
# git commit -m “please work”
# git push origin master
# login GitHub

#2
#prepare clone script from git

echo P@ssw0rd | su root bash -c ‘mkdir /home/git_scripts’
echo P@ssw0rd | su root bash -c ‘yum install git -y’
echo P@ssw0rd | su root bash -c ‘git clone https://github.com/kulico/automate_install_sw_18c /home/git_scripts’

#3
#prepare environment for oracle

echo P@ssw0rd | su root bash -c ‘sh /home/git_scripts/control_script1.sh’

#4
#Install software 18c

echo welcome1 | su oracle bash -c ‘sh /home/git_scripts/runinstaller.sh’
echo P@ssw0rd | su root bash -c ‘sh /home/git_scripts/control_script2.sh’

#5
#Create database 18c

echo welcome1 | su oracle bash -c ‘sh /home/git_scripts/rundbca.sh’

#6
#listener

echo welcome1 | su oracle bash -c ‘sh /home/oracle/scripts/start_lsnrctl.sh’

echo Database 18c is Ready to use !!

2. Automate_Create_DB : สำหรับการติดตั้งครั้งที่ 2 ขึ้นไป โดยคำสั่งภายในจะเป็นการเรียก script เพื่อสร้าง oracle database โดยจะมีการนับจำนวนครั้งในการสร้างเพื่อนำจำนวนดังกล่าวไปสร้างเป็นชื่อ database เพื่อไม่ให้ชื่อซ้ำกัน โดย database จะมีชื่อว่า jelly[n] ** n แทนตัวเลขจำนวนครั้งที่ counter นับไว้

Project : Automate_Create_DB

โดยเราจะตั้งค่าลำดับการทำงานของ Jenkins ในการเรียก Scripts แต่ละตัวจากส่วนที่เป็น Build แบบ Execute Shell และใส่คำสั่งในการเรียก scripts ดังนี้

#Create database 18c

echo welcome1 | su oracle bash -c ‘sh /home/git_scripts/rundbca_generate.sh’

#listener

echo welcome1 | su oracle bash -c ‘sh /home/oracle/scripts/start_lsnrctl.sh’

echo Database 18c is Ready to use !!

NOTE1: Password Oracle คือ welcome1 , Password Root คือ P@ssw0rd
NOTE2: Password SYS , SYSTEM ของ database คือ welcome1
สามารถแก้ไข password หลังจากสร้าง database แล้ว หรือสามารถแก้ไขใน script ก่อน execute Jenkins ค่ะ

Run Jenkins for Automation Install and Create Oracle Database 18c

เมื่อเราสร้าง Job ไว้ จะเห็น Job อยู่ที่หน้า Dashboard แบบนี้ค่ะ

คลิกเข้าไปใน Job จะเจอปุ่ม Build Now ที่ซ้ายมือ ถ้าต้องการแก้ไขคำสั่ง Execute shell ก็สามารถเข้าไปที่เมนู configure

ตัวอย่างจาก project : Automate_Create_DB

เมื่อสั่ง Build Now แล้วจะเกิด status การทำงานอยู่ที่ช่อง Build History สามารถคลิกเข้าไปดู console ขณะกำลัง Build เพื่อ Monitor การทำงานหากมีความผิดพลาด status จะเป็นสีแดง หากสำเร็จ status จะเป็นสีฟ้า และ status จะเป็นสีเหลือง กรณีที่บางคำสั่งทำงานไม่สมบูรณ์

ภายในหน้า console จะแสดงผลการทำงานเป็น log แบบนี้ค่ะ

เมื่อเสร็จ ก็จะมีคำว่า “Database 18c is Ready to use !!” ตามที่เรากำหนดไว้ใน Execute shell

ทดสอบ status และ connection oracle จาก Linux host และ Windows host

เมื่อ คุณลุง Jenkins บอกว่าติดตั้งเสร็จแล้ว เราก็ไปลอง Connect Database กันค่ะ

ตรวจสอบ process pmon ของ Database

$ ps -ef | grep pmon

ตรวจสอบ status ของ listener database

$ lsnrctl status

Connect Database ภายในเครื่อง VM

Export ORACLE_SID = jelly[n]

$ sqlplus / as sysdba

Easy connect จากเครื่อง Host (Windows 10)

sqlplus sys/welcome1@172.20.10.3:1521/jelly[n] as sysdba

เป็นยังไงกันบ้างคะ แค่สั่ง Build Now คลิกเดียว ก็มี Oracle Database พร้อมใช้งานอยู่ในเครื่องเลย

ประโยชน์และลูกเล่นของ Jenkins ยังมีอีกเยอะมากเลยนะคะ สามารถไปลองเล่นกันได้ สำหรับใครที่แวะเข้ามาชม Blog นี้และอยากจะแชร์ความรู้หรือแนะนำวิธีการใช้งาน Jenkins แบบ Advance แสดงความคิดเห็นมาได้เลยนะคะ

DBA ตัวน้อยๆ คนนี้ที่พึ่งหัดใช้ Jenkins เป็น ยินดีรับคำแนะนำเสมอค่ะ แล้วพบกันใหม่ Blog หน้านะคะ สวัสดีค่ะ :3

reference all cute icon from https://www.flaticon.com

--

--