OpenStack Caracal : How to use Heat2024/05/22 |
How to use the OpenStack Orchestration Service (Heat). This example is based on the environment like follows. ------------+--------------------------+--------------------------+------------ | | | eth0|10.0.0.30 eth0|10.0.0.50 eth0|10.0.0.51 +-----------+-----------+ +-----------+-----------+ +-----------+-----------+ | [ dlp.srv.world ] | | [ network.srv.world ] | | [ node01.srv.world ] | | (Control Node) | | (Network Node) | | (Compute Node) | | | | | | | | MariaDB RabbitMQ | | Neutron L2/L3 Agent | | Libvirt | | Memcached Nginx | | Neutron Metadata | | Nova Compute | | Keystone httpd | | Open vSwitch | | Neutron L2 Agent | | Glance Nova API | | iSCSI Target | | Open vSwitch | | Neutron Server | | Cinder Volume | | | | Neutron Metadata | | Heat API/Engine | | | | Cinder API | | | | | +-----------------------+ +-----------------------+ +-----------------------+ |
[1] | Deploy Instances with Heat services and templates. The example below is on the Control Node. |
root@dlp ~(keystone)#
apt -y install python3-heatclient heat_template_version: 2021-04-16 description: Heat Sample Template parameters: ImageID: type: string description: Image used to boot a server NetID: type: string description: Network ID for the server resources: server1: type: OS::Nova::Server properties: name: "Heat_Deployed_Server" image: { get_param: ImageID } flavor: "m1.small" networks: - network: { get_param: NetID } outputs: server1_private_ip: description: IP address of the server in the private network value: { get_attr: [ server1, first_address ] }
root@dlp ~(keystone)#
openstack image list +--------------------------------------+------------+--------+ | ID | Name | Status | +--------------------------------------+------------+--------+ | 7620a182-99f2-4132-9c6e-4b2da962b241 | Ubuntu2404 | active | +--------------------------------------+------------+--------+root@dlp ~(keystone)# openstack network list +---------------------------------+---------+----------------------------------+ | ID | Name | Subnets | +---------------------------------+---------+----------------------------------+ | 5e99fe3a-c28a-47b3-ae5f- | public | 5f767674-473e-402c-ba60- | | 504fa513709b | | cc6d6b9e5513 | | 78a330d7-074f-491d-a820- | private | 5ac5f7dc-c275-48a1-aaac- | | 2b5e87f5602f | | 745dd2f61ea7 | +---------------------------------+---------+----------------------------------+root@dlp ~(keystone)# Int_Net_ID=$(openstack network list | grep private | awk '{ print $2 }')
# create an instance from the template root@dlp ~(keystone)# openstack stack create -t sample-stack.yml --parameter "ImageID=Ubuntu2404;NetID=$Int_Net_ID" Sample-Stack +---------------------+--------------------------------------+ | Field | Value | +---------------------+--------------------------------------+ | id | 3d7f5aa5-eba7-4801-9d12-a1f3533f9695 | | stack_name | Sample-Stack | | description | Heat Sample Template | | creation_time | 2024-05-22T01:42:25Z | | updated_time | None | | stack_status | CREATE_IN_PROGRESS | | stack_status_reason | Stack CREATE started | +---------------------+--------------------------------------+ # turn to [CREATE_COMPLETE] after few minutes later like follows root@dlp ~(keystone)# openstack stack list +------------+------------+------------+--------------+---------------+--------------+ | ID | Stack Name | Project | Stack Status | Creation Time | Updated Time | +------------+------------+------------+--------------+---------------+--------------+ | 3d7f5aa5- | Sample- | 9c5145f76f | CREATE_COMPL | 2024-05- | None | | eba7-4801- | Stack | d84324bdd2 | ETE | 22T01:42:25Z | | | 9d12- | | b1b61658a2 | | | | | a1f3533f96 | | 82 | | | | | 95 | | | | | | +------------+------------+------------+--------------+---------------+--------------+ # the instance is running which is created from the Heat template root@dlp ~(keystone)# openstack server list +--------------+--------------+--------+---------------+------------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------+--------------+--------+---------------+------------+----------+ | 2f4a92be- | Heat_Deploye | ACTIVE | private=192.1 | Ubuntu2404 | m1.small | | 2734-42b1- | d_Server | | 68.100.81 | | | | ba4e- | | | | | | | ac92aa628e04 | | | | | | +--------------+--------------+--------+---------------+------------+----------+ # delete the instance root@dlp ~(keystone)# openstack stack delete --yes Sample-Stack root@dlp ~(keystone)# openstack stack list |
[2] |
The guide for writing templates are opened on the official site below.
⇒ https://docs.openstack.org/heat/latest/template_guide/index.html |
[3] | If you'd like to use Heat with a common user, it needs to add the user in Heat role. |
root@dlp ~(keystone)# openstack role list +----------------------------------+------------------+ | ID | Name | +----------------------------------+------------------+ | 434c72643a134d18afd1d12094cfc75d | service | | 5afd228854f24746b11c26350784938a | heat_stack_owner | | a15f53c1498a442281b01059ff6c9e0f | heat_stack_user | | b5c98a36bb6e4258a76a76bc96727fac | reader | | d7e77a716fd34ac2b6e8a91c19d5d91d | member | | d8f785820bf545f897e1fb2f35adefca | manager | | eccdad43835c44ad80be889f658236f3 | admin | +----------------------------------+------------------+root@dlp ~(keystone)# openstack project list +----------------------------------+-----------+ | ID | Name | +----------------------------------+-----------+ | 18ede7365bdc430093e8fd4a90f77369 | hiroshima | | 9c5145f76fd84324bdd2b1b61658a282 | admin | | ab9749e59bdb48e4807a18abb83c9f99 | service | +----------------------------------+-----------+root@dlp ~(keystone)# openstack user list +----------------------------------+-------------------+ | ID | Name | +----------------------------------+-------------------+ | 3293956ed49545e7b8b45fffa0335e24 | admin | | ef82743092ad4032a6c9cbd1c655dab6 | glance | | 615a0611270e4887935501977ff7dff0 | nova | | bf7932c4546a46f89b7133ff11c591c3 | placement | | e83aa70b68ba43528e48067d60c20a4b | neutron | | b9371d015e0d43dca74f29161448ffd2 | serverworld | | 4def6f94581c43a3b2627416608a42b9 | cinder | | 089ecbb2dcaa421aa549bd8efb9f03f2 | heat | | cf935777627845dead14b4a5d7576f3a | heat_domain_admin | +----------------------------------+-------------------+ # for example, add [serverworld] user in [hiroshima] project to [heat_stack_owner] role root@dlp ~(keystone)# openstack role add --project hiroshima --user serverworld heat_stack_owner
# that's OK, common users can create stacks ubuntu@dlp ~(keystone)$ openstack stack list +---------------+--------------+---------------+----------------+--------------+ | ID | Stack Name | Stack Status | Creation Time | Updated Time | +---------------+--------------+---------------+----------------+--------------+ | abe4d9a2- | Sample-Stack | CREATE_COMPLE | 2024-05- | None | | 547e-464e- | | TE | 22T01:46:14Z | | | b688- | | | | | | 4d800475143d | | | | | +---------------+--------------+---------------+----------------+--------------+ubuntu@dlp ~(keystone)$ openstack server list +--------------+--------------+---------+--------------+------------+----------+ | ID | Name | Status | Networks | Image | Flavor | +--------------+--------------+---------+--------------+------------+----------+ | 4b9c9101- | Heat_Deploye | ACTIVE | private=192. | Ubuntu2404 | m1.small | | 2c33-4eea- | d_Server | | 168.100.195 | | | | 9184- | | | | | | | 25fbe0ebff88 | | | | | | | 7fbc24c1- | Ubuntu-2404 | SHUTOFF | private=10.0 | Ubuntu2404 | m1.small | | c0d1-43d6- | | | .0.208, 192. | | | | 87aa- | | | 168.100.130 | | | | 68df83597b57 | | | | | | +--------------+--------------+---------+--------------+------------+----------+ |
Sponsored Link |