Cloud

OpenStack 설치 3편 Keystone 설치 (Ubuntu 20.04 Yoga)

zewoong 2024. 3. 7. 13:50

3편은 keystone 패키지를 설치 하는 방법에 대한 설명글 입니다.

오픈스택을 위해서는 아래 사진과 같이 최소 5가지의 패키지를 설치해야 합니다.

 

1, 2편을 통해 선행되어야 하는 세팅이 존재합니다. 아래 링크를 통해 환경세팅을 진행해 주세요.

2024.02.27 - [Cloud] - OpenStack 설치 1편 (Ubuntu 20.04 Yoga)

2024.02.28 - [Cloud] - OpenStack설치 2편 환경설정 (Ubuntu 20.04 Yoga)

 

keystone 패키지는 일반적으로 controller node 에서 실행한다. 

 

1. Database 설정

# mysql -u root -p

MariaDB [(none)]> CREATE DATABASE keystone;
MariaDB [(none)]> CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'openstack'
MariaDB [(none)]> CREATE USER 'keystone'@'localhost' IDENTIFIED BY 'openstack'

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%';

MariaDB [(none)]> FLUSH PRIVILEGES;

2. 패키지 설치 및 파일 설정

KEYSTONE_DBPASS에 사용자가 DB에서 설정한 비밀번호를 설정한다. 

# apt install keystone
# vi /etc/keystone/keystone.conf

[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

[token]
provider = fernet

3. DB sync

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

4. fernet 키 저장소 초기화

# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5. bootstrap

ADMIN_PASS 에 사용할 비밀번호를 설정한다. 

# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

6. apache HTTP 구성 

apache2.conf 파일 설정 추가한다. 

# Vi /etc/apache2/apache2.conf

ServerName controller

7. apache 서비스 재시작

# service apache2 restart

8. 환경변수 설정

ADMIN_PASS 에 bootstrap에서 설정한 비밀번호로 변경한다. 

$ export OS_USERNAME=admin
$ export OS_PASSWORD=ADMIN_PASS
$ export OS_PROJECT_NAME=admin
$ export OS_USER_DOMAIN_NAME=Default
$ export OS_PROJECT_DOMAIN_NAME=Default
$ export OS_AUTH_URL=http://controller:5000/v3
$ export OS_IDENTITY_API_VERSION=3

9. 도메인 생성

공식적인 도메인 생성 방법에 대한 예시.

-도메인은 bootsrtap 단계에서 Default로 만들어져 있음.

$ openstack domain create --description "An Example Domain" example

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 2f4f80574fd84fe6ba9067228ae0a50c |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+

10. 서비스 생성

10.1 관리 서비스 생성

$ openstack project create --domain Default \
  --description "Service Project" service

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

 

10.2 비관리(일반) 프로젝트 생성

$ openstack project create --domain Default \
  --description "Service Project" service

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

 

11. 비관리(일반) 사용자 생성

$ openstack user create --domain Default \
  --password-prompt myuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

 

12. 역할 생성 

$ openstack role create myrole

+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | myrole                           |
+-----------+----------------------------------+

 

13. 비관리(일반)적으로 사용할 유저에게 비관리(역할) 부여

$ openstack role add --project myproject --user myuser myrole

 

14. 작동 확인

14.1 환경변수 설정 해제

$ unset OS_AUTH_URL OS_PASSWORD

14.2 admin인증 토큰 발행

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name admin --os-username admin token issue

Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

14.3 비관리(일반) 사용자 토큰 발행

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue

Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+

 

15. 스크립트 생성

15.1 admin-openrc 파일 생성

파일 위치: /etc/keystone

사용자 생성에서 설정한 비밀번호를 ADMIN_PASS에  설정한다. 

# cd /etc/keystone
# vi admin-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

15.2 demo-openrc 파일 생성

사용자 생성에서 설정한 비밀번호를 DEMO_PASS에  설정한다. 

# vi demo-openrc

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=DEMO_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

 

16. 스크립트 작동확인

16.1 스크립트 실행

파일 위치: /etc/keystone

$ . admin-openrc

16.2 Openstack 토큰 발행

$ openstack token issue

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:44:35.659723Z                                     |
| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+