OpenStack Class2015.02.27 23:21

안녕하세요~!! 

왜 이리도 바쁜지 블로그에 글을 올릴 시간이 없네요~!! 좋은 것이겠죠~!! ^^ 오늘은 안되겠다 생각이 들어서 이렇게 밤 늦게라도 시간을 내어서 글을 올려볼까 합니다. 

오늘은 지난시간에 이어 Keystone 설치에 관련된 글을 올려볼까 합니다. yum install로 설치를 하고 vi가 아님 openstack-config를 이용하여 환경설정을 한다는 부분이 ubuntu의 apt-get install과 다른 부분입니다. 그외에 환경설정 내용이나 사용법은 같다고 보시면 됩니다.

Keystone 설치

메시지 서비스를 설치했다면 이번에는 Keystone을 설치할 차례입니다. Keystone은 오픈스택 서비스의 인증을 담당하는 서비스로써 테넌트, 사용자, , 서비스와 endpoint를 관리합니다.

 

1.     yum install을 이용해서 openstack-keystone python-keystoneclient를 설치합니다.

# yum install openstack-keystone python-keystoneclient

 

2.     레드햇이나 CentOS는 우분투와 다르게 환경설정을 해주는 openstack-config라는 명령어를 지원합니다. Openstack-config 명령을 이용해서 다음과 같이 데이터베이스 정보를 변경합니다.

# openstack-config --set /etc/keystone/keystone.conf \
   database connection mysql://keystone:keystonedbpass@10.10.15.11/keystone


3.     이번에는 mysql에 접속해서 keystone 데이터베이스와 사용자 계정 및 패스워드 그리고 접속권한을 함께 생성합니다.

# mysql -u root -p
mysql> CREATE DATABASE keystone;
Query OK, 1 row affected (0.01 sec)
 
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY ‘keystonedbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'keystonedbpass';
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Bye

 

4.     Keystone 계정 생성이 완료되면 keystone에서 필요한 테이블을 만들어야 합니다. 테이블 생성은 keystone-manage db_sync 명령을 이용합니다.

# su -s /bin/sh -c "keystone-manage db_sync" keystone

 

5.     keystoneadmin token을 설정하기 위해 openssl rand 명령어를 이용해서 생성된 임의의 문자열을 ADMIN_TOKEN에 저장합니다. 그리고 ADMIN_TOKEN에 저장된 문자열은 openstack_config 명령어로 /etc/keystone/keystone.conf 파일의 admin_token에 설정합니다.

# ADMIN_TOKEN=$(openssl rand -hex 10) # echo $ADMIN_TOKEN dc387ae9520f5b69f643 # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

 

6.     Keystone은 기본적으로 PKI 토큰을 사용합니다. 그러므로 keystone-manage를 이용해서 PKI Key와 인증서를 생성하고, 생성된 /etc/keystone/ssl은 아무나 접근할 수 없도록 액세스를 제한합니다.

# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
Generating RSA private key, 2048 bit long modulus
......................................................................................................+++
.............................................................+++
e is 65537 (0x10001)
Generating RSA private key, 2048 bit long modulus
................+++
.............+++
e is 65537 (0x10001)
Using configuration from /etc/keystone/ssl/certs/openssl.conf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :ASN.1 12:'Unset'
localityName          :ASN.1 12:'Unset'
organizationName      :ASN.1 12:'Unset'
commonName            :ASN.1 12:'www.example.com'
Certificate is to be certified until Jun 12 17:10:09 2024 GMT (3650 days)
 
Write out database with 1 new entries
Data Base Updated
# chown -R keystone:keystone /etc/keystone/ssl
# chmod -R o-rwx /etc/keystone/ssl

 

7.     SSL PKI Key 설정이 완료되면 keystone 서비스를 재시작하고, 부팅 시 서비스가 자동 실행될 수 있도록 설정합니다.

# service openstack-keystone start
Starting keystone:                                         [  OK  ]
# chkconfig openstack-keystone on

 

 keystone 사용자, 테넌트, 롤 그리고 endpoint 생성

keystone 설치가 완료되면 keystone를 접근하기 위한 사용자, 테넌트, 롤과 서비스, endpoint를 생성해야 합니다.

 

1.     우선 OS_SERVICE_TOKENOS_SERVICE_ENDPOINTexport합니다.

# export OS_SERVICE_TOKEN=$ADMIN_TOKEN
# export OS_SERVICE_ENDPOINT=http://10.10.15.11:35357/v2.0

 

2.     keystone user-create 명령어를 이용해서 다음과 같이 admin 사용자 계정, 패스워드, 이메일을 입력하고 admin 계정을 생성합니다.

# keystone user-create --name=admin --pass=adminpass --email=admin@email.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |         admin@email.com          |
| enabled  |               True               |
|    id    | 7bc1bda9d2444b9c92554ff9e0b71e22 |
|   name   |              admin               |
| username |              admin               |
+----------+----------------------------------+

 

3.     admin 롤을 생성합니다.

# keystone role-create --name=admin
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|    id    | 02ff77d31ec841b3914db4c3daca4f1c |
|   name   |              admin               |
+----------+----------------------------------+

 

4.     이번에는 admin 테넌트를 생성합니다.

# keystone tenant-create --name=admin --description="Admin Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Admin Tenant           |
|   enabled   |               True               |
|      id     | dbd8df87e5c34536844d915b555061b6 |
|     name    |              admin               |
+-------------+----------------------------------+

 

5.     Admin 테넌트와 member 테넌트에 admin 사용자 계정과 롤을 추가합니다.

# keystone user-role-add --user=admin --tenant=admin --role=admin # keystone user-role-add --user=admin --tenant=admin --role=_member_

 

6.     이번에는 demo 계정을 다음과 같이 생성합니다.

# keystone user-create --name=demo --pass=demopass --email=demo@email.com
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
|  email   |          demo@email.com          |
| enabled  |               True               |
|    id    | 129a943bc94b43379a794ae011a87fe9 |
|   name   |               demo               |
| username |               demo               |
+----------+----------------------------------+

 

7.     Demo 테넌트도 생성합니다.

# keystone tenant-create --name=demo --description="Demo Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |           Demo Tenant            |
|   enabled   |               True               |
|      id     | afa084dced1e4d70b479dac82ea659ac |
|     name    |               demo               |
+-------------+----------------------------------+

 

8.     생성한 Demo 계정을 Demo 테넌트에 추가하고 롤은 member를 설정합니다.

# keystone user-role-add --user=demo --role=_member_ --tenant=demo

 

9.     이번에는 오픈스택 서비스를 위한 서비스 테넌트를 다음과 같이 생성합니다.

# keystone tenant-create --name=service --description="Service Tenant"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |          Service Tenant          |
|   enabled   |               True               |
|      id     | 31303ac56ece4fbc85bb16074adfc9cb |
|     name    |             service              |
+-------------+----------------------------------+

 

10.  서비스 테넌트가 생성되면 이번에는 keystone 서비스를 다음과 같이 생성합니다.

# keystone service-create --name=keystone --type=identity \
  --description="OpenStack Identity"
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description |        OpenStack Identity        |
|   enabled   |               True               |
|      id     | 4fdf89fb665d44f7bf0dd053e8dfadef |
|     name    |             keystone             |
|     type    |             identity             |
+-------------+----------------------------------+

 

11.  생성된 Keystone 서비스는 사용자나 다른 서비스가 접속할 수 있도록 Rest API 주소를 생성합니다. 필요한 파라메터는 생성한 서비스의 ID, 외부 접속 Public URL, 내부 접속 Internal URL, 관리자가 접속할 Admin URL로 이루어집니다.

# keystone endpoint-create \
  --service-id=4fdf89fb665d44f7bf0dd053e8dfadef \
  --publicurl=http://10.10.15.11:5000/v2.0 \
  --internalurl=http://10.10.15.11:5000/v2.0 \
  --adminurl=http://10.10.15.11:35357/v2.0
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
|   adminurl  |  http://10.10.15.11:35357/v2.0   |
|      id     | 27fd1214abd24430b18045b835885f6b |
| internalurl |   http://10.10.15.11:5000/v2.0   |
|  publicurl  |   http://10.10.15.11:5000/v2.0   |
|    region   |            regionOne             |
|  service_id | 4fdf89fb665d44f7bf0dd053e8dfadef |
+-------------+----------------------------------+

 

12.  endpoint URL 생성이 완료되면 admin 계정을 생성할 때 추가했던 OS_SERVICE_TOKENOS_SERVICE_ENDPOINT를 환경변수에서 해제합니다.

# unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

 

13.  이제 keystone 서비스가 정상적으로 실행되는지 테스트합니다. 이때 환경변수를 쉽게 편집하기 위해 vi 에디터로 파일에 저장해두면 좋습니다.

# vi admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=adminpass
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://10.10.15.11:35357/v2.0

 

14.  Vi 에디터로 만든 환경변수 설정 파일은 다음과 같이 source export할 수 있습니다.

# source admin-openrc.sh

 

15.  이제 파라메터 없이 바로 token을 얻어와 보겠습니다.

# keystone token-get
+-----------+----------------------------------------------------------------------+
|  Property |  Value                                                               |
+-----------+----------------------------------------------------------------------+
|  expires  |  2014-06-15T19:00:15Z                                                |
|     id    | MIIE7QYJKoZIhvcNAQcCoIIE3jCCBNoCAQExCTAHBgUrDgMCGjCCA0MGCSqGSIb3DQEHAa
CCAzQEggMweyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNC0wNS0yN1QwODoxMzo0Mi
4xNTA0MDUiLCAiZXhwaXJlcyI6ICIyMDE0LTA1LTI3VDA5OjEzOjQyWiIsICJpZCI6ICJwbGFjZWhvbGRlci
IsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogIkFkbWluIFRlbmFudCIsICJlbmFibGVkIjogdHJ1ZSwgIm
lkIjogIjcxNzVlZmQ0ZDIyZTQxYWE4OTAzYjBjYWI0NWZmYWE2IiwgIm5hbWUiOiAiYWRtaW4ifX0sICJzZX
J2aWNlQ2F0YWxvZyI6IFt7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC4xMC4xNS4xMT
ozNTM1Ny92Mi4wIiwgInJlZ2lvbiI6ICJyZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEwLj
EwLjE1LjExOjUwMDAvdjIuMCIsICJpZCI6ICIyNGUzMmJkYzBmYTg0NzU1ODk4Y2M5ZWIyZjg5ZTg4NiIsIC
JwdWJsaWNVUkwiOiAiaHR0cDovLzEwLjEwLjE1LjExOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcy
I6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm
5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjRkZjcwZWJhYWI2YjQxNzg4NzE0MT
c3MmRiZDJhY2EwIiwgInJvbGVzIjogW3sibmFtZSI6ICJtZW1iZXIifSwgeyJuYW1lIjogImFkbWluIn1dLC
AibmFtZSI6ICJhZG1pbiJ9LCAibWV0YWRhdGEiOiB7ImlzX2FkbWluIjogMCwgInJvbGVzIjogWyIzZWVhMm
IwODMyZWM0OTlkOTYyZTRjZjE4NzJlNzJiOSIsICI4MmI0OWU1NjE5ZjU0MzU3YmY1ZjYzN2M1MWRjZmUyZC
JdfX19MYIBgTCCAX0CAQEwXDBXMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVW5zZXQxDjAMBgNVBAcMBVVuc2
V0MQ4wDAYDVQQKDAVVbnNldDEYMBYGA1UEAwwPd3d3LmV4YW1wbGUuY29tAgEBMAcGBSsOAwIaMA0GCSqGSI
b3DQEBAQUABIIBAMzeUbt-hokRop8qGVRN7L1BMHpDkh7UaUAK62ThFSV3ydu2zXR8tMGZcSS3lTxIL-0mrt
oun44p2lX9x+9OPNldPKlC39cgyCOnyFqb5kkdteXuD8JJiFq0klyNPzRtjKr6Vxxb4C3Xjf9tLJnzCuZKYB
I9-F+oad0EOoaolLG-RNmD56AdGq3Qnly8MPi3EWeCIbHqTvXrVwBgOYUSYdUk32qEacw7atjxB1NdRzTpsm
m7I261iEKhFTvBfCwQf6PH0AeNHSwpDIgQtJ6f6dlKJAKyKV1puFxUytymmPoLc3t9-IGB-rRDsOUnESGO3E
i11oQrv+FLGZ+62hGORjI=                                                             |
| tenant_id | 7175efd4d22e41aa8903b0cab45ffaa6                                     |
|  user_id  | 4df70ebaab6b417887141772dbd2aca0                                     |
+-----------+----------------------------------------------------------------------+

 

16.  사용자 목록도 확인해 봅니다.

# keystone user-list
+----------------------------------+-------+---------+-----------------+
|                id                |  name | enabled |      email      |
+----------------------------------+-------+---------+-----------------+
| 7bc1bda9d2444b9c92554ff9e0b71e22 | admin |   True  | admin@email.com |
| 129a943bc94b43379a794ae011a87fe9 |  demo |   True  |  demo@email.com |
+----------------------------------+-------+---------+-----------------+

 

17.  사용자가 가지고 있는 롤 목록도 확인해 봅니다.

# keystone user-role-list
+----------------------------------+-------+----------------------------------+----------------------------------+
|                id                |  name |             user_id              |            tenant_id             |
+----------------------------------+-------+----------------------------------+----------------------------------+
| 02ff77d31ec841b3914db4c3daca4f1c | admin | 7bc1bda9d2444b9c92554ff9e0b71e22 | dbd8df87e5c34536844d915b555061b6 |
+----------------------------------+-------+----------------------------------+----------------------------------+



이렇게 해서 Keystone을 설치해 보았습니다. 다음번 포스팅에서는 Glance와 Nova를 설치해 보도록 하겠습니다.

Posted by 나리 짱!!! naleejang