Heat: Orchestration Service (오케스트레이션 서비스)
🔨 데이터베이스 및 credential 생성
🟢 mysql 접속하여 데이터베이스 생성 및 접근 권한 설정 :
# mysql -u root -p
> CREATE DATABASE heat;
> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'localhost' IDENTIFIED BY 'HEAT_DBPASS';
> GRANT ALL PRIVILEGES ON heat.* TO 'heat'@'%' \ IDENTIFIED BY 'HEAT_DBPASS';
🟢 서비스 credential 생성
- Heat 유저 생성 , 역할 및 프로젝트 연결:
# openstack user create --domain default --password-prompt heat
User Password:
Repeat User Password:
# openstack role add --project service --user heat admin
- heat & heat-cfn 서비스 개체 생성 :
# openstack service create --name heat --description "Orchestration" orchestration
# openstack service create --name heat-cfn --description "Orchestration" cloudformation
🟢 서비스 endpoint 생성 :
# openstack endpoint create --region RegionOne orchestration public http://controller:8004/v1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne orchestration internal http://controller:8004/v1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne orchestration admin http://controller:8004/v1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne cloudformation public http://controller:8000/v1
# openstack endpoint create --region RegionOne cloudformation internal http://controller:8000/v1
# openstack endpoint create --region RegionOne cloudformation admin http://controller::8000/v1
🟢 stack을 관리하기 위해 오케스트레이션 관련 추가 정보 입력 :
- heat 도메인 생성하여 해당 도메인에 stack용 user (heat_domain_admin)및 project 를 포함시킨다.
# openstack domain create --description "Stack projects and users" heat
# openstack user create --domain heat --password-prompt heat_domain_admin
User Password:
Repeat User Password:
# openstack role add --domain heat --user-domain heat --user heat_domain_admin admin
//demo user도 스택 관리 가능할 수 있게 설정
# openstack role create heat_stack_owner
# openstack role add --project demo --user demo heat_stack_owner //heat_stack_owner는 스택을 관리하는 각 user에 추가되어야 함.
# openstack role create heat_stack_user
heat_stack_owner에 역할 부여할 때 사용할 demo 유저 생성
🔨 구성요소 설치
🟢 관련 패키지 설치 :
# yum install openstack-heat-api openstack-heat-api-cfn openstack-heat-engine
🟢 heat 설정 파일 편집:
# vi /etc/heat/heat.conf
[database]
...
connection = mysql+pymysql://heat:HEAT_DBPASS@controller/heat
[DEFAULT]
...
transport_url = rabbit://openstack:RABBIT_PASS@controller
heat_metadata_server_url = http://controller:8000
heat_waitcondition_server_url = http://controller:8000/v1/waitcondition
stack_domain_admin = heat_domain_admin
stack_domain_admin_password = HEAT_DOMAIN_PASS
stack_user_domain_name = heat
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = heat
password = HEAT_PASS
[trustee]
...
auth_type = password
auth_url = http://controller:35357
username = heat
password = HEAT_PASS
user_domain_name = default
[clients_keystone]
...
auth_uri = http://controller:5000
🟢 데이터베이스 테이블 생성 :
# su -s /bin/sh -c "heat-manage db_sync" heat
🔨 설치 마무리
# systemctl enable openstack-heat-api.service openstack-heat-api-cfn.service openstack-heat-engine.service
# systemctl start openstack-heat-api.service openstack-heat-api-cfn.service openstack-heat-engine.service
📍 Verification
# . admin-openrc
# openstack orchestration service list
이때, host 즉 컴트롤러 노드의 CPU 개수 만큼 heat-engine 컴포넌트가 출력되어야 함
🔨 HEAT 간단한 실습 : 인스턴스 생성
🟢 Template 작성 :
- demo-template.yml
heat_template_version: 2015-10-15
description: Launch a basic instance with CirrOS image
parameters:
NetID:
type: string
description: Network ID to use for the instance.
resources:
server:
type: OS::Nova::Server
properties:
image: cirros
flavor: m1.tiny
user_data:
get_file: instance_passwordauth.sh // 서버에 keypair없이 접속할 수 있게 configuration파일 작성해둠
networks:
- network: { get_param: NetID } // stack 생성시 파라미터값으로 네트워크 id를 받음
outputs:
instance_name:
description: Name of the instance.
value: { get_attr: [ server, name ] }
instance_ip:
description: IP address of the instance.
value: { get_attr: [ server, first_address ] }
-instance_passwordauth.sh
#cloud-config
password: test123
chpasswd: { expire: False }
ssh_pwauth: True
🟢 Template으로 Stack 생성 :
- demo 계정으로 credential 인증:
network 생성 및 heat 서비스 시작 시 언급되는 demo 에 주의해야 할 필요가 있다.
🚨 공식문서대로 설치했다면, demo credential 스크립트에 user가 myuser , role이 myrole이 배정되어있을 것이다.🚨
keystone에서 예시로 만들었던 myuser 프로젝트 계정 demo script 를 다음과 같이 수정 필요
# . admin-openrc
# openstack role add --project demo --user demo demo
# cat demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=test123
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
# . demo-openrc
# openstack network list | awk '/ provider1 / { print $2 }'
b47074a3-9489-490a-90d6-bbbae4c38a11
# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.tiny
# openstack stack create -t demo-template.yml --parameter "NetID=b47074a3-9489-490a-90d6-bbbae4c38a11" firstStack
🚨 Error : 설치 마무리 ERROR:NONE 에러
keystone관련 문제라는 log확인 후,
오픈스택 다른 서비스 이용 시도해보았으나
openstack imgae list 등 다른 프로젝트 관련 인증은 잘 이루어졌음
🔫 Trouble shooting :
🟢 heat설치에서 인증이나 비번이 잘 입력되지 못한 것으로 판단
다시 데이터베이스부터 drop하며 새로 설치 시작하자 문제 발견!
openstack role add --project services --user heat admin 공식문서에는
service 프로젝트가 아닌 services라고 되어 있어 단순 복붙하게 되면 오류가 뜰 수 있음 !
🟢 도메인도 새로 설치하고자 하는데, enable 상태에서는 지울 수 없음
domain 관련 명령어 검색하여 비활성화 > 삭제 필요
# openstack domain set heat --disable
# openstack domain delete heat
🚨 Error 2 : Instance get stuck when booting grub
🔫 Trouble shooting :
컴퓨트 노드에서 , /etc/nova/nova.conf 파일에서
[libvirt] 섹션 내용 수정하니 정상 접속 가능
virt_type=qemu
'자기발전소 > # Manually Install OpenStack' 카테고리의 다른 글
OpenStack Barbican on CentOS(Rocky) (0) | 2020.10.02 |
---|---|
OpenStack Heat-dashboard on CentOS (0) | 2020.09.29 |
OpenStack Cinder on Centos(Rocky) 2 [Storage Node] (0) | 2020.09.25 |
Openstack Cinder on Centos (Rocky) 1 [Controller Node] (0) | 2020.09.25 |
Openstack Swift on Centos (Rocky) 3 [Ring] (1) | 2020.08.23 |