ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OpenStack Class] 제46강 CentOS에서 설치해 보는 오픈스택 6편 - Multi node 설치
    openstack 2016. 2. 1. 21:06
    728x90

    안녕하세요~!! 

    왜 이리도 바쁜지 블로그에 글을 올릴 시간이 없네요~!! 좋은 것이겠죠~!! ^^ 오늘은 안되겠다 생각이 들어서 이렇게 밤 늦게라도 시간을 내어서 글을 올려볼까 합니다. 

    오늘은 지난시간에 이어 Keystone 설치에 관련된 글을 올려볼까 합니다. yum install로 설치를 하고 vi가 아님 openstack-config를 이용하여 환경설정을 한다는 부분이 ubuntu의 apt-get install과 다른 부분입니다. 그외에 환경설정 내용이나 사용법은 같다고 보시면 됩니다.

    Keystone 설치

    메시지 서비스를 설치했다면 이번에는 Keystone을 설치할 차례입니다. Keystone은 오픈스택 서비스의 인증을 담당하는 서비스로써 테넌트사용자서비스와 endpoint를 관리합니다.

     

    1.     yum install을 이용해서 openstack-keystone python-keystoneclient를 설치합니다.

    # yum install openstack-keystone python-keystoneclient

     

    2.     레드햇이나 CentOS는 우분투와 다르게 환경설정을 해주는 openstack-config라는 명령어를 지원합니다. Openstack-config 명령을 이용해서 다음과 같이 데이터베이스 정보를 변경합니다.

    # openstack-config --set /etc/keystone/keystone.conf \
       database connection mysql://keystone:keystonedbpass@10.10.15.11/keystone


    3.     이번에는 mysql에 접속해서 keystone 데이터베이스와 사용자 계정 및 패스워드 그리고 접속권한을 함께 생성합니다.

    # mysql -u root -p
    mysql> CREATE DATABASE keystone;
    Query OK, 1 row affected (0.01 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

     

    4.     Keystone 계정 생성이 완료되면 keystone에서 필요한 테이블을 만들어야 합니다테이블 생성은 keystone-manage db_sync 명령을 이용합니다.

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

     

    5.     keystone의 admin token을 설정하기 위해 openssl rand 명령어를 이용해서 생성된 임의의 문자열을 ADMIN_TOKEN에 저장합니다그리고 ADMIN_TOKEN에 저장된 문자열은 openstack_config 명령어로 /etc/keystone/keystone.conf 파일의 admin_token에 설정합니다.

    # ADMIN_TOKEN=$(openssl rand -hex 10) # echo $ADMIN_TOKEN dc387ae9520f5b69f643 # openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

     

    6.     Keystone은 기본적으로 PKI 토큰을 사용합니다그러므로 keystone-manage를 이용해서 PKI Key와 인증서를 생성하고,생성된 /etc/keystone/ssl은 아무나 접근할 수 없도록 액세스를 제한합니다.

    # keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
    Generating RSA private key, 2048 bit long modulus
    ......................................................................................................+++
    .............................................................+++
    e is 65537 (0x10001)
    Generating RSA private key, 2048 bit long modulus
    ................+++
    .............+++
    e is 65537 (0x10001)
    Using configuration from /etc/keystone/ssl/certs/openssl.conf
    Check that the request matches the signature
    Signature ok
    The Subject's Distinguished Name is as follows
    countryName           :PRINTABLE:'US'
    stateOrProvinceName   :ASN.1 12:'Unset'
    localityName          :ASN.1 12:'Unset'
    organizationName      :ASN.1 12:'Unset'
    commonName            :ASN.1 12:'www.example.com'
    Certificate is to be certified until Jun 12 17:10:09 2024 GMT (3650 days)
     
    Write out database with 1 new entries
    Data Base Updated
    # chown -R keystone:keystone /etc/keystone/ssl
    # chmod -R o-rwx /etc/keystone/ssl

     

    7.     SSL PKI Key 설정이 완료되면 keystone 서비스를 재시작하고부팅 시 서비스가 자동 실행될 수 있도록 설정합니다.

    # service openstack-keystone start
    Starting keystone:                                         [  OK  ]
    # chkconfig openstack-keystone on

     

     keystone 사용자테넌트롤 그리고 endpoint 생성

    keystone 설치가 완료되면 keystone를 접근하기 위한 사용자테넌트롤과 서비스, endpoint를 생성해야 합니다.

     

    1.     우선 OS_SERVICE_TOKEN과 OS_SERVICE_ENDPOINT를 export합니다.

    # export OS_SERVICE_TOKEN=$ADMIN_TOKEN
    # export OS_SERVICE_ENDPOINT=http://10.10.15.11:35357/v2.0

     

    2.     keystone user-create 명령어를 이용해서 다음과 같이 admin 사용자 계정패스워드이메일을 입력하고 admin 계정을 생성합니다.

    # keystone user-create --name=admin --pass=adminpass --email=admin@email.com
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |  email   |         admin@email.com          |
    | enabled  |               True               |
    |    id    | 7bc1bda9d2444b9c92554ff9e0b71e22 |
    |   name   |              admin               |
    | username |              admin               |
    +----------+----------------------------------+

     

    3.     admin 롤을 생성합니다.

    # keystone role-create --name=admin
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |    id    | 02ff77d31ec841b3914db4c3daca4f1c |
    |   name   |              admin               |
    +----------+----------------------------------+

     

    4.     이번에는 admin 테넌트를 생성합니다.

    # keystone tenant-create --name=admin --description="Admin Tenant"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |           Admin Tenant           |
    |   enabled   |               True               |
    |      id     | dbd8df87e5c34536844d915b555061b6 |
    |     name    |              admin               |
    +-------------+----------------------------------+

     

    5.     Admin 테넌트와 member 테넌트에 admin 사용자 계정과 롤을 추가합니다.

    # keystone user-role-add --user=admin --tenant=admin --role=admin # keystone user-role-add --user=admin --tenant=admin --role=_member_

     

    6.     이번에는 demo 계정을 다음과 같이 생성합니다.

    # keystone user-create --name=demo --pass=demopass --email=demo@email.com
    +----------+----------------------------------+
    | Property |              Value               |
    +----------+----------------------------------+
    |  email   |          demo@email.com          |
    | enabled  |               True               |
    |    id    | 129a943bc94b43379a794ae011a87fe9 |
    |   name   |               demo               |
    | username |               demo               |
    +----------+----------------------------------+

     

    7.     Demo 테넌트도 생성합니다.

    # keystone tenant-create --name=demo --description="Demo Tenant"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |           Demo Tenant            |
    |   enabled   |               True               |
    |      id     | afa084dced1e4d70b479dac82ea659ac |
    |     name    |               demo               |
    +-------------+----------------------------------+

     

    8.     생성한 Demo 계정을 Demo 테넌트에 추가하고 롤은 member를 설정합니다.

    # keystone user-role-add --user=demo --role=_member_ --tenant=demo

     

    9.     이번에는 오픈스택 서비스를 위한 서비스 테넌트를 다음과 같이 생성합니다.

    # keystone tenant-create --name=service --description="Service Tenant"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |          Service Tenant          |
    |   enabled   |               True               |
    |      id     | 31303ac56ece4fbc85bb16074adfc9cb |
    |     name    |             service              |
    +-------------+----------------------------------+

     

    10.  서비스 테넌트가 생성되면 이번에는 keystone 서비스를 다음과 같이 생성합니다.

    # keystone service-create --name=keystone --type=identity \
      --description="OpenStack Identity"
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    | description |        OpenStack Identity        |
    |   enabled   |               True               |
    |      id     | 4fdf89fb665d44f7bf0dd053e8dfadef |
    |     name    |             keystone             |
    |     type    |             identity             |
    +-------------+----------------------------------+

     

    11.  생성된 Keystone 서비스는 사용자나 다른 서비스가 접속할 수 있도록 Rest API 주소를 생성합니다필요한 파라메터는 생성한 서비스의 ID, 외부 접속 Public URL, 내부 접속 Internal URL, 관리자가 접속할 Admin URL로 이루어집니다.

    # keystone endpoint-create \
      --service-id=4fdf89fb665d44f7bf0dd053e8dfadef \
      --publicurl=http://10.10.15.11:5000/v2.0 \
      --internalurl=http://10.10.15.11:5000/v2.0 \
      --adminurl=http://10.10.15.11:35357/v2.0
    +-------------+----------------------------------+
    |   Property  |              Value               |
    +-------------+----------------------------------+
    |   adminurl  |  http://10.10.15.11:35357/v2.0   |
    |      id     | 27fd1214abd24430b18045b835885f6b |
    | internalurl |   http://10.10.15.11:5000/v2.0   |
    |  publicurl  |   http://10.10.15.11:5000/v2.0   |
    |    region   |            regionOne             |
    |  service_id | 4fdf89fb665d44f7bf0dd053e8dfadef |
    +-------------+----------------------------------+

     

    12.  endpoint URL 생성이 완료되면 admin 계정을 생성할 때 추가했던 OS_SERVICE_TOKEN과 OS_SERVICE_ENDPOINT를 환경변수에서 해제합니다.

    # unset OS_SERVICE_TOKEN OS_SERVICE_ENDPOINT

     

    13.  이제 keystone 서비스가 정상적으로 실행되는지 테스트합니다이때 환경변수를 쉽게 편집하기 위해 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

     

    14.  Vi 에디터로 만든 환경변수 설정 파일은 다음과 같이 source export할 수 있습니다.

    # source admin-openrc.sh

     

    15.  이제 파라메터 없이 바로 token을 얻어와 보겠습니다.

    # keystone token-get
    +-----------+----------------------------------------------------------------------+
    |  Property |  Value                                                               |
    +-----------+----------------------------------------------------------------------+
    |  expires  |  2014-06-15T19:00:15Z                                                |
    |     id    | MIIE7QYJKoZIhvcNAQcCoIIE3jCCBNoCAQExCTAHBgUrDgMCGjCCA0MGCSqGSIb3DQEHAa
    CCAzQEggMweyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxNC0wNS0yN1QwODoxMzo0Mi
    4xNTA0MDUiLCAiZXhwaXJlcyI6ICIyMDE0LTA1LTI3VDA5OjEzOjQyWiIsICJpZCI6ICJwbGFjZWhvbGRlci
    IsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogIkFkbWluIFRlbmFudCIsICJlbmFibGVkIjogdHJ1ZSwgIm
    lkIjogIjcxNzVlZmQ0ZDIyZTQxYWE4OTAzYjBjYWI0NWZmYWE2IiwgIm5hbWUiOiAiYWRtaW4ifX0sICJzZX
    J2aWNlQ2F0YWxvZyI6IFt7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMC4xMC4xNS4xMT
    ozNTM1Ny92Mi4wIiwgInJlZ2lvbiI6ICJyZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEwLj
    EwLjE1LjExOjUwMDAvdjIuMCIsICJpZCI6ICIyNGUzMmJkYzBmYTg0NzU1ODk4Y2M5ZWIyZjg5ZTg4NiIsIC
    JwdWJsaWNVUkwiOiAiaHR0cDovLzEwLjEwLjE1LjExOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcy
    I6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm
    5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjRkZjcwZWJhYWI2YjQxNzg4NzE0MT
    c3MmRiZDJhY2EwIiwgInJvbGVzIjogW3sibmFtZSI6ICJtZW1iZXIifSwgeyJuYW1lIjogImFkbWluIn1dLC
    AibmFtZSI6ICJhZG1pbiJ9LCAibWV0YWRhdGEiOiB7ImlzX2FkbWluIjogMCwgInJvbGVzIjogWyIzZWVhMm
    IwODMyZWM0OTlkOTYyZTRjZjE4NzJlNzJiOSIsICI4MmI0OWU1NjE5ZjU0MzU3YmY1ZjYzN2M1MWRjZmUyZC
    JdfX19MYIBgTCCAX0CAQEwXDBXMQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVW5zZXQxDjAMBgNVBAcMBVVuc2
    V0MQ4wDAYDVQQKDAVVbnNldDEYMBYGA1UEAwwPd3d3LmV4YW1wbGUuY29tAgEBMAcGBSsOAwIaMA0GCSqGSI
    b3DQEBAQUABIIBAMzeUbt-hokRop8qGVRN7L1BMHpDkh7UaUAK62ThFSV3ydu2zXR8tMGZcSS3lTxIL-0mrt
    oun44p2lX9x+9OPNldPKlC39cgyCOnyFqb5kkdteXuD8JJiFq0klyNPzRtjKr6Vxxb4C3Xjf9tLJnzCuZKYB
    I9-F+oad0EOoaolLG-RNmD56AdGq3Qnly8MPi3EWeCIbHqTvXrVwBgOYUSYdUk32qEacw7atjxB1NdRzTpsm
    m7I261iEKhFTvBfCwQf6PH0AeNHSwpDIgQtJ6f6dlKJAKyKV1puFxUytymmPoLc3t9-IGB-rRDsOUnESGO3E
    i11oQrv+FLGZ+62hGORjI=                                                             |
    | tenant_id | 7175efd4d22e41aa8903b0cab45ffaa6                                     |
    |  user_id  | 4df70ebaab6b417887141772dbd2aca0                                     |
    +-----------+----------------------------------------------------------------------+

     

    16.  사용자 목록도 확인해 봅니다.

    # keystone user-list
    +----------------------------------+-------+---------+-----------------+
    |                id                |  name | enabled |      email      |
    +----------------------------------+-------+---------+-----------------+
    | 7bc1bda9d2444b9c92554ff9e0b71e22 | admin |   True  | admin@email.com |
    | 129a943bc94b43379a794ae011a87fe9 |  demo |   True  |  demo@email.com |
    +----------------------------------+-------+---------+-----------------+

     

    17.  사용자가 가지고 있는 롤 목록도 확인해 봅니다.

    # keystone user-role-list
    +----------------------------------+-------+----------------------------------+----------------------------------+
    |                id                |  name |             user_id              |            tenant_id             |
    +----------------------------------+-------+----------------------------------+----------------------------------+
    | 02ff77d31ec841b3914db4c3daca4f1c | admin | 7bc1bda9d2444b9c92554ff9e0b71e22 | dbd8df87e5c34536844d915b555061b6 |
    +----------------------------------+-------+----------------------------------+----------------------------------+



    이렇게 해서 Keystone을 설치해 보았습니다. 다음번 포스팅에서는 Glance와 Nova를 설치해 보도록 하겠습니다.


    출처 - http://naleejang.tistory.com/154

Designed by Tistory.