keystone은 모든 서비스들의 중심이자 가장 중요한 인증부분을 맞고있는 서비스이다
서비스 설정 중 가장 간단하지만 추후에도 몇번 더 수정해야하는 항목이니 conf 설정파일을 한번 둘러보는 것도 권장한다.
admin과 demo 계정의 비밀번호는 직접 타자를 쳐야할일이 많으니 어느정도 사람이 쓸 수 있는 선에서 보안을 챙기길 권장한다.
여기서 꼬이면 답이 없으니 DB 설정시 유의바란다.
DB등록
mysql
#mriadb 접속
MariaDB [(none)]> CREATE DATABASE keystone;
#keystone DB생성
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
#keystone 생성 및 권한 부여
exit
#종료
구성요소 설치 및 설정
apt-get update
apt install keystone
#설치
vi /etc/keystone/keystone.conf
[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
#KEYSTONE_DBPASS에 설정한 값 기입
[token]
...
provider = fernet
wq
#저장
su -s /bin/sh -c "keystone-manage db_sync" keystone
#DB에 내용 등록
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
#Fernet 키 저장소 초기화
#Identity 서비스를 부트스트랩
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
#ADMIN_PASS에 설정한 값 기입
Apache HTTP 서버 구성
#ServerName컨트롤러 노드를 참조하도록 옵션을 구성
vi /etc/apache2/apache2.conf
ServerName controller
#없을 시 추가
설치 마무리
service apache2 restart
#아파치 다시시작
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
#admin 환경 변수 설정, ADMIN_PASS에는 위에 설정한 비밀번호 기입
도메인, 프로젝트, 사용자 추가
#일반 사용자 등록하기
#프로젝트를 생성 myproject
openstack project create --domain default \
--description "Demo Project" myproject
#프로젝트 생성
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain | False |
| name | myproject |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
#생성 결과(예시)
openstack user create --domain default \
--password-prompt myuser
#일반 사용자 생성(myuser)
User Password: #DEMO_PASS 기입
Repeat User Password: #DEMO_PASS 기입
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | aeda23aa78f44e859900e22c24817832 |
| name | myuser |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
#사용자 생성 결과(예시)
openstack role create myrole
#역활 생성
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 997ce8d05fc143ac97d83fdfb5998552 |
| name | myrole |
+-----------+----------------------------------+
#역활 생성 결과(예시)
작업 완료 확인
unset OS_AUTH_URL OS_PASSWORD
#기존의 환경변수 해제
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
#admin 인증 토큰 요구
Password: #등록한 ADMIN_PASS 입력
+------------+-----------------------------------------------------------------+
| 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 |
+------------+-----------------------------------------------------------------+
#정상 출력시(예시)
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
#myuser(일반사용자) 인증 토큰 요구
Password: #DEMO_PASS 입력
+------------+-----------------------------------------------------------------+
| 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 |
+------------+-----------------------------------------------------------------+
#정상 출력시(예시)
추후 작업을 위한 사용자 환경 변수 스크립트 생성 및 사용법
cd /#환경 변수 스크립트 파일을 둘 원하는 위치(home 추천)
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
#ADMIN_PASS에 설정한 정보 기입
wq
#저장
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
#DEMO_PASS에 설정한 정보 기입
wq
#저장
#스크립트 사용법 (파일 위치로 이동 후)
. admin-openrc
#어드민 권한 필요시
. demo-openrc
#일반 사용자 권한 필요시