티스토리 뷰

안녕하세요~!! 

정말 오랜만에 블로그에 글을 올려봅니다.

오늘은 개정판 내용 중 어떤 내용을 올릴까 하고 고민을 하다가 설치편은 어떤 버전을 설치하느냐에 따라 조금씩 방법도 다르고, 공식 문서를 활용하면 쉽게 설치 방법을 확인할 수 있기 때문에 이번 시간부터는 오픈스택을 어떻게 사용하면 되는지에 대한 내용을 다루고자 합니다.


프로젝트 및 사용자 생성하기

개발 부서에서 운영 부서로 오픈스택을 요청하는 경우는 신규 개발 프로젝트를 시작해야 하거나 연구 프로젝트가 시작되었을 경우일 것입니다. 운영 부서에서 인스턴스를 일일이 생성해서 개발 부서에 넘겨주기에는 일이 많고 번거롭습니다. 그래서 운영 부서에서는 오픈스택에 프로젝트를 생성하고 사용자를 추가해 개발 부서에 해당 계정 정보를 주면 개발 부서에서 직접 인스턴스를 생성할 수 있습니다. 운영 부서가 가장 먼저 해야 하는 일인 프로젝트 및 사용자 생성을 해 보겠습니다.

 

프로젝트 생성하기

프로젝트는 쉽게 말해 부서명이나 그룹명이라고 볼 수 있습니다. 요청이 들어온 개발 부서명은 개발 1팀이고, 이를 영문으로 쉽게 표기해 Developer 1이라는 프로젝트를 생성해 보겠습니다.

 

1.      가장 먼저 대시보드에 접속합니다. 대시보드에 접속할 때는 관리자 권한인 admin으로 로그인합니다. 그러면 다음과 같은 프로젝트 페이지를 가장 먼저 볼 수 있습니다.


2.      [+ 프로젝트 생성]을 클릭합니다. 그러면 다음과 같이 프로젝트 생성 팝업창이 뜨는데, 생성할 프로젝트 이름과 설명을 입력합니다. 여기서는 [이름]에 개발 1팀의 영문명인 developer1, [설명]에는 Developer 1 Team이라고 입력했습니다. 이름과 설명은 상황에 맞게 해당 값으로 입력하면 됩니다. 


3.     다른 탭도 함께 살펴보겠습니다. [프로젝트 멤버] 탭에서는 사용자 목록을 확인할 수 있습니다. 프로젝트를 생성할 때 기존에 등록된 사용자를 추가할 경우라면 모든 사용자 목록에서 해당 사용자를 프로젝트 멤버로 추가할 수 있습니다. 하지만 여기서는 아직 사용자를 생성하지 않았으므로 그냥 넘어 갑니다.


4.      [프로젝트 그룹] 탭을 살펴보겠습니다. 규모가 작은 프로젝트라면 프로젝트가 하나뿐이지만, 프로젝트 규모가 크다면 작은 단위의 프로젝트가 모여 큰 프로젝트가 될 수 있습니다. 또한, 관련 있는 프로젝트를 모아둘 수도 있습니다. 이때 사용하는 것이 바로 프로젝트 그룹입니다. 프로젝트 그룹 역시 생성 전이므로 그냥 넘어갑니다.


5.      [Quota] 탭을 살펴보겠습니다. 여기서는 생성하고자 하는 프로젝트에서 사용할 수 있는 가상 자원을 설정할 수 있습니다. 이때 하드웨어 자원에 맞게 할당하지 않으면 인스턴스 생성 시 자원이 없어 실패할 수도 있습니다. 프로젝트 정보를 입력하고 멤버, 그룹, Quota 정보를 확인했으면 [프로젝트 생성]을 클릭합니다.

 

6.      앞에서 설정한 프로젝트명으로 프로젝트가 생성된 것을 확인할 수 있습니다.

 

7.      이번에는 생성한 프로젝트 정보를 확인해 보겠습니다. 프로젝트 목록에서 앞에서 생성한 developer1을 클릭합니다. 그러면 다음과 같이 developer1 프로젝트의 상세 정보를 확인할 수 있으며, 오른쪽 콤보박스에서 프로젝트에 해당하는 작업들을 할 수 있습니다.


8.      [프로젝트 편집]을 선택하면 다음과 같은 프로젝트 편집창이 뜹니다.

 

사용자 생성하기

프로젝트를 생성하면 사용자를 생성해야 합니다. 개발 1팀의 요청자를 사용자로 생성할 수도 있고, 프로젝트명과 같은 이름으로 사용자를 생성할 수도 있습니다. 사용자를 생성해 보겠습니다.

 

1.     관리자 대시보드의 왼쪽 메뉴에서 [인증] > [사용자]를 선택하면 다음과 같은 사용자 목록을 확인할 수 있습니다. 서비스를 위해 이미 생성되어 있는 서비스용 사용자 정보를 확인할 수 있습니다.

2.      [+ 사용자 생성]을 클릭하면 다음과 같은 사용자 생성 창이 뜹니다. 그러면 사용자 정보를 입력합니다. 여기서는 제가 개발 1팀의 개발자라 생각하고 제 개인 정보를 입력했습니다. 사용자 이름에는 사용자 ID를 입력하고, 설명은 간단하게 작성합니다. 그리고 이메일 정보와 비밀번호, 비밀번호 확인을 입력하고, 좀 전에 생성한 프로젝트를 최초 프로젝트에서 선택합니다. 그리고 역할을 선택하는데, 관리자가 아닌 일반 사용자는 Member로 선택한 후 [사용자 생성]을 클릭합니다. 


3.      사용자가 정상적으로 생성되면 [사용자] 메뉴를 선택해 목록을 확인할 수 있습니다.


4.      [그룹] 메뉴를 살펴보겠습니다. 그룹은 비슷한 프로젝트나 관련이 있는 프로젝트를 별도로 모아 좀 더 관리하기 쉽게 해줍니다. 여기서는 이미 nonadmins 그룹과 admins 그룹이 생성되어 있습니다.


5.     [역할]에서는 오픈스택 서비스를 위한 역할들이 이미 생성되어 있습니다. Service는 오픈스택 서비스를 위한 역할이며, admin은 관리자 역할입니다. Member_member_는 일반 사용자를 위한 역할이며, Heat_stack_ownerheat_stack_userHeat 서비스를 위한 역할입니다. ResellerAdmin은 미터링 서비스인 ceilometer를 위한 역할입니다. 이렇게 오픈스택에는 각각의 서비스를 구동하기 위한 역할들이 있습니다.

 

6.     프로젝트를 생성하고 사용자를 생성했으면 로그인 테스트를 해 봐야 합니다. Admin 계정으로 로그인한 대시보드를 로그아웃하고 다음과 같이 방금 생성한 사용자 아이디와 패스워드로 로그인해 봅니다.

 

7.     로그인을 하면 다음과 같이 한눈에 요약된 현재 자원 사용 정보와 사용량을 확인할 수 있습니다.

 

커맨드 명령어 사용하기

대부분은 대시보드를 이용해 프로젝트를 생성하고 사용자를 생성하면 됩니다. 하지만 때로는 커맨드 명령어를 이용해 기존의 프로젝트 정보나 사용자 정보를 삭제하거나 수정할 수도 있습니다. 여기서는 커맨드 명령어로 어떻게 프로젝트를 생성하고, 사용자를 생성하는지 알아보겠습니다.

 

[주요 명령어] 프로젝트 생성

openstack project create --domain [DOMAIN_NAME] --description [DESCRIPTION] [PROJECT_NAME]

 

[주요 명령어] 사용자 생성

openstack user create --domain [DOMAIN_NAME] --password-prompt [USER_NAME]

 

[주요 명령어] 사용자 역할 및 프로젝트 설정

openstack role add --project [PROJECT_NAME] --user [USER_NAME] [ROLE_NAME]

 

1.      먼저 관리자 계정을 인증하기 위한 adminrc.sh 파일을 다음과 같이 확인하고 export합니다. 이때 만일 adminrc.sh 파일이 없다면 다음과 같이 생성하면 됩니다.

nalee@controller:~$ cat adminrc.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=openstack

export OS_AUTH_URL=http://192.168.56.101:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

nalee@controller:~$ . adminrc.sh

 

2.      개발 1팀은 앞에서 이미 생성했으므로 이번에는 개발 2팀을 프로젝트로 생성해 보겠습니다. openstack project create 명령어를 이용해 도메인에는 defaultdescription에는 개발 2팀을 표현하는 “Development 2 Team”을 입력하고 마지막으로 development2라는 프로젝트명을 입력합니다. 그러면 다음과 같이 프로젝트가 생성됩니다.

nalee@controller:~$ openstack project create --domain default --description "Developer 2 Team" developer2

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | Developer 2 Team               |

| domain_id   | default                          |

| enabled     | True                             |

| id          | 698df06c46344730a1c1ab0aafd16a0b |

| is_domain   | False                            |

| name        | developer2                     |

| parent_id   | default                          |

+-------------+----------------------------------+

 

3.      프로젝트가 생성되었으면 이번에는 openstack user create 명령어를 이용해 janghj라는 사용자 계정을 생성해 보겠습니다. 이번에도 도메인은 default로 설정하고 패스워드를 프롬프트로 받기 위해 --password-prompt라는 옵션을 추가합니다. 그리고 janghj라는 사용자명을 입력합니다. 그러면 다음과 같이 패스워드를 입력하라는 프롬프트가 뜹니다. 이때, 설정하고자 하는 패스워드를 입력하고 [Enter]를 누르면 다음과 같이 사용자 계정이 생성됩니다. 책에서는 ‘janghjpass’로 패스워드를 설정했습니다.

nalee@controller:~$ openstack user create --domain default --password-prompt janghj

User Password: <패스워드 입력><엔터>

Repeat User Password: <패스워드 입력><엔터>

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | default                          |

| enabled   | True                             |

| id        | 7af2ec0b1d4247da840954948411c9d9 |

| name      | janghj                           |

+-----------+----------------------------------+

 

4.      프로젝트와 사용자 계정이 생성되었으면 생성한 사용자 계정에 역할을  설정해야 합니다. 어떤 규칙들이 있는지 우선 openstack role list 명령어를 이용해 확인합니다. 여기서는 Member 역할을 사용하겠습니다.

nalee@controller:~$ openstack role list

+----------------------------------+------------------+

| ID                               | Name             |

+----------------------------------+------------------+

| 2df60b4750c14a91afedb2890a26325f | service          |

| 7fbd68e1466041dba647d6bb52153b70 | ResellerAdmin    |

| 98fbd6d7c431481793b14849984fdd0d | heat_stack_owner |

| 9fe2ff9ee4384b1894a90878d3e92bab | _member_         |

| a6cbca2a1afd4075b53497f37510952a | Member           |

| a96b25230fbf42b8b599f07aa1de25ac | heat_stack_user  |

| aa3864c4e01247e188275f493fdd82fd | admin            |

| ccaf3e4d5ed2431d8c9abf88b3ed06e4 | anotherrole      |

+----------------------------------+------------------+

 

5.      openstack role add 명령어를 이용해 앞에서 생성한 프로젝트와 사용자명을 입력합니다. projectdevelopment2를 입력하고, userjanghj를 입력합니다. 마지막으로 roleMember를 입력합니다. 그러면 생성한 사용자 계정에 프로젝트와 역할까지 모두 설정되었습니다.

nalee@controller:~$ openstack role add --project developer2 --user janghj Member

 

6.      이번에는 인증을 위한 스크립트 파일을 만들어 보겠습니다. 기존의 adminrc.sh 파일을 cp 명령어를 이용해 janghjrc.sh 이름으로 복사합니다. 그리고 janghjrc.sh 파일을 vi 에디터로 열어 OS_PROJECT_NAME, OS_USERNAME, OS_PASSWORD를 다음과 같이 앞에서 설정한 값으로 변경합니다. 저장된 janghjrc.sh 파일을 export합니다.

nalee@controller:~$ cp adminrc.sh janghjrc.sh

nalee@controller:~$ vi janghjrc.sh

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=developer2

export OS_USERNAME=janghj

export OS_PASSWORD=janghjpass

export OS_AUTH_URL=http://192.168.56.101:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

nalee@controller:~$ . janghjrc.sh

 

7.      인증이 제대로 되는지 다음과 같은 명령어를 실행해 봅니다. 

nalee@controller:~$ openstack image list

+--------------------------------------+---------------------------------+--------+

| ID                                   | Name                            | Status |

+--------------------------------------+---------------------------------+--------+

| 76c25957-c3cd-4371-8df3-d5cd205d168f | cirros-0.3.4-x86_64-uec         | active |

| dd6d3899-6a98-4548-889d-ad3aa7bb8cf2 | cirros-0.3.4-x86_64-uec-ramdisk | active |

| e11dfa22-4c48-4ddb-a475-6e37b9283b6a | cirros-0.3.4-x86_64-uec-kernel  | active |

+--------------------------------------+---------------------------------+--------+


댓글
  • 프로필사진 타우루 안녕하세요.
    레드햇 os에 packstack을 설치했는데 질문이 있어서요.
    설치를 완료하고 대시보드까지 잘 확인되었는데
    프로젝트-네트워크 부문에서 네트워크를 생성하려 하는데 안되네요.
    아예 버튼조차 보이질 않는터라 뭐가 설치가 안된건지...잘 모르겠어서 질문드립니다.
    2017.06.07 16:05
댓글쓰기 폼