becool

20210709 (금) 설치 후 기초 #4 본문

openstack

20210709 (금) 설치 후 기초 #4

gusalstm 2021. 7. 9. 17:34
반응형

볼륨 생성

(openstack) volume create --size 1 demo_vol

(openstack) server add volume demo_vm demo_vol → 인스턴스에 생성된 볼륨 연결

(openstack) volume list → 연결 확인
+--------------------------------------+----------+--------+------+----------------------------------+
| ID                                   | Name     | Status | Size | Attached to                      |
+--------------------------------------+----------+--------+------+----------------------------------+
| 6350a73b-12c1-4f64-a93b-e34db1fe5067 | demo_vol | in-use |    1 | Attached to demo_vm on /dev/vdb  |
+--------------------------------------+----------+--------+------+----------------------------------+

(openstack)

 

프로젝트 생성

(openstack) project create demo_pro
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 1d76156d6fcd41c7801086ff8491812a |
| is_domain   | False                            |
| name        | demo_pro                         |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

 

사용자 생성

(openstack) user create --project demo_pro --password 1234 demo_user01

 → 1234 로 패스워드 지정

(openstack) user create --project demo_pro --password-prompt demo_user01

User Password:

 → 대화창을 통해 패스워드 입력 생성

 

역할 생성

(openstack) role list

(openstack) role add --project demo_pro --user testuser _member_ → test유저를 demo_pro프로젝트에 _member_ 역할로 할당

 

 

삭제

(openstack) user delete user01
(openstack) user delete testuser

(openstack) project list
+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 1d76156d6fcd41c7801086ff8491812a | demo_pro  |
| 2322e7c1cfe7492c8b190399947f7d17 | services  |
| db34cac2b137433db130d3be9d7dd96f | project01 |
| f21117852a8c4b8282852213e79b96c6 | admin     |
+----------------------------------+-----------+
(openstack) project delete demo_pro

(openstack) server list -c Name -c Networks --all-project
+---------+-----------------------------------+
| Name    | Networks                          |
+---------+-----------------------------------+
| demo_vm | 1netnet=192.168.100.11, 10.0.2.32 |
| 1vm     | 1netnet=192.168.100.12, 10.0.2.30 |
+---------+-----------------------------------+
(openstack) server delete demo_vm
(openstack) server delete 1vm

(openstack) router list -c Name -c Status
+------+--------+
| Name | Status |
+------+--------+
| 1rt  | ACTIVE |
+------+--------+

(openstack) router remove subnet 1rt 1pubsub
(openstack) router remove subnet 1rt 1netsub
(openstack) router delete 1rt

 → 라우터 삭제시, 서브넷 제거 후 라우터 삭제

(openstack) network delete 1pubnet
(openstack) network delete 1netnet

 → 라우터 삭제 후 (내/외부)네트워크 삭제

(openstack) security group list
+--------------------------------------+----------+------------------------+----------------------------------+
| ID                                   | Name     | Description            | Project                          |
+--------------------------------------+----------+------------------------+----------------------------------+
| 225d008d-3cec-4659-9566-11f1b0a90cc1 | default  | Default security group | 2322e7c1cfe7492c8b190399947f7d17 |
| 3172cc2f-cb99-4036-8301-5c8d5efeeaf9 | ssh_demo |                        | 39f938aa2d184996bd6164e74865b72f |
| 5a186f6c-0ba9-4f95-9b95-70d7439abb9f | demo_sg  | demo_sg                | f21117852a8c4b8282852213e79b96c6 |
| 64b8bc0a-2c6f-4aee-99a2-710884871c23 | default  | Default security group | f21117852a8c4b8282852213e79b96c6 |
| bb2c708f-d3e8-4571-aecc-49d5042c9a2a | default  | Default security group | 39f938aa2d184996bd6164e74865b72f |
| bbd2a1a0-057a-4dbc-8e8c-eb6108981c4c | default  | Default security group | db34cac2b137433db130d3be9d7dd96f |
| f8654ce2-9e68-4aac-9e05-9dc2a2286e0b | default  | Default security group |                                  |
+--------------------------------------+----------+------------------------+----------------------------------+
(openstack) security group delete demo_sg
(openstack) security group delete ssh_demo

(openstack) keypair delete demo_key

(openstack) volume delete demo_vol
(openstack) flavor delete demo_flavor

(openstack) image delete demo_image

-----------------------------------삭제완료-----------------------------------

 

https://www.redhat.com/ko/topics/openstack

※ 오픈스택 배포 방식 (설치 방식)

 1) 직접 하나하나 설치 : 공부/경험용으로만 좋음
 2)  packstack / devstack : 별도의 배포도구를 사용한 것으로  대화형/파일 등을 이용하여 편리
    → 확장성 및 지원이 나쁘므로 실제환경에 부적합
    → Flat 구성 ( controller / compute / network / storage 노드 )
  
 3) Triple O : openstack on openstack
             → Under Cloud / Over Cloud
              U : 물리적인 시스템(노드)들을 관리해주는 시스템(플랫폼)
                   →director 라는 이름의 allinone 시스템으로 구성 
              O : 사용자들에게 서비스를 제공해 줄 물리적인 시스템(노드) 들
              배포 관리가 쉬움
              구성이 복잡, 물리적인 시스템이 더 많이 필요.
 4) Kolla  : 컨테이너 기술(docker)을 이용하는 방식
             오픈스택 관련 서비스들이 컨테이너로 실행하는 방식
             안정성을 확보
 5) Ansible / puppet … : 배포 도구, ansible을 많이 사용

Keystone 인증 서비스

            사용자가 작업 실행 시 권한을 확인해주고 인증해주는 서비스

            서비스의 카탈로그를 관리 ( 서비스 endpoint )

            프로젝트, 사용자, 역할에 대한 설정

 

Catalog : 서비스 엔드포인트의 집합 

endpoint : API 요청 시 사용할 주소 

 

 1) LDAP 서버에서 사용자 생성

 2) 오픈스택에서 사용자 생성

 3) 오픈스택에서 역할 설정

 

도메인? : Keystone API v3 에서 지원하는 기능

            v2까지는 default 도메인만 사용

            모든 리소스들의 최상위 개념 (프로젝트와 사용자들의 집합)

            독립적인 가상화 환경 (데이터 센터)

            

프로젝트 : v2 까지는 테넌트라는 이름으로 사용됨

             사용자 별로 역할을 할당해서 접근제어에 사용되는 단위

             각 리소스들의 집합 (cpu/ram ... instance / volume ... )

             프로젝트 별로 리소스의 할당량을 지정

사용자 : 로그인 및 인증 대상

그룹 : 사용자들의 집합

역할 : 사용자/그룹 에 대한 권한을 설정

토큰 : 사용자의 권한을 확인해주는 도구 (권한의 집합)

 

---

[root@controller ~]# grep -i mariadb_pw answers.txt → answers 에서 mariadb_pw 검색 -i :대소문자 구분없는 옵션

CONFIG_MARIADB_PW=533914ad02a946b9

[root@controller ~]# mysql -u root -p
Enter password:

[root@controller ~]# yum list installed |grep centos-release
centos-release-openstack-queens.noarch → queens 버전

[root@controller ~]# yum provides /etc/keystone/

[root@controller ~]# ls -l /etc/keystone/fernet-keys/
total 8
-rw-------. 1 keystone keystone 44 Jun 27  2020 0
-rw-------. 1 keystone keystone 44 Jun 27  2020 1
[root@controller ~]# grep -v -e '^#' -e '^$' /etc/keystone/keystone.conf → 주석이 없는 열 검색

[token]
expiration=3600
provider=fernet → 토큰 형식
driver=sql → db 에서 구동
revoke_by_id=True
[tokenless_auth]
[trust]
[unified_limit]
[ssl]
enable=False

P155 참고

[root@controller ~(keystone_admin)]# openstack token revoke^C
[root@controller ~(keystone_admin)]# openstack token revoke TOKEN^C

[root@controller ~(keystone_admin)]# openstack domain create
usage: openstack domain create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width <integer>]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX] [--description <description>]
                               [--enable | --disable] [--or-show]
                               <domain-name>

[root@controller ~(keystone_admin)]# openstack domain create test_domain
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description |                                  |
| enabled     | True                             |
| id          | 9d6262b6c3a54818a8d27d5fb4edee53 |
| name        | test_domain                      |
| tags        | []                               |
+-------------+----------------------------------+
[root@controller ~(keystone_admin)]# openstack domain list
+----------------------------------+-------------+---------+--------------------+
| ID                               | Name        | Enabled | Description        |
+----------------------------------+-------------+---------+--------------------+
| 9d6262b6c3a54818a8d27d5fb4edee53 | test_domain | True    |                    |
| b4821699d48e4e67b9cbac7062e04360 | heat        | True    |                    |
| default                          | Default     | True    | The default domain |
+----------------------------------+-------------+---------+--------------------+

[root@controller ~(keystone_admin)]# openstack project create --domain test_domain test_project

  → 프로젝트 생성시 속할 도메인을 지정해줄 수 있음, 각 도메인은 독립적이므로 각각의 도메인에 중복되는 이름을 각각 생성할 수 있음.

[root@controller ~(keystone_admin)]# openstack project list --demain test_domain

  → 형태로 특정 도메인에 속한 프로젝트만을 볼 수 있음

 

P158 참고

(openstack) project create --domain test_domain test_project

(openstack) role add
usage: role add [-h] [--domain <domain> | --project <project>] → 도메인
                [--user <user> | --group <group>]
                [--group-domain <group-domain>] → 그룹 도메인
                [--project-domain <project-domain>] → 프로젝트 도메인
                [--user-domain <user-domain>] [--inherited] → 유저 도메인
                [--role-domain <role-domain>] → 역할 도메인

(openstack) role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | a72be6b21472423aa29d6193e9d7abef |
| name      | user                             |
+-----------+----------------------------------+
(openstack) role list
+----------------------------------+------------------+
| ID                               | Name             |
+----------------------------------+------------------+
| 4e74e6e7c1634e2ca6240f8973f9811f | ResellerAdmin    |
| 828320ad3801437daaf1de5aeb00c8c5 | heat_stack_user  |
| 9dc9ac888e824df98498234f4276eb6e | heat_stack_owner |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_         |
| a72be6b21472423aa29d6193e9d7abef | user             |
| c14dc0dea02a4aeebf02ccb48b13b920 | SwiftOperator    |
| e475bb6f095d47bdaa9ce2b15e08a4f9 | admin            |
+----------------------------------+------------------+

(openstack) role add --project test_project --user test_user _member_

(openstack) role assignment list --fit-width

(openstack) role assignment list --names
+------------------+-----------------------+-----------------+--------------------------+--------+-----------+
| Role             | User                  | Group           | Project                  | Domain | Inherited |
+------------------+-----------------------+-----------------+--------------------------+--------+-----------+
| _member_         | test_user@test_domain |                 | test_project@test_domain |        | False     |
| admin            | glance@Default        |                 | services@Default         |        | False     |
| admin            | heat@Default          |                 | services@Default         |        | False     |
| admin            | swift@Default         |                 | services@Default         |        | False     |
| admin            | neutron@Default       |                 | services@Default         |        | False     |
| admin            | heat-cfn@Default      |                 | services@Default         |        | False     |
| admin            | aodh@Default          |                 | services@Default         |        | False     |
| admin            | nova@Default          |                 | services@Default         |        | False     |
| ResellerAdmin    | ceilometer@Default    |                 | services@Default         |        | False     |
| admin            | ceilometer@Default    |                 | services@Default         |        | False     |
| admin            | cinder@Default        |                 | services@Default         |        | False     |
| admin            | gnocchi@Default       |                 | services@Default         |        | False     |
| heat_stack_owner | admin@Default         |                 | admin@Default            |        | False     |
| _member_         | admin@Default         |                 | admin@Default            |        | False     |
| admin            | admin@Default         |                 | admin@Default            |        | False     |
| admin            | placement@Default     |                 | services@Default         |        | False     |
| _member_         |                       | group01@Default | admin@Default            |        | False     |
| admin            | heat_admin@heat       |                 |                          | heat   | False     |
| admin            | admin@Default         |                 |                          |        | False     |
+------------------+-----------------------+-----------------+--------------------------+--------+-----------+

※ inherited ? 패런츠 프로젝트, 차일드 프로젝트 등으로 계층적구조로 사용할때 설정하는 영역

 상위 프로젝트 리소스 / 하위 프로젝트 리소스 할당 : 현재 각각 설정했을때 인스턴스 개수가 초과될 때 오류가 발생하므로 미리 염두에 두고 작업해야함.

 

(openstack) quota set   (프로젝트 할당량)
usage: quota set [-h] [--class] [--properties <properties>]
                 [--server-groups <server-groups>] [--ram <ram>] → 서버 그룹
                 [--key-pairs <key-pairs>] [--instances <instances>] → 인스턴스 갯수
                 [--fixed-ips <fixed-ips>]
                 [--injected-file-size <injected-file-size>]
                 [--server-group-members <server-group-members>] → 서버 그룹 멤버
                 [--injected-files <injected-files>] [--cores <cores>]
                 [--injected-path-size <injected-path-size>]
                 [--per-volume-gigabytes <per-volume-gigabytes>] → 볼륨마다 사이즈
                 [--gigabytes <gigabytes>] → 전체 프로젝트 누적 볼륨 사이즈 할당
                 [--backup-gigabytes <backup-gigabytes>]
                 [--snapshots <snapshots>] [--volumes <volumes>]
                 [--backups <backups>] [--l7policies <l7policies>]
                 [--subnetpools <subnetpools>] [--vips <vips>]
                 [--ports <ports>] [--subnets <subnets>]
                 [--networks <networks>] [--floating-ips <floating-ips>]
                 [--secgroup-rules <secgroup-rules>]
                 [--health-monitors <health-monitors>] → 로드밸런서 헬스모니터 할당량
                 [--secgroups <secgroups>] [--routers <routers>]
                 [--rbac-policies <rbac-policies>]
                 [--volume-type <volume-type>]
                 <project/class>

 대시보드 GUI 환경에서 인증 > 프로젝트 > 프로젝트 편집> 할당량 과 동일한 내용

대시보드에 없는 메뉴

--server-groups 서버그룹 : 인스턴스를 만들때에 서버위치 그룹

--server-group-members 서버그룹멤버 : 각각의 그룹에 몇개의 멤버를 소속 시킬 수 있는지

 

1 quota_test 이름의 프로젝트 생성

2 할당량 조정해서 생성여부 확인

  1) vcpus 1 instance 1 설정 후 인스턴스 생성 실습

       flavor 에서 cpu 1로 되어있는 것을 이용해 인스턴스 생성이 후 하나 더 만들어 보기.

      인스턴스 삭제 후 cpu 2로 인스턴스 생성 시도

  2) keypair volume network 개수 제한 후 생성 해보기

  3) volume 사이즈를 3G 제한 후 생성

  ▶ admin 사용자로 할것.

 

1 사용자를 생성 newuser 에게 _member_ 역할을 할당

2 newuser를 이용하여 리소스 생성 확인 (명령어로 파일 만들기)

 

(openstack) project create quota_test

(openstack) quota set --cores 1 --instance 1 quota_test

(openstack) user create --project quota_test --password-prompt newuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | 8542c503ef2a41e0a61bd677c628df47 |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 3366cdd1090a4c35aabcc5b5833d86ec |
| name                | newuser                          |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

(openstack) role add --project quota_test --user newuser _member_ → 멤버에게 newuser를 추가하고, 프로젝트를 quota_test 할당량을 적용

[root@controller ~(newuser)]# cat keystonerc_admin > newuserrc → newuserrc 리소스파일을 생성

[root@controller ~(keystone_admin)]# vim newuserrc

unset OS_SERVICE_TOKEN
    export OS_USERNAME=newuser
    export OS_PASSWORD='PASSWORD'
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://10.0.2.10:5000/v3
    export PS1='[\u@\h \W(newuser)]\$ '

export OS_PROJECT_NAME=newuser
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

[root@controller ~(newuser)]# openstack server create --image img1 --flavor m1.medium 2server → 인스턴스 생성
Quota exceeded for cores: Requested 2, but already used 0 of 1 cores (HTTP 403) (Request-ID: req-0ad4d27e-b697-4404-99dc-6ad01e1eb4df)

→ 코어 갯수 때문에 인스턴스 생성 불가 (할당량 - quota_test 에 의해)

[root@controller ~(newuser)]# openstack user show
The request you have made requires authentication. (HTTP 401) (Request-ID: req-71292de0-64d8-4556-bcbc-3baa51ea6c98) → 어드민 사용자가 아니므로 user show 명령어 권한이 없음
[root@controller ~(newuser)]# source keystonerc_admin  → 어드민사용자로 전환 후
[root@controller ~(keystone_admin)]# openstack user show newuser → newuser 정보 확인
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| default_project_id  | 8542c503ef2a41e0a61bd677c628df47 |
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 3366cdd1090a4c35aabcc5b5833d86ec |
| name                | newuser                          |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

 

(openstack) quota set --key-pairs 10 --volumes 2 --networks 2 --per-volume-gigabytes 3 quota_test

(openstack) flavor create  --vcpus 1 --ram 1024 --disk 2 quotaflavor → --project 옵션 없음

[root@controller ~(keystone_admin)]# openstack image create --disk-format qcow2 --file cirros-0.5.2-x86_64-disk.img

--project quota_test 1qimg → --project 옵션 있음

어드민으로 생성 후 newuser로 되는지 확인

 

728x90

'openstack' 카테고리의 다른 글

20210713 (화) 리눅스 브릿지  (0) 2021.07.13
20210712 (월) 서비스 개념 설명  (0) 2021.07.12
20210708(목) 설치 후 기초#3  (0) 2021.07.08
20210707 (수) 설치 후 기초#2  (0) 2021.07.07
20210706 (화) 설치 후 기초#1  (0) 2021.07.06
Comments