Dev/Openstack

[Openstack-keystone] Centos 7 setup _

ainory 2018. 3. 23. 13:00



이 섹션은 keystone 이라는 코드 이름을 가진 OpenStack Identity 서비스를 컨트롤러 노드에 설치하고 구성하는 방법을 설명합니다. 성능을 위해 해당 구성에서는 요청을 다루기 위한 Fernet 토큰 및 Apache HTTP 서버를 배포합니다.

선행조건

오픈스택 Identity 서비스를 설정하기 전에, 데이터베이스와 관리 토큰을 생성하여야합니다.
  1. 데이터베이스를 생성하기 위해 다음 과정을 완료합니다:
    • 데이터베이스 액세스 클라이언트를 사용하여 데이터베이스 서버에 root 사용자로 연결합니다:
      $ mysql -u root -p
    • keystone 데이터베이스를 생성합니다:
      CREATE DATABASE keystone;
    • keystone 데이터베이스에 적합한 액세스를 부여합니다:
      GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
      IDENTIFIED BY 'KEYSTONE_DBPASS';
      GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
      IDENTIFIED BY 'KEYSTONE_DBPASS';

      KEYSTONE_DBPASS 를 적절한 암호로 변경합니다.
    • 데이터베이스 접속 클라이언트를 종료합니다.
  2. 초기설정동안 관리 토큰으로 사용할 무작위 값을 생성합니다:
    $ openssl rand -hex 10

구성요소 설치 및 구성

 
주석
디폴트 구성 파일을 배포판에 따라 달라집니다. 기존 섹션 및 옵션을 변경하는 것 보다는 해당 섹션과 옵션을 추가해야 할 수도 있습니다. 또한 구성 내용 조각 중 생략 (...) 부분은 유지될 필요성이 있는 디폴트 구성 옵션을 가리킵니다.

 
주석
이 가이드는 Apache HTTP 서버를 mod_wsgi 와 함께 사용하여 포트 5000 및 35357에서 Identity 서비스 요청을 처리합니다. 기본으로 keystone 서비스는 해당 포트에 대해 계속 listen 상태로 있습니다. 따라서 이 가이드는 수동으로 keystone 서비스를 비활성화합니다.
  1. 패키지들을 설치하기 위해 다음 명령어를 실행합니다:
    # yum install openstack-keystone httpd mod_wsgi
  1. /etc/keystone/keystone.conf 파일을 편집하여 다음 작업을 완료합니다:
    • [DEFAULT] 섹션에서 초기 관리 토큰에 대한 값을 정의합니다:
      [DEFAULT]
      ...
      admin_token = ADMIN_TOKEN

      ADMIN_TOKEN 을 이전 단계에서 생성했던 랜덤값으로 변경합니다.
    • [database] 섹션에서, 데이터베이스 액세스를 구성합니다:
      [database]
      ...
      connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

      KEYSTONE_DBPASS 를 데이터베이스에 대해 선택한 암호로 변경합니다.
    • [token] 섹션에는 Fernet 토큰 제공자를 구성합니다:
      [token]
      ...
      provider = fernet
  1. Identity 서비스 데이터베이스를 넣어줍니다:
    # su -s /bin/sh -c "keystone-manage db_sync" keystone

     
    주석
    출력 중 deprecation 메시지는 무시합니다.
  2. Fernet 키를 초기화합니다:
    # keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

Apache HTTP 서버 구성

  1. /etc/httpd/conf/httpd.conf 파일을 편집하여 ServerName 옵션이 컨트롤러 노드를 가리키도록 구성합니다:
    ServerName controller
  2. /etc/httpd/conf.d/wsgi-keystone.conf 파일을 다음 내용과 함께 생성합니다:
    Listen 5000
    Listen 35357

    <VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
    Require all granted
    </Directory>
    </VirtualHost>

    <VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
    Require all granted
    </Directory>
    </VirtualHost>

설치 마무리

  • Apache HTTP 서비스를 시작하고 시스템이 부팅될 때 시작하도록 구성합니다:
    # systemctl enable httpd.service
    # systemctl start httpd.service