1. 계정 인증
1.1 계정 인증 파일
command로 사용자 생성, 볼륨 생성 등 하기 전엔 로그인 하듯이 최초의 한번만 실행 시킨다.
대쉬보드에서 관리자(admin) 계정으로 로그인 후 오른쪽 상단에 OpenStack RC File v3 클릭 후 다운로드
안내창이 뜨면 패스워드를 입력해준다.
※다운받은 파일은 로그인할 계정(admin)을 인증하는 파일이다.
[root@localhost ~]# source admin-openrc.sh
Please enter your OpenStack Password for project admin as user admin:
계정 인증할 안할시 밑에처럼 오류가 뜬다.
[root@localhost ~]# openstack router create test_router
Missing value auth-url required for auth plugin password
1.2 명령어 보는법
openstack 명령어 —help를 이용해 다양한 옵션을 볼 수 있다.
[root@localhost ~]# openstack user --help
Command "user" matches:
user create
user delete
user list
user password set
user set
user show
[root@localhost ~]# openstack user create --help
usage: openstack user 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]
<name>
Create new user
positional arguments:
<name> New user name
optional arguments:
-h, --help show this help message and exit
--domain <domain> Default domain (name or ID)
--project <project> Default project (name or ID)
--project-domain <project-domain>
Domain the project belongs to (name or ID). This can
be used in case collisions between project names
exist.
--password <password>
Set user password
--password-prompt Prompt interactively for password
--email <email-address>
Set user email address
--description <description>
User description
--enable Enable user (default)
--disable Disable user
--or-show Return existing user
…
json formatter:
--noindent whether to disable indenting the JSON
shell formatter:
a format a UNIX shell can parse (variable="value")
--prefix PREFIX add a prefix to all variable names
2. 프로젝트 및 유저
2.1 프로젝트 생성
- 도메인에는 default를, description에는 설명을 입력한다.
- 마지막에는 ‘CJU’라는 프로젝트 이름을 입력하면 다음과 같이 프로젝트가 생성된다.
[root@localhost ~]# openstack project create \
> --domain default \
> --description “CJU” \
> CJU
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | CJU |
| domain_id | default |
| enabled | True |
| id | c427cda7925f47dc9058bb8f8bec87c6 |
| is_domain | False |
| name | CJU |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
2.2 유저 생성
- 생성할 계정명을 입력하고 도메인에는 default를 입력 한다.
- --password-prompt를 이용하여 prompt에서 비밀번호를 입력다음과 같이 프로젝트가 생성된다.
※ --password <password>를 이용해 입력을 먼저 받게 할 수도 있다.
[root@localhost ~]# openstack user create \
> 16422053
> --domain default \
> --password-prompt \
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 714aecf24d0f47f0ab6100ef02372f96 |
| name | 16422053 |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
- 생성할 계정명을 입력하고 도메인에는 default를 입력 한다.2.3 프로젝트에 유저 등록
[root@localhost ~]# openstack role add \
> --project CJU \
> --user 16422053 \
> Member
3. 네트워크
3.1 Public 네트워크 생성
외부와 통신할 수 있는 Public 네트워크를 생성 한다.
- admin 인증 파일 적용한 후 아래 명령어로 Public 네트워크를 생성해준다.
[root@localhost ~]# openstack network create \
> public \
> --provider-network-type flat \
> --provider-physical-network extnet \
> --no-share \
> --project CJU \
> --external
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2020-04-10T09:39:12Z |
| description | |
| dns_domain | None |
| id | 1fddeaf8-9dad-4976-a26b-f9c89fd0f702 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| mtu | 1500 |
| name | public |
| port_security_enabled | True |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| provider:network_type | flat |
| provider:physical_network | extnet |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 2 |
| router:external | External |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| updated_at | 2020-04-10T09:39:13Z |
+---------------------------+--------------------------------------+
[root@localhost ~]# openstack subnet create \
> public_sub \
> --network public \
> --subnet-range 192.168.214.0/24 \
> --gateway 192.168.214.2 \
> --dhcp \
> --allocation-pool start=192.168.214.3,end=192.168.214.20 \
> --dns-nameserver 192.168.214.2
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| allocation_pools | 192.168.214.3-192.168.214.20 |
| cidr | 192.168.214.0/24 |
| created_at | 2020-04-10T09:43:00Z |
| description | |
| dns_nameservers | 203.252.225.5 |
| enable_dhcp | True |
| gateway_ip | 192.168.214.2 |
| host_routes | |
| id | 6d8352bc-9d4f-4a58-b92d-6b67e29acdf4 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | public_sub |
| network_id | 1fddeaf8-9dad-4976-a26b-f9c89fd0f702 |
| project_id | f596178f75cb44eabd95355a73e5d06d |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2020-04-10T09:43:00Z |
+-------------------+--------------------------------------+
여기서 주의할점은 --allocation-pool 에서 start와end 범위에 게이트 웨이주소가 들어가게 설정하면 오류가 발생 하므로 게이트웨이주소를 제외한 범위를 설정해야 한다.- 앞에서 생성한 public 네트워크에 대한 subnet을 생성한다.
(--allocation-pool start=192.168.214.2,end=192.168.214.20 로 설정하면 오류가 발생한다.)
show 옵션을 이용해 생성된 네트워크를 자세히 볼 수 있다.
[root@localhost ~]# openstack network show public
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | nova |
| created_at | 2020-04-10T09:39:12Z |
| description | |
| dns_domain | None |
| id | 1fddeaf8-9dad-4976-a26b-f9c89fd0f702 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| mtu | 1500 |
| name | public |
| port_security_enabled | True |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| provider:network_type | flat |
| provider:physical_network | extnet |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 3 |
| router:external | External |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | 6d8352bc-9d4f-4a58-b92d-6b67e29acdf4 |
| tags | |
| updated_at | 2020-04-10T09:43:00Z |
+---------------------------+--------------------------------------+
3.2 Private 네트워크 생성
이번에는 CJU 프로젝트에서 사용할 프로젝트 네트워크를 생성한다.
아까 생성해준 계정의 인증 파일을 적용시켜준다.
Public에서는 할당 IP 범위를 지정했지만 Private는 지정을 안하는 방식으로 생성한다. (지정해도 상관없다.)
[root@localhost ~]# openstack network create private
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2020-04-10T10:02:27Z |
| description | |
| dns_domain | None |
| id | a611882a-c141-4342-a092-f374795a5c74 |
| ipv4_address_scope | None |
| ipv6_address_scope | None |
| is_default | False |
| is_vlan_transparent | None |
| mtu | 1450 |
| name | private |
| port_security_enabled | True |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| provider:network_type | None |
| provider:physical_network | None |
| provider:segmentation_id | None |
| qos_policy_id | None |
| revision_number | 2 |
| router:external | Internal |
| segments | None |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| updated_at | 2020-04-10T10:02:28Z |
+---------------------------+--------------------------------------+
[root@localhost ~]# openstack subnet create \
> private_sub \
> --network private \
> --subnet-range 10.10.10.0/24 \
> --gateway 10.10.10.1 \
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| allocation_pools | 10.10.10.2-10.10.10.254 |
| cidr | 10.10.10.0/24 |
| created_at | 2020-04-10T10:04:03Z |
| description | |
| dns_nameservers | |
| enable_dhcp | True |
| gateway_ip | 10.10.10.1 |
| host_routes | |
| id | 4fce422c-02a6-49ea-b109-ba6102a0cc36 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | private_sub |
| network_id | a611882a-c141-4342-a092-f374795a5c74 |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2020-04-10T10:04:03Z |
+-------------------+--------------------------------------+
3.3 Router 생성
생성한 프로젝트 네트워크(private)와 외부 네트워크(public)을 연결해주는 라우터가 필요하다.
[root@localhost ~]# openstack router create router
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2020-04-10T10:08:49Z |
| description | |
| external_gateway_info | None |
| flavor_id | None |
| id | 3ce87c25-9847-4c92-8f54-c50b88933396 |
| name | router |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| revision_number | 1 |
| routes | |
| status | ACTIVE |
| tags | |
| updated_at | 2020-04-10T10:08:49Z |
+-------------------------+--------------------------------------+
3.3.1 외부 게이트웨이 추가
생성한 라우터에 외부 게이트웨이(Public)을 추가를 해야한다.
[root@localhost ~]# openstack router set router --external-gateway public
3.3.2 내부 인터페이스 추가
생성한 라우터에 내부 인터페이스(private_sub)를 추가를 해야한다.
[root@localhost ~]# openstack router add subnet router private_sub
3.3.3 Router 확인
생성한 라우터에 외부 게이트웨이랑 내부 인터페이스를 추가가 잘 되었는지 확인 해본다.
대쉬보드(프로젝트-네트워크-라우터-라우터이름클릭-인터페이스)에서도 확인을 할 수 있다.
[root@localhost ~]# openstack router show router
+-------------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+----------------------------------------------------------------------------------------+
| admin_state_up | UP |
| availability_zone_hints | |
| availability_zones | nova |
| created_at | 2020-04-10T10:08:49Z |
| description | |
| distributed | False |
| external_gateway_info | {"network_id": "1fddeaf8-9dad-4976-a26b-f9c89fd0f702", |
"enable_snat": true, |
external_fixed_ips": [{"subnet_id": "6d8352bc-9d4f-4a58-b92d-6b67e29acdf4", |
"ip_address": "192.168.100.8"}]} | |
| flavor_id | None |
| ha | False |
| id | 3ce87c25-9847-4c92-8f54-c50b88933396 |
| interfaces_info | [{"subnet_id": "4fce422c-02a6-49ea-b109-ba6102a0cc36" |
"ip_address": "10.10.10.1", |
"port_id": "b68045bf-ef27-4c3c-be87-e6b8c04c7b31"}] |
| name | router |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| revision_number | 4 |
| routes | |
| status | ACTIVE |
| tags | |
| updated_at | 2020-04-14T06:33:45Z |
+-------------------------+-------------------------------------------------------------------------------------------+
4. 클라우드 이미지
4.1 이미지 업로드
이번엔 클라우드 이미지를 업로드 해본다.
[root@localhost ~]# openstack image create "CentOS7-Minimal" \
> --file CentOS7-Minimal-origin.qcow2 \
> --disk-format qcow2 \
> --container-format bare
+------------------+------------------------------------------------------------------------------------+
| Field | Value |
+------------------+------------------------------------------------------------------------------------+
| checksum | 47325d6329501b9d8fa635ad4bc43c4e |
| container_format | bare |
| created_at | 2020-04-14T06:51:46Z |
| disk_format | qcow2 |
| file | /v2/images/fc951e0b-54df-4b89-918b-246155d6cb0c/file |
| id | fc951e0b-54df-4b89-918b-246155d6cb0c |
| min_disk | 0 |
| min_ram | 0 |
| name | CentOS7-Minimal |
| owner | c427cda7925f47dc9058bb8f8bec87c6 |
| properties | os_hash_algo='sha512', os_hash_value='068a………90', |
os_hidden='False' |
| protected | False |
| schema | /v2/schemas/image |
| size | 782056960 |
| status | active |
| tags | |
| updated_at | 2020-04-14T06:52:38Z |
| virtual_size | None |
| visibility | shared |
+------------------+---------------------------------------------------------------------------------------+
5. 볼륨
5.1 볼륨 생성 및 볼륨에 이미지 업로드
볼륨의 크기를 너무 작게 설정하고 이미지를 넣으면 용량부족으로 오류가 발생하므로 10GB이상으로 설정을 권장한다.
[root@localhost ~]# openstack volume create \
> C7_volume \
> --size 10 \
> --image "CentOS7-Minimal" \
> --type iscsi
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2020-04-14T07:05:24.000000 |
| description | None |
| encrypted | False |
| id | b252c002-7990-4911-8d7d-d3b9e39e96b4 |
| multiattach | False |
| name | C7_volume |
| properties | |
| replication_status | None |
| size | 10 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | iscsi |
| updated_at | None |
| user_id | 53b75f8e6d5a449f96a998490931f5a8 |
+---------------------+--------------------------------------+
6. 보안 그룹
6.1 보안 그룹 생성
기본적으로 default 보안그룹은 모든 인스턴스에 제공되며, 인스턴스에 대한 원격 접근을 막는 방화벽 규칙을 포함한다.
CirrOS 와 같은 리눅스 이미지를 위해서 적어도 ICMP(ping)와 보안 셸(SSH)를 허용하는 것이 좋다.
[root@localhost ~]# openstack security group create T_CJU_S_group
+-----------------+---------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+---------------------------------------------------------------------------------------+
| created_at | 2020-04-14T07:46:56Z |
| description | T_CJU_S_group |
| id | 57318bf3-e79d-4adf-969f-d835cf5fe833 |
| name | T_CJU_S_group |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| revision_number | 1 |
| rules | created_at='2020-0…56Z', direction='egress', |
ethertype='IPv4', id='a7c3…b2', updated_at='202…6Z' |
| | created_at='2020-0…6:56Z', direction='egress', |
ethertype='IPv6', id='c0…6b', updated_at='202…Z |
| tags |
| updated_at | 2020-04-14T07:46:56Z |
+-----------------+---------------------------------------------------------------------------------------+
6.1.1 ICMP 추가
[root@localhost ~]# openstack security group rule create --proto icmp T_CJU_S_group
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2020-04-14T07:53:27Z |
| description | |
| direction | ingress |
| ether_type | IPv4 |
| id | ea768c04-bb41-4c0d-8533-395000db4950 |
| name | None |
| port_range_max | None |
| port_range_min | None |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| protocol | icmp |
| remote_group_id | None |
| remote_ip_prefix | 0.0.0.0/0 |
| revision_number | 0 |
| security_group_id | 57318bf3-e79d-4adf-969f-d835cf5fe833 |
| updated_at | 2020-04-14T07:53:27Z |
+-------------------+--------------------------------------+
6.1.2 SSH(22) 추가
[root@localhost ~]# openstack openstack security group rule create --proto tcp --dst-port 22 T_CJU_S_group
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2020-04-14T07:55:17Z |
| description | |
| direction | ingress |
| ether_type | IPv4 |
| id | 8c93764d-c158-4127-a630-ed0dae4c2656 |
| name | None |
| port_range_max | 22 |
| port_range_min | 22 |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| protocol | tcp |
| remote_group_id | None |
| remote_ip_prefix | 0.0.0.0/0 |
| revision_number | 0 |
| security_group_id | 57318bf3-e79d-4adf-969f-d835cf5fe833 |
| updated_at | 2020-04-14T07:55:17Z |
+-------------------+--------------------------------------+
6.1.3 생성된 보안 그룹 확인
규칙을 추가한 후에 openstack security group show NAME을 이용해 추가된 정보를 볼 수 있다.
[root@localhost ~]# openstack security group show T_CJU_S_group
+-----------------+------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------+-------------------------------------------------------------------------------------------+
| created_at | 2020-04-14T07:46:56Z |
| description | T_CJU_S_group |
| id | 57318bf3-e79d-4adf-969f-d835cf5fe833 |
| name | T_CJU_S_group |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| revision_number | 3 |
| rules | created_at… port_range_max='22', port_range_min='22', protocol='tcp'… |
| … |
| | created_at=…protocol='icmp', remote_ip_prefix='0.0.0.0/0', updated_at… |
| tags | [] |
| updated_at | 2020-04-14T07:55:17Z |
+-----------------+-----------------------------------------------------------------------------------------------+
7. 인스턴스
7.1 인스턴스 구성 및 생성
이제 전에 생성한 볼륨, 이미지, 보안그룹 등을 이용해 인스턴스를 생성해 서버를 만들어보겠다.
여기선 flavor도 설정 해야되므로 뭐가 있는지 확인 해본다.
[root@localhost ~]# openstack flavor list
+----+-----------------+-----------+-------+---------------+-----------+------------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------------+-----------+-------+---------------+----------+-------------+
| 1 | m1.tiny | 512 | 1 | 0 | 1 | True |
| 2 | m1.small | 2048 | 20 | 0 | 1 | True |
| 3 | m1.medium | 4096 | 40 | 0 | 2 | True |
| 4 | m1.large | 8192 | 80 | 0 | 4 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | 8 | True |
+----+------------------+---------+---------+--------------+----------+------------+
이제 인스턴스를 생성 해본다.
조금만 기다리면 status가 Active로 바뀌면서 생성이 끝난다.
[root@localhost ~]# openstack server create T_CJU_server1 \
> --volume C7_volume \
> --flavor m1.tiny \
> --security-group T_CJU_S_group \
> --network private
+-----------------------------+---------------------------------------------+
| Field | Value |
+-----------------------------+---------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-STS:power_state | NOSTATE |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | None |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | |
| adminPass | B33YjWfCXUsG |
| config_drive | |
| created | 2020-04-14T08:17:02Z |
| flavor | m1.tiny (1) |
| hostId | |
| id | d277e1d4-f6ca-41c0-b632-6a2ae28f13eb |
| image | |
| key_name | None |
| name | T_CJU_server1 |
| progress | 0 |
| project_id | c427cda7925f47dc9058bb8f8bec87c6 |
| properties | |
| security_groups | name='57318bf3-e79d-4adf-969f-d835cf5fe833' |
| status | BUILD |
| updated | 2020-04-14T08:17:03Z |
| user_id | 53b75f8e6d5a449f96a998490931f5a8 |
| volumes_attached | |
+-----------------------------+---------------------------------------------+
7.2 인스턴스 Floating IP 할당
인스턴스를 생성 할때는 내부ip만 할당을 해 주었고 외부와 통신을 할라면 외부IP(Floating IP)를 할당 해야한다.
형관펜 부분 IP를 기억하자
[root@localhost ~]# openstack floating ip create public
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| created_at | 2020-04-14T08:40:44Z |
…
| floating_ip_address | 192.168.100.9 |
| floating_network_id | 1fddeaf8-9dad-4976-a26b-f9c89fd0f702 |
| id | 936a53db-e7d4-4cef-84b4-9ee805ae1916 |
| name | 192.168.214.9 |
…
| updated_at | 2020-04-14T08:40:44Z |
+---------------------+--------------------------------------+
방금 생성된 Floating IP(형관펜 부분)를 이제 인스턴스에 연결을 해본다.
[root@localhost ~]# openstack server add floating ip T_CJU_server1 192.168.214.9
'Cloud > Openstack' 카테고리의 다른 글
Openstack Instance VNC URL 접속법 (0) | 2021.06.09 |
---|---|
[heat] YAML파일 Example (0) | 2021.05.21 |
Openstack - cinder 크기 확장 (0) | 2021.05.17 |
OpenStack 환경설정 파일 (0) | 2021.05.17 |
OpenStack - Train 버전 설치(PackStack.Ver) (0) | 2021.05.17 |