CentOS에서 OpenStack Grizzly를 간단하게 설치하는 방법입니다.
본 글에서는 CentOS 6.4에서 테스트 되었으며 Control Node와 Compute Node를 나누고,
각각의 NIC는 2개씩 만들어 Public 네트워크와 Private 네트워크를 사용하도록 설정 하였습니다.

Control Node에서는 MySQL, RabbitMQ, Keystone, Glance, Nova Networking, Swift-Proxy, Horizon, Nagios가 설치 되고,

         Control Node
┌─────┴──────┐┌ Database (MySQL)
│    eth0 – public         ├┼ Queues (RabbitMQ)
│    eth1 – private        ├┼ Keystone, Glance, Nova Networking, Swift-Proxy
└────────────┘└ Dashboard (Horizon), Nagios

Compute Node에서는 KVM, Nova-Compute, Cinder, Swift가 설치 됩니다.

         Compute Node
┌─────┴──────┐┌ Hypervisor (KVM)
│    eth0 – public         ├┼ Nova-Compute
│    eth1 – private        ├┼ Cinder
└────────────┘└ Swift

각각의 노드 별로 사용될 Public IP

Control Node – Public IP : 192.168.32.44
Compute Node – Public IP : 192.168.32.48

 

1. 공통 설정
Control Node와 Compute Node를 아래와 같이 동일하게 설정 합니다.

selinux를 비활성화 합니다.

[root@control ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/sysconfig/selinux

openstack-packstack 패키지를 설치 합니다.

[root@control ~]# rpm -ivh http://rdo.fedorapeople.org/openstack/openstack-grizzly/rdo-release-grizzly-2.noarch.rpm
[root@control ~]# yum install -y openstack-packstack

ntp로 실제 시간을 맞춥니다.

[root@control ~]# yum install -y ntp
[root@control ~]# chkconfig ntpd on
[root@control ~]# ntpdate pool.ntp.org
[root@control ~]# /etc/init.d/ntpd start

 

2. Grizzly 설정 파일 생성
packstack을 이용해서 Control Node와 Compute Node를 설치 할수 있도록 설정 파일을 생성합니다.
(이 작업은 Control Node에서만 합니다.)

[root@control ~]# packstack –gen-answer-file=/root/grizzly_openstack.cfg

생성된 설정 파일에서 필요한 부분을 사용자 환경에 맞게 설정합니다.

[root@control ~]# nano grizzly_openstack.cfg

# Control Node 부분
CONFIG_CINDER_HOST=192.168.32.44
CONFIG_NOVA_COMPUTE_HOSTS=192.168.32.44
CONFIG_SWIFT_STORAGE_HOSTS=192.168.32.44

# Compute Node 부분
CONFIG_SWIFT_PROXY_HOSTS=192.168.32.48

 

3. Control Node & Compute Node 설치
packstack으로 생성한 설정파일을 기반으로 Control Node와 Compute Node를 원격으로 설치를 진행합니다.
(SSH를 이용하여 원격으로 설치를 진행 하기 때문에 진행중에 Control Node와 Compute Node의 비밀번호를 요구 합니다.)

[root@control ~]# packstack –answer-file=/root/grizzly_openstack.cfg

Welcome to Installer setup utility
Packstack changed given value  to required value /root/.ssh/id_rsa.pub

Installing:
Clean Up…                                            [ DONE ]
Adding pre install manifest entries…                 [ DONE ]
Setting up ssh keys…root@192.168.32.48’s password:
root@192.168.32.44’s password:
[ DONE ]
Adding MySQL manifest entries…                       [ DONE ]
Adding QPID manifest entries…                        [ DONE ]
Adding Keystone manifest entries…                    [ DONE ]
Adding Glance Keystone manifest entries…             [ DONE ]
Adding Glance manifest entries…                      [ DONE ]
Adding Cinder Keystone manifest entries…             [ DONE ]
Installing dependencies for Cinder…                  [ DONE ]
Checking if the Cinder server has a cinder-volumes vg…[ DONE ]
Adding Cinder manifest entries…                      [ DONE ]
Adding Nova API manifest entries…                    [ DONE ]
Adding Nova Keystone manifest entries…               [ DONE ]
Adding Nova Cert manifest entries…                   [ DONE ]
Adding Nova Conductor manifest entries…              [ DONE ]
Adding Nova Compute manifest entries…                [ DONE ]
Adding Nova Scheduler manifest entries…              [ DONE ]
Adding Nova VNC Proxy manifest entries…              [ DONE ]
Adding Nova Common manifest entries…                 [ DONE ]
Adding Openstack Network-related Nova manifest entries…[ DONE ]
Adding Quantum API manifest entries…                 [ DONE ]
Adding Quantum Keystone manifest entries…            [ DONE ]
Adding Quantum L3 manifest entries…                  [ DONE ]
Adding Quantum L2 Agent manifest entries…            [ DONE ]
Adding Quantum DHCP Agent manifest entries…          [ DONE ]
Adding Quantum Metadata Agent manifest entries…      [ DONE ]
Adding OpenStack Client manifest entries…            [ DONE ]
Adding Horizon manifest entries…                     [ DONE ]
Preparing servers…                                   [ DONE ]
Adding post install manifest entries…                [ DONE ]
Installing Dependencies…                             [ DONE ]
Copying Puppet modules and manifests…                [ DONE ]
Applying Puppet manifests…
Applying 192.168.32.48_prescript.pp
Applying 192.168.32.44_prescript.pp
192.168.32.44_prescript.pp :                                         [ DONE ]
192.168.32.48_prescript.pp :                                         [ DONE ]
Applying 192.168.32.48_mysql.pp
Applying 192.168.32.48_qpid.pp
192.168.32.48_mysql.pp :                                             [ DONE ]
192.168.32.48_qpid.pp :                                              [ DONE ]
Applying 192.168.32.48_keystone.pp
Applying 192.168.32.48_glance.pp
Applying 192.168.32.44_cinder.pp
192.168.32.44_cinder.pp :                                            [ DONE ]
192.168.32.48_keystone.pp :                                          [ DONE ]
192.168.32.48_glance.pp :                                            [ DONE ]
Applying 192.168.32.48_api_nova.pp
192.168.32.48_api_nova.pp :                                          [ DONE ]
Applying 192.168.32.48_nova.pp
Applying 192.168.32.44_nova.pp
192.168.32.48_nova.pp :                                              [ DONE ]
192.168.32.44_nova.pp :                                              [ DONE ]
Applying 192.168.32.44_quantum.pp
Applying 192.168.32.48_quantum.pp
192.168.32.44_quantum.pp :                                           [ DONE ]
192.168.32.48_quantum.pp :                                           [ DONE ]
Applying 192.168.32.48_osclient.pp
Applying 192.168.32.48_horizon.pp
192.168.32.48_osclient.pp :                                          [ DONE ]
192.168.32.48_horizon.pp :                                           [ DONE ]
Applying 192.168.32.48_postscript.pp
Applying 192.168.32.44_postscript.pp
192.168.32.44_postscript.pp :                                        [ DONE ]
192.168.32.48_postscript.pp :                                        [ DONE ]
[ DONE ]

**** Installation completed successfully ******

Additional information:
* Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
* Did not create a cinder volume group, one already existed
* To use the command line tools you need to source the file /root/keystonerc_admin created on 192.168.32.48
* To use the console, browse to http://192.168.32.48/dashboard
* Kernel package with netns support has been installed on host 192.168.32.44. Please note that with this action you are losing Red Hat support for this host. Because of the kernel

update the host mentioned above requires reboot.
* Kernel package with netns support has been installed on host 192.168.32.48. Please note that with this action you are losing Red Hat support for this host. Because of the kernel

update the host mentioned above requires reboot.
* The installation log file is available at: /var/tmp/packstack/20130831-034655-KptNMC/openstack-setup.log

 

Control Node와 Compute Node가 설치가 완료 되었습니다.
이제 Dashboard(Horizon)을 해당 Compute Node의 Public IP로 접속 합니다.

http://192.168.32.48/dashboard

 

초기 아이디는 admin이며 비밀번호는 아래를 참고하여 로그인 하시면 됩니다.

[root@ruo91 ~]# cat /root/grizzly_openstack.cfg  | grep -i CONFIG_KEYSTONE_ADMIN_PW

CONFIG_KEYSTONE_ADMIN_PW=fe9c14937df74e6a

Dashboard에서 System info 부분입니다. 모두 정상적으로 활성화 되어 있네요.
openstack

사용자가 인스턴스를 생성 할때 사용할 이미지 파일을 Import 할수 있는 곳입니다. 여러가지 이미지 Format 형식을 지원합니다.

AKI – Amazon Kernel Image
AMI – Amazon Machine Image
ARI – Amazon Ramdisk Image
ISO – Optical Disk Image
QCOW2 – QEMU Emulator
Raw
VDI
VHD
VMDK

openstack2

실제로 인스턴스를 생성 할수 있습니다. 생성하려면 먼저 Image가 import 되어야 생성 할수 있습니다. 😀
openstack3

OpenStack 설치는 여기서 끝입니다. 감사합니다. 😀