티스토리 뷰
[OpenStack Class] 제32강 서비스가 가능한 오픈스택 설치4편 - 컨트롤러 노드 설치2
naleejang 2014. 12. 1. 16:54안녕하세요~!!
오늘은 날씨가 매우 춥습니다. 아침엔 눈도 내렸구요~!! 바람도 쌩쌩 불어요. 이제 겨울이 성큼 우리들 앞으로 온 것만 같습니다. 이럴때일수록 옷도 따뜻하게 입고, 마음도 따뜻하게 가져야 할 것 같습니다. 이제 2014년도 한달밖에 남지 않았습니다. 한해를 잘 마무리하고 다가오는 새해를 잘 맞이해야겠죠~!! 그런 의미로 오늘은 지난시간에 이어 Keystone을 설치해 볼까합니다.
그럼, 시작해 볼까요~!!
Keystone 설치
오픈스택의 모든 서비스를 사용하려면 인증이 필요합니다. 인증은 Keystone이 담당하며, 오픈스택 서비스 중 가장 먼저 설치되는 서비스입니다.
1. apt-get을 이용하여 keystone을 설치합니다.
$ sudo apt-get install keystone python-keystoneclient |
** "오픈스택을 다루는 기술"에서 python-keystoneclient 설치부분을 설치해야 하는데 설치하지 않고 keystone만 설치하도록 되어 있었습니다. Keystone User 생성이 잘 되지 않는다며 어느 독자분께서 메일을 주셔서 확인해 보니, python-keystoneclient 설치 부분이 빠져 있었습니다. 아마도 편집하는 과정에서 누락이 있었던 것 같습니다 . 이번에도 역시 넓은 마음으로 이해해 주시면 정말정말 감사하겠습니다~!!
2. Keystone 설치가 완료되면 keystone.conf 파일의 데이터베이스 파트를 수정합니다. keystone.conf 파일의 기본 데이터베이스가 sqlite3로 되어 있는데, mysql을 사용할 것이므로 설치할 mysql 정보를 입력합니다.
$ sudo vi /etc/keystone/keystone.conf
...
[database]
#
# Options defined in keystone.openstack.common.db.options
#
connection = mysql://keystone:keystonedbpass@10.10.15.11/keystone
... |
3. 이제 기본 데이터베이스는 mysql이므로 불필요한 keystone.db 파일은 삭제합니다.
$ sudo rm /var/lib/keystone/keystone.db |
4. 환경설정이 완료되면 mysql에 접속해서 keystone 데이터베이스와 사용자 계정 및 패스워드를 생성합니다. 이때 사용자 계정은 현재 설치되어 있는 컨트롤러 노드와 다른 노드에서도 접근할 수 있도록 권한을 할당합니다.
$ mysql -u root -p
mysql> CREATE DATABASE keystone;
Query OK, 1 row affected (0.00 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 |
5. Keystone 계정 생성이 완료되면 keystone에서 필요한 테이블을 만들어야 합니다. 테이블 생성은 keystone-manage db_sync 명령을 이용합니다.
$ sudo su -s /bin/sh -c "keystone-manage db_sync" keystone |
6. Keystone은 admin token이 필요한데 openssl rand 명령을 이용해서 생성된 임의의 문자열을 사용합니다.
$ openssl rand -hex 10
527e30fb91e0720d6105 |
7. 생성한 임의의 문자열은 /etc/keystone/keystone.conf 파일의 admin_token에 입력합니다. 그리고 log_dir을 다음과 같이 설정합니다.
$ sudo vi /etc/keystone/keystone.conf
[DEFAULT]
…
admin_token = 527e30fb91e0720d6105 #ADMIN_TOKEN
…
log_dir = /var/log/keystone |
8. 환경설정이 완료되면 keystone 서비스를 재 시작합니다.
$ sudo service keystone restart |
Keystone 설치 많이 어렵지 않죠? ^^
keystone 사용자, 테넌트, 롤 그리고 endpoint 생성
keystone 설치가 완료되면 오픈스택의 다른 서비스를 설치하고 사용하기 위해서 사용자, 테넌트, 롤, endpoint를 생성해야 합니다. 그럼 지금부터 하나씩 생성하겠습니다.
1. OS_SERVICE_TOKEN과 OS_SERVICE_ENDPOINT를 export합니다.
$ export OS_SERVICE_TOKEN=527e30fb91e0720d6105 #이건 ADMIN_TOKEN이예요
$ export OS_SERVICE_ENDPOINT=http://10.10.15.11:35357/v2.0 |
2. keystone user-create 명령어로 다음과 같이 사용자 계정, 패스워드, 이메일을 입력해서 admin 계정을 생성합니다.
|
3. 이번에는 admin 롤을 다음과 같이 생성합니다.
$ keystone role-create --name=admin
+----------+------------------------------------------+
| Property | Value |
+----------+------------------------------------------+
| id | 82b49e5619f54357bf5f637c51dcfe2d |
| name | admin |
+----------+------------------------------------------+ |
4. Member 롤도 생성합니다.
$ keystone role-create --name=member +----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| id | 3eea2b0832ec499d962e4cf1872e72b9 |
| name | member |
+----------+----------------------------------+ |
5. Admin 사용자와 롤 생성이 완료되었으면 admin 테넌트를 다음과 같이 생성합니다.
$ keystone tenant-create --name=admin --description="Admin Tenant" +-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Admin Tenant |
| enabled | True |
| id | 7175efd4d22e41aa8903b0cab45ffaa6 |
| name | admin |
+-------------+----------------------------------+ |
6. Admin 테넌트에 admin 사용자 계정과 admin 롤을 추가합니다.
$ keystone user-role-add --user admin --role admin --tenant admin |
7. 이번에는 admin 테넌트에 admin 사용자 계정과 member 롤을 추가합니다.
$ keystone user-role-add --user admin --role member --tenant admin |
8. 다시 처음으로 돌아와 demo 계정을 다음과 같이 생성합니다.
$ keystone user-create --name=demo --pass=demopass --email=demo@email.com +----------+----------------------------------+
| Property | Value |
+----------+----------------------------------+
| email | demo@email.com |
| enabled | True |
| id | a9f042c03887419c95c1f75a0788668f |
| name | demo |
| username | demo |
+----------+----------------------------------+ |
9. Demo 테넌트도 생성합니다.
$ keystone tenant-create --name=demo --description="Demo Tenant" +-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Demo Tenant |
| enabled | True |
| id | 479ed5a7670c4215981ffbf231b923cc |
| name | demo |
+-------------+----------------------------------+ |
10. 방금 생성한 Demo 계정은 Demo 테넌트에 추가하고 롤은 member를 설정합니다.
$ keystone user-role-add --user=demo --role=member --tenant=demo |
11. 이번에는 오픈스택 서비스를 위한 서비스 테넌트를 다음과 같이 생성합니다.
$ keystone tenant-create --name=service --description="Service Tenant" +-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Service Tenant |
| enabled | True |
| id | 850e02e81d02499eaf1e726147ac0640 |
| name | service |
+-------------+----------------------------------+ |
12. 서비스 테넌트가 생성되면 이번에는 keystone 서비스를 다음과 같이 생성합니다.
$ keystone service-create --name=keystone \n
--type=identity \n
--description="OpenStack Identity" +-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | OpenStack Identity |
| enabled | True |
| id | 09a4291a19d24cff9aa8377a4383f750 |
| name | keystone |
| type | identity |
+-------------+----------------------------------+ |
13. 생성된 서비스는 사용자나 다른 서비스가 접속할 수 있도록 Rest API 주소를 생성합니다. 이때 필요한 파라메터는 방금 생성한 서비스의 ID, 외부에서 접속되는 Public URL, 내부에서 접속할 Internal URL, 관리자가 접속할 Admin URL로 이루어집니다.
$ keystone endpoint-create --service_id=09a4291a19d24cff9aa8377a4383f750 \n
--publicurl=http://10.10.15.11:5000/v2.0 \n
--internalurl=http://10.10.15.11:5000/v2.0 \n
--adminurl=http://10.10.15.11:35357/v2.0 +-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://10.10.15.11:35357/v2.0 |
| id | 5c5ba0e744a54aebb8781192a2c22cf2 |
| internalurl | http://10.10.15.11:5000/v2.0 |
| publicurl | http://10.10.15.11:5000/v2.0 |
| region | regionOne |
| service_id | 09a4291a19d24cff9aa8377a4383f750 |
+-------------+----------------------------------+ |
14. EndPoint URL까지 생성이 잘 되었으면 admin 계정을 생성할 당시 추가했던 OS_SERVICE_TOKEN과 OS_SERVICE_ENDPOINT를 환경변수에서 해제합니다.
$ unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT |
15. Keystone 서비스가 정상적으로 실행되는지 테스트하려면 username, password, auth-url을 입력하고 token을 달라는 명령어를 실행합니다. 이때 auth-url은 앞서 생성한 EndPont URL을 입력합니다. Token이 정상적으로 발급된다면 keystone이 정상적으로 설치된 것입니다.
$ keystone --os-username=admin --os-password=adminpass
--os-auth-url=http://10.10.15.11:35357/v2.0 token-get +----------+-----------------------------------------------------------------------+
| Property | Value |
+----------+-----------------------------------------------------------------------+
| expires | 2014-05-27T09:10:54Z |
| id | MIIC8QYJKoZIhvcNAQcCoIIC4jCCAt4CAQExCTAHBgUrDgMCGjCCAUcGCSqGSIb3DQEHAa
CCATgEggE0eyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNC0wNS0yN1QwODoxMDo1NC
4zOTU0MDAiLCAiZXhwaXJlcyI6ICIyMDE0LTA1LTI3VDA5OjEwOjU0WiIsICJpZCI6ICJwbGFjZWhvbGRlci
J9LCAic2VydmljZUNhdGFsb2ciOiBbXSwgInVzZXIiOiB7InVzZXJuYW1lIjogImFkbWluIiwgInJvbGVzX2
xpbmtzIjogW10sICJpZCI6ICI0ZGY3MGViYWFiNmI0MTc4ODcxNDE3NzJkYmQyYWNhMCIsICJyb2xlcyI6IFt
dLCAibmFtZSI6ICJhZG1pbiJ9LCAibWV0YWRhdGEiOiB7ImlzX2FkbWluIjogMCwgInJvbGVzIjogW119fX0x
ggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMB
gNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQA
EggEAidnVAhAHerr-94ZwNlEkzEgUVnGxy6BEJoo91Vh1pq0jxFLfYFgezc4TcqwugOvw94nuDSDA2dco1IDMW
vcfYkNOYMcPE1AjhsDfqm3IF6wM-sgSGp8H6eDJR0FZ6zOtPECBdsz0RVfijjG6pOnxylgjyIE0Fjv+5c7VCOf
zeUDKH1oBHzYnDXhwLvuCP6wMhz+7sEzhwt3E2fq7vZLhIE9+9CSg33YI9dTmGSZVr+mvRKB+EEexRQa4eqMF
SYAKjQGNW7ZM4CIWXeXDyytWtAPep6y6ZpS5hQ5DPp2L+52m0918TK-aiVc0SRRdkpP9bqT8q4NBly9GiY0e
bO9E8w== |
| user_id | 4df70ebaab6b417887141772dbd2aca0 |
+----------+-----------------------------------------------------------------------+ |
16. 서로 다른 테넌트에 속한 사용자 계정의 token을 얻어올 때는 username, password, tenant-name, auth-url을 파라메터로 입력합니다.
|
17. 이렇게 매번 사용자계정, 비밀번호, 패스워드, EndPont URL을 입력하고 인증을 해야만 한다면 매우 불편합니다. 그래서 다음과 같이 환경변수로 설정해 놓으면 파라메터 입력 없이 바로 오픈스택 명령어를 실행할 수 있습니다. 이때 환경변수를 쉽게 편집할 수 있게 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 |
18. Vi 에디터로 만든 환경변수 설정 파일은 다음과 같이 source로 export할 수 있습니다.
$ source admin-openrc.sh |
19. 이제 파라메터 없이 바로 token을 얻어오겠습니다.
$ keystone token-get
|
20. 사용자 목록도 확인합니다.
$ keystone user-list +----------------------------------+-------+---------+-----------------+
| id | name | enabled | email |
+----------------------------------+-------+---------+-----------------+
| 4df70ebaab6b417887141772dbd2aca0 | admin | True | admin@email.com |
| a9f042c03887419c95c1f75a0788668f | demo | True | demo@email.com |
+----------------------------------+-------+---------+-----------------+ |
21. 사용자가 가지고 있는 롤 목록도 확인합니다.
$ keystone user-role-list +----------------------------------+--------+----------------------------------+----------------------------------+
| id | name | user_id | tenant_id |
+----------------------------------+--------+----------------------------------+----------------------------------+
| 82b49e5619f54357bf5f637c51dcfe2d | admin | 4df70ebaab6b417887141772dbd2aca0 | 7175efd4d22e41aa8903b0cab45ffaa6 |
| 3eea2b0832ec499d962e4cf1872e72b9 | member | 4df70ebaab6b417887141772dbd2aca0 | 7175efd4d22e41aa8903b0cab45ffaa6 |
+----------------------------------+--------+----------------------------------+----------------------------------+ |
이렇게 해서 Keystone을 설치해 보았습니다. 다음시간에는 운영체제 이미지를 관리하는 Glance와 인스턴스를 관리하는 Nova를 설치해보도록 하겠습니다.
그럼, 다음시간에 만나요~~~ ^^
'OpenStack Class' 카테고리의 다른 글
[OpenStack Class] 제34강 서비스가 가능한 오픈스택 설치6편 - 컨트롤러 노드 설치4 (19) | 2014.12.05 |
---|---|
[OpenStack Class] 제33강 서비스가 가능한 오픈스택 설치5편 - 컨트롤러 노드 설치3 (15) | 2014.12.03 |
[OpenStack Class] 제31강 서비스가 가능한 오픈스택 설치3편 - 컨트롤러 노드 설치1 (7) | 2014.11.26 |
[OpenStack Class] 제30강 서비스가 가능한 오픈스택 설치2편 - 서버 준비! (12) | 2014.11.25 |
[OpenStack Class] 제29강 서비스가 가능한 오픈스택 설치1편 - 시스템 구성도를 그려보자! (6) | 2014.11.25 |
- Total
- Today
- Yesterday
- 클라우드
- OVN
- Network
- command
- Redhat
- 레드햇
- 우분투
- 김미경
- NOVA
- cpu
- 오픈쉬프트
- Python
- 명령어
- 세미나
- 뉴트론
- 하둡
- 컨테이너
- neutron
- 네트워크
- ubuntu
- 파이썬
- Java
- 설치
- 쿠버네티스
- install
- 오픈스택
- 후기
- Swift
- sdn
- openstack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |