Stein 오픈스택 클라우드 서버 구축(4) - 인증 서비스 (Keystone) 설치 및 구성
blog post
이번 포스트에서는 Keystone 인증 서비스를 구축해 보겠습니다. 이번 작업 역시 컨트롤러 노드에서 진행되며, Keystone에 대한 개념은 앞서 포스팅했던 글을 참고하시기 바랍니다 [바로가기]
컨트롤러 노드에 구성될 서비스는 다음과 같습니다.
앞서 설치한 MariaDB에 Keystone 서비스에 필요한 데이터를 저장하기 위한 DB를 생성하고 권한을 부여합니다.
[root@Controller ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.10-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database keystone;
Query OK, 1 row affected (0.00 sec)
# 아래 password에 본인이 원하는 패스워드로 대체하여 입력합니다.
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
다음과 같이 Keystone 서비스 포함, 관련 패키지들을 설치합니다.
[root@Controller ~]# yum --enablerepo=centos-openstack-stein,epel -y install openstack-keystone openstack-utils python-openstackclient httpd mod_wsgi
설치한 Keystone 의 conf 파일을 통해 서비스 옵션을 설정합니다.
[root@Controller ~]# vim /etc/keystone/keystone.conf
# [cache]섹션에서 아래와 같이 옵션 값을 변경합니다. ip는 본인의 컨트롤러 노드 ip로 변경합니다.
[cache]
......
memcache_servers = 10.0.0.26:11211
# [database] 섹션에서 아래와 같이 옵션 값을 변경합니다.
# 참고로 아래 옵션은 방금 생성한 DB에 접근하기 위한 정보입니다.
# 따라서 password에 본인이 입력했던 값으로 대체해 줍니다.
# 본인의 ip로 변경합니다.
[database]
......
connection = mysql+pymysql://keystone:password@10.0.0.26/keystone
# 아래와 같이 [token] 섹션에서 provider 옵션의 주석을 해제합니다.
[token]
......
provider = fernet
앞서 설정한 값을 DB에 저장합니다.
[root@Controller ~]# su -s /bin/bash keystone -c "keystone-manage db_sync"
토큰 및 자격 증명 암호화를 위해 사용되는 키 저장소를 생성합니다.
# 사용자명과 그룹은 모두 keystone으로 통일합니다.
[root@Controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@Controller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
다음과 같이 Keystone을 부트스트랩 합니다.
# 자신의 컨트롤러 노드의 통신용ip로 환경변수를 정의합니다.
[root@Controller ~]# export controller=10.0.0.26
# 아래와 같이 Keystone을 부트스트랩 합니다.
# adminpassword는 본인이 원하는 pw로 변경합니다.
[root@Controller ~]# keystone-manage bootstrap --bootstrap-password adminpassword \
--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
다음과 같이 Selinux와 방화벽에서 서비스 및 포트를 허용해 줍니다.
[root@Controller ~]# setsebool -P httpd_use_openstack on
[root@Controller ~]# setsebool -P httpd_can_network_connect on
[root@Controller ~]# setsebool -P httpd_can_network_connect_db on
[root@Controller ~]# firewall-cmd --add-port=5000/tcp --permanent
[root@Controller ~]# firewall-cmd --reload
Keystone 설정을 활성화 하고 HTTPD 를 시작합니다.
[root@Controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
[root@Controller ~]# systemctl start httpd
[root@Controller ~]# systemctl enable httpd
확인에 앞서 관리자로써 오픈스택 서비스에 접근하기 위한 토큰 파일을 생성해야 합니다. 아래와 같이 인증 파일을 생성합니다.
- OS_PASSWORD : 위의 6. 부트스트래핑 단계에서 지정한 비밀번호로 대체
- OS_AUTH_URL: 본인의 컨트롤러 노드 통신용 ip로 대체
[root@Controller ~]# vi ~/admin
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=adminpassword
export OS_AUTH_URL=http://10.0.0.26:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
[root@Controller ~]# chmod 600 ~/admin
[root@Controller ~]# source ~/admin
이제 테스트 project를 생성해 봄으로써 정상 동작하는지 확인해 봅니다.
# 현재 본인이 관리자임을 토큰파일을 통해 인증합니다.
[root@Controller ~]# . admin
# project를 생성합니다.
[root@Controller ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 8d3e3541755f454f84dafacd37b4303c |
| is_domain | False |
| name | service |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
# 세팅을 확인해봅니다.
[root@Controller ~]# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 8d3e3541755f454f84dafacd37b4303c | service |
| 9626ec30dfd74a1488e67b23aa19fa01 | admin |
+----------------------------------+---------+
만약 위와 같이 결과가 출력되지 않고 에러 메시지가 출력되는 경우, /var/log/keyston/ 로그 혹은 /var/log/httpd/에서 error 로그나 Keystone 관련 로그를 찾아봅니다. 또 위의 설정에서 잘못 입력한 값(특히 설정파일에서)이 있는지 확인해 봅니다.
다음 포스트에서는 Glance 이미지 서비스 구축 과정에 대해 다루도록 하겠습니다.
'Cloud > Building up Openstack' 카테고리의 다른 글
Stein 오픈스택 클라우드 서버 구축(11) - LVM으로 블록 스토리지 백엔드 구성하기 (0) | 2020.04.12 |
---|---|
Stein 오픈스택 클라우드 서버 구축(10) - 블록 스토리지 노드 및 Cinder 서비스 구성 (0) | 2020.04.10 |
Stein 오픈스택 클라우드 서버 구축(9) - 대시보드 서비스(Horizon) 구축 및 대시보드 기본 구조 (0) | 2020.02.11 |
Stein 오픈스택 클라우드 서버 구축(8) - 테넌트 네트워크 환경 구축 (0) | 2020.02.11 |
Stein 오픈스택 클라우드 서버 구축(7) - 네트워크 서비스 (Neutron) 설치 및 구성 (0) | 2020.02.09 |
Stein 오픈스택 클라우드 서버 구축(6) - 컴퓨트 서비스 (Nova) 설치 및 구성 (0) | 2020.01.31 |
Stein 오픈스택 클라우드 서버 구축(5) - 이미지 서비스 (Glance) 설치 및 구성 (0) | 2020.01.30 |
Stein 오픈스택 클라우드 서버 구축(3) - 오픈스택 기본 패키지 설치 (update 2020.01.28) (1) | 2020.01.28 |
Stein 오픈스택 클라우드 서버 구축(2) - 시스템 구성 (update 2020.01.28) (0) | 2018.01.25 |
Stein 오픈스택 클라우드 서버 구축(1) - 개요 (update 2020.01.23) (2) | 2018.01.24 |