컨트롤러 노드 - 오픈스택 환경 구성 및 관리
-> 클러스터 구성후 사용(3대 이상)
컴퓨트 노드 - 생성하는 인스턴스에 리소스 제공
네트워크 노드 - 외부 통신과 관련한 부분 담당, 네트워크 구성
스토리지 노드(HCI - 스토리지 서비스를 통한 스토리지 제공
keystone(ID관리), horizon(대시보드), nova(컴퓨트-인스턴스 스케줄링), glance(이미지 관리), neutron(네트워크), cinder(블록스토리지), manila(공유 스토리지), heat(오케스트레이션-배포관리), ceilometer/gnocchi/aodh(사용량 측정)
역할 확인 : openstack role list

역할 할당 목록: openstack role assignment list --names

역할 생성 : openstack role add --project demo-project --user demo-user member

역할 삭제 : openstack role remove --project demo-project --user demo-user member

sudo docker stop $(sudo docker ps | grep -e heat -e gnocchi -e aodh -e ceilo -e octavia | awk '{print $1}')
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role create vm-list-viewer
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| domain_id | None |
| id | a6b6e454884d46dbbe03a0a3a191df92 |
| name | vm-list-viewer |
| options | {} |
+-------------+----------------------------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role add --user test-user --project demo-project vm-list-viewer
No user with a name or ID of 'test-user' exists.
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role assignment list --names --user -test-user
usage: openstack role assignment list [-h] [-f {csv,json,table,value,yaml}] [-c COLUMN] [--quote {all,minimal,none,nonnumeric}]
[--noindent] [--max-width <integer>] [--fit-width] [--print-empty]
[--sort-column SORT_COLUMN] [--sort-ascending | --sort-descending] [--effective]
[--role <role>] [--role-domain <role-domain>] [--names] [--user <user>]
[--user-domain <user-domain>] [--group <group>] [--group-domain <group-domain>]
[--domain <domain> | --project <project> | --system <system>]
[--project-domain <project-domain>] [--inherited] [--auth-user] [--auth-project]
openstack role assignment list: error: argument --user: expected one argument
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role assignment list --names --user test-user
No user with a name or ID of 'test-user' exists.
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack user create --password 123 test-user
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | d3feb4147e2247939ba5c87aa692b2e4 |
| name | test-user |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role assignment list --names --user test-user
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack role assignment list --names --user test-user
(os-venv) vagrant@openstack-aio:/etc/kolla$
(os-venv) vagrant@openstack-aio:/etc/kolla$
(os-venv) vagrant@openstack-aio:/etc/kolla$ ㅣㄴ
-bash: ㅣㄴ: command not found
(os-venv) vagrant@openstack-aio:/etc/kolla$ ls
admin-openrc.sh haproxy neutron-server redis-sentinel
aodh-api heat-api nova-api swift
aodh-evaluator heat-api-cfn nova-api-bootstrap swift-account-auditor
aodh-listener heat-engine nova-cell-bootstrap swift-account-reaper
aodh-notifier horizon nova-compute swift-account-replication-server
ceilometer-central iscsid nova-conductor swift-account-replicator
ceilometer-compute keepalived nova-libvirt swift-account-server
ceilometer-notification keystone nova-novncproxy swift-container-auditor
cinder-api keystone-fernet nova-scheduler swift-container-replication-server
cinder-backup keystone-ssh nova-ssh swift-container-replicator
cinder-scheduler kolla-toolbox octavia-api swift-container-server
cinder-volume manila-api octavia-certificates swift-container-updater
clouds.yaml manila-data octavia-health-manager swift-object-auditor
config manila-scheduler octavia-housekeeping swift-object-expirer
cron manila-share octavia-openrc.sh swift-object-replication-server
demo-user_admin.sh mariadb octavia-worker swift-object-replicator
fluentd mariadb-clustercheck openvswitch-db-server swift-object-server
glance-api memcached openvswitch-vswitchd swift-object-updater
globals.d neutron-dhcp-agent passwords.yml swift-proxy-server
globals.yml neutron-l3-agent placement-api swift-rsyncd
gnocchi-api neutron-metadata-agent rabbitmq tgtd
gnocchi-metricd neutron-openvswitch-agent redis
(os-venv) vagrant@openstack-aio:/etc/kolla$ cp admin-openrc.sh test-openrc.sh
(os-venv) vagrant@openstack-aio:/etc/kolla$ cat test-openrc.sh
# Ansible managed
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_PROJECT_NAME='demo-project'
export OS_TENANT_NAME='admin'
export OS_USERNAME='test-user'
export OS_PASSWORD='123'
export OS_AUTH_URL='http://192.168.56.250:5000'
export OS_INTERFACE='internal'
export OS_ENDPOINT_TYPE='internalURL'
export OS_MANILA_ENDPOINT_TYPE='internalURL'
export OS_IDENTITY_API_VERSION='3'
export OS_REGION_NAME='Seoul'





실습 설정
- 프로젝트 1개 - practice-project
- 사용자 2개 - operator(권한:admin역할) , normal-user(권한:member역할)
- 인증파일 준비 - operator.sh , normal.sh
openstack user list
openstack role assignment list --project practice-project --names
openstack user create --domain default --password '123' operator
openstack user create --domain default --password '123' normal-user
openstack project create practice-project
openstack role add --project practice-project --user operator admin
openstack role add --project practice-project --user normal-user member
(os-venv) vagrant@openstack-aio:/etc/kolla$ cat operator.sh
# Ansible managed
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_PROJECT_NAME='practice-project'
export OS_TENANT_NAME='operator'
export OS_USERNAME='operator'
export OS_PASSWORD='123'
export OS_AUTH_URL='http://192.168.56.250:5000'
export OS_INTERFACE='internal'
export OS_ENDPOINT_TYPE='internalURL'
export OS_MANILA_ENDPOINT_TYPE='internalURL'
export OS_IDENTITY_API_VERSION='3'
export OS_REGION_NAME='Seoul'
export OS_AUTH_PLUGIN='password'
(os-venv) vagrant@openstack-aio:/etc/kolla$ cat normal.sh
# Ansible managed
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_PROJECT_NAME='practice-project'
export OS_TENANT_NAME='admin'
export OS_USERNAME='normal-user'
export OS_PASSWORD='123'
export OS_AUTH_URL='http://192.168.56.250:5000'
export OS_INTERFACE='internal'
export OS_ENDPOINT_TYPE='internalURL'
export OS_MANILA_ENDPOINT_TYPE='internalURL'
export OS_IDENTITY_API_VERSION='3'
export OS_REGION_NAME='Seoul'
실습
- cirrors 이미지를 my-image라는 이름으로 생성
- 보호 설정을 활성화
- 삭제 시도
- test-project 라는 프로젝트 생성
- test-user 사용자 생성
- test-user 사용자에 test-project에 대한 member 역할 설정
- test-user 사용자로 이미지 목록 확인
- 가시성 설정을 public으로 변경
- test-user 사용자로 다시 확인

openstack image create --file cirros-0.6.2-x86_64-disk.img --disk-format qcow2 demo-im openstack image list
(os-venv) vagrant@openstack-aio:~$ ls
all-in-one cirros-0.6.2-x86_64-disk.img octavia
amphora-x64-haproxy.d debian-12-genericcloud-amd64.qcow2 os-venv
amphora-x64-haproxy.qcow2 manila-service-image-master.qcow2 VBoxGuestAdditions_7.1.6.iso
(os-venv) vagrant@openstack-aio:~$ openstack image create --file cirros-0.6.2-x86_64-disk.img --disk-format qcow2 demo-im g
+------------------+----------------------------------------------------------------------------------------------------- -----------------------------------------+
| Field | Value |
+------------------+----------------------------------------------------------------------------------------------------- -----------------------------------------+
| container_format | bare |
| created_at | 2025-05-28T06:33:33Z |
| disk_format | qcow2 |
| file | /v2/images/fd0fec44-42e3-4925-bb31-f9412798797f/file |
| id | fd0fec44-42e3-4925-bb31-f9412798797f |
| min_disk | 0 |
| min_ram | 0 |
| name | demo-img |
| owner | 00855a5cafa646478a16f350df1f00f6 |
| properties | os_hidden='False', owner_specified.openstack.md5='', owner_specified.openstack.object='images/demo-i mg', owner_specified.openstack.sha256='' |
| protected | False |
| schema | /v2/schemas/image |
| status | queued |
| tags | |
| updated_at | 2025-05-28T06:33:33Z |
| visibility | shared |
+------------------+----------------------------------------------------------------------------------------------------- -----------------------------------------+
(os-venv) vagrant@openstack-aio:~$ openstack image list
+--------------------------------------+---------------------+--------+
| ID | Name | Status |
+--------------------------------------+---------------------+--------+
| 6906bd8f-7956-4d85-ad43-87af6da739b7 | amphora-x64-haproxy | active |
| fd0fec44-42e3-4925-bb31-f9412798797f | demo-img | active |
| 4d9abb87-9dbb-4a4a-a945-6fbe87dc090c | my-image | queued |
| 0eb99ac7-03d5-4d35-858f-8a541f9af77b | my-image1 | queued |
| 2d88772b-3fd4-4558-be12-b430b5a00519 | my-image1 | queued |
+--------------------------------------+---------------------+--------+
(os-venv) vagrant@openstack-aio:~$
openstack image set --unprotected 4d9abb87-9dbb-4a4a-a945-6fbe87dc090c



(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack flavor list
+--------------------------------------+------+-----+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+------+-----+------+-----------+-------+-----------+
| da5dc3b9-9177-4341-b94d-c1299008f590 | mini | 512 | 1 | 0 | 1 | True |
+--------------------------------------+------+-----+------+-----------+-------+-----------+
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack flavor list --all
+--------------------------------------+---------+-----+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+---------+-----+------+-----------+-------+-----------+
| 200 | amphora | 512 | 5 | 0 | 1 | False |
| da5dc3b9-9177-4341-b94d-c1299008f590 | mini | 512 | 1 | 0 | 1 | True |
+--------------------------------------+---------+-----+------+-----------+-------+-----------+
openstack flavor create --ram 512 --disk 1 --vcpus 1 mini-flavoropenstack flavor create --ram 1024 --disk 10 --vcpus 1 --ephemeral 1 --swap 12 demo-disk





(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack flavor show demo-flavor
+----------------------------+--------------------------------------+
| Field | Value |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| access_project_ids | None |
| description | None |
| disk | 10 |
| id | 76df590a-6e24-465b-98f6-a500b6ff4355 |
| name | demo-flavor |
| os-flavor-access:is_public | True |
| properties | |
| ram | 2028 |
| rxtx_factor | 1.0 |
| swap | 0 |
| vcpus | 1 |
+----------------------------+--------------------------------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack network

openstack network create new-intopenstack network list
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack network list
+--------------------------------------+------------------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+------------------------+--------------------------------------+
| 1b3dc678-3fc3-435c-9d4e-642100de4763 | lb-mgmt-net | e485a912-594b-4c5d-a7a3-46bee0139c2a |
| b026697c-fb06-4536-b7a1-e58b1dc5f402 | manila_service_network | |
| d52a595d-d6e5-41a0-b01d-1115a4550c42 | demo-network | 281028ff-1f61-4ce9-824a-a3eb13e01e1a |
+--------------------------------------+------------------------+--------------------------------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$
openstack subnet create --network demo-network --subnet-range 172.17.0.0/24 --gateway 172.17.0.1 --dhcp --dns-nameserver 8.8.8.8 --allocation-pool start=172.17.0.2,end=172.17.0.254 new-subnet
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack subnet create --network demo-network --subnet-range 172.17.0.0/24 --gateway 172.17.0.1 --dhcp --dns-nameserver 8.8.8.8 --allocation-pool start=172.17.0.2,end=172.17.0.254 new-subnet
+----------------------+--------------------------------------+
| Field | Value |
+----------------------+--------------------------------------+
| allocation_pools | 172.17.0.2-172.17.0.254 |
| cidr | 172.17.0.0/24 |
| created_at | 2025-05-28T07:23:13Z |
| description | |
| dns_nameservers | 8.8.8.8 |
| dns_publish_fixed_ip | None |
| enable_dhcp | True |
| gateway_ip | 172.17.0.1 |
| host_routes | |
| id | 25bc9fb4-aa59-4450-a922-cc9ebb58d25f |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | new-subnet |
| network_id | d52a595d-d6e5-41a0-b01d-1115a4550c42 |
| project_id | 00855a5cafa646478a16f350df1f00f6 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2025-05-28T07:23:13Z |
+----------------------+--------------------------------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$ openstack subnet list
+--------------------------------------+----------------+--------------------------------------+----------------+
| ID | Name | Network | Subnet |
+--------------------------------------+----------------+--------------------------------------+----------------+
| 25bc9fb4-aa59-4450-a922-cc9ebb58d25f | new-subnet | d52a595d-d6e5-41a0-b01d-1115a4550c42 | 172.17.0.0/24 |
| 281028ff-1f61-4ce9-824a-a3eb13e01e1a | demo-subnet | d52a595d-d6e5-41a0-b01d-1115a4550c42 | 192.168.0.0/24 |
| e485a912-594b-4c5d-a7a3-46bee0139c2a | lb-mgmt-subnet | 1b3dc678-3fc3-435c-9d4e-642100de4763 | 10.1.0.0/24 |
+--------------------------------------+----------------+--------------------------------------+----------------+
(os-venv) vagrant@openstack-aio:/etc/kolla$

openstack network delete demo-network실습
- 이미지 생성
- 이름: test-img / 파일:cirros / 유형: qcow2/ 가시성:share/ 보호설정은 필요없음
- 이름: debian-img / 파일:debian / 유형: qcow2/ 가시성:public/ 보호설정은 활성화
- 플레이버 생성
- 이름: mini / vcpu:1, ram:512M, root-disk:1G
- 이름: demo-flavor, vcpu:1, ram:2048M, root-disk:10G
- 네트워크 생성
- 네트워크 이름: internal,
- subnet이름: internal-subnet, ip대역: 192.168.100.0/24, gateway:192.168.100.1, DNS:8.8.8.8
openstack image create "test-img" --file cirros-0.6.2-x86_64-disk.img --disk-format qcow2 --container-format bare --sharedopenstack image create "debian-img" --file debian-12-genericcloud-amd64.qcow2 --disk-format qcow2 --container-format bare --public --protected


openstack flavor create --ram 512 --disk 1 --vcpus 1 mini-flavoropenstack flavor create --ram 2028 --disk 10 --vcpus 1 demo-flavor
openstack network create internal && openstack subnet create internal-subnet --network internal --subnet-range 192.168.100.0/24 --gateway 192.168.100.1 --dns-nameserver 8.8.8.8





(os-venv) vagrant@openstack-aio:~$ openstack server create --image test-img --flavor mini-flavor --network internal test-vm
+-------------------------------------+----------------------------------------------------+
| Field | Value |
+-------------------------------------+----------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-SRV-ATTR:host | None |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None |
| OS-EXT-SRV-ATTR:instance_name | |
| 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 | vy5RpQnmvzmg |
| config_drive | |
| created | 2025-05-28T08:35:49Z |
| flavor | mini-flavor (6c4f3d8a-799b-44e1-8035-7e56966b086f) |
| hostId | |
| id | e84dd025-363c-41bf-bdf6-ad639ec4cd33 |
| image | test-img (2ee4f418-d721-4fe4-aebf-0920206ce358) |
| key_name | None |
| name | test-vm |
| progress | 0 |
| project_id | 00855a5cafa646478a16f350df1f00f6 |
| properties | |
| security_groups | name='default' |
| status | BUILD |
| updated | 2025-05-28T08:35:50Z |
| user_id | 58d8e1d0c87143aaad968509ea167b17 |
| volumes_attached | |
+-------------------------------------+----------------------------------------------------+
openstack server create --image test-img --flavor mini-flavor --network internal test-vm


