This shows you the differences between two versions of the page.
scgc:laboratoare:09 [2018/05/16 16:56] alexandru.carp |
scgc:laboratoare:09 [2021/11/10 17:16] (current) maria.mihailescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratory 09. Openstack===== | + | ===== Openstack===== |
- | * The tasks in this lab will done in the faculty's [[http://cloud.curs.pub.ro/|OpenStack cloud]]. We will create, modify and delete different cloud objects (instances, networks, subnets etc.) | + | * The tasks in this lab will be done in the faculty's [[http://cloud.grid.pub.ro/|OpenStack cloud]]. We will create, modify and delete different cloud objects (instances, networks, subnets etc.) |
- | * For interaction with OpenStack, we will use the official OpenStack clients (''nova'', ''neutron'', ''keystone'' etc.) | + | * For interaction with OpenStack, we will use the official OpenStack clients (''nova'' and ''openstack'') |
- | * All the clients are already installed on ''fep.grid.pub.ro'', so we'll use them from there. | + | * All the clients are already installed on ''fep8.grid.pub.ro'', so we'll use them from there. |
===== Tasks ====== | ===== Tasks ====== | ||
+ | <note warning> | ||
+ | All VM names must contain your username. Replace ''user.name'' with your own username (e.g. ''john.doe'') in the following tasks. If the VM name is not specified or is generic (e.g. ''scgc'', ''vm1''), append your username to them (e.g. ''john.doe.scgc'', ''john.doe.vm1''). | ||
+ | </note> | ||
==== 1. [10p] Authentication ==== | ==== 1. [10p] Authentication ==== | ||
Before using the clients, we must provide the necessary authentication parameters. This is done via an OpenStack RC file. | Before using the clients, we must provide the necessary authentication parameters. This is done via an OpenStack RC file. | ||
- | To obtain your OpenStack RC from [[https://cloud-controller.grid.pub.ro/|Horizon]] (the OpenStack dashboard), go to **Project -> Compute -> Access & Security -> API Access** and click on **Download OpenStack RC file**. | + | To obtain your OpenStack RC from [[https://cloud.grid.pub.ro/|Horizon]] (the OpenStack dashboard), go to **Project -> API Access** and click on **Download OpenStack RC file**. |
- | Upload the file in your home directory on ''fep.grid.pub.ro'' and source it in Bash: | + | Upload the file in your **home directory** on ''fep8.grid.pub.ro'' and source it in Bash: |
<code> | <code> | ||
- | $ source alexandru.carp_prj-openrc.sh | + | $ source spd_prj-openrc.sh |
Please enter your OpenStack Password: | Please enter your OpenStack Password: | ||
</code> | </code> | ||
Line 48: | Line 51: | ||
=== Images === | === Images === | ||
- | Images are handled by the **Glance** client. We will list them using **glance image-list**: | + | Images are handled by the **Glance** client. We will list them using **openstack image list**: |
<code> | <code> | ||
- | $ glance image-list | + | $ openstack image list |
+--------------------------------------+---------------------------------------------+ | +--------------------------------------+---------------------------------------------+ | ||
| ID | Name | | | ID | Name | | ||
Line 82: | Line 85: | ||
</code> | </code> | ||
- | For booting the instance, we will use the **Ubuntu 16.04 Xenial** image, which has the ID **3672370a-af54-47c2-b2c1-d9875952415f**. | + | For booting the instance, we will use the **Ubuntu 16.04 Xenial** image. Use its specific ID that is shown by **openstack image list**. |
- | Let's find some more information about this image using **glance image-show**: | + | Let's find some more information about this image using **openstack image show**: |
<code> | <code> | ||
- | $ glance image-show 3672370a-af54-47c2-b2c1-d9875952415f | + | $ openstack image show 3672370a-af54-47c2-b2c1-d9875952415f |
+------------------+--------------------------------------+ | +------------------+--------------------------------------+ | ||
| Property | Value | | | Property | Value | | ||
Line 110: | Line 113: | ||
=== Flavors === | === Flavors === | ||
- | Flavors are handled in **Nova** (the compute service). We will list them using **nova flavor-list**: | + | Flavors are handled in **Nova** (the compute service). We will list them using **openstack flavor list**: |
<code> | <code> | ||
- | $ nova flavor-list | + | $ openstack flavor list |
+--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | +--------------------------------------+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | ||
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | | | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | | ||
Line 127: | Line 130: | ||
</code> | </code> | ||
- | Let's find more information about the **m1.tiny** flavor, having ID **3c183fea-cea6-489e-8b6e-d34c4bf073ec**, using **nova flavor-show**: | + | Let's find more information about the **m1.tiny** flavor, having ID **3c183fea-cea6-489e-8b6e-d34c4bf073ec**, using **openstack flavor show**: |
<code> | <code> | ||
- | $ nova flavor-show 3c183fea-cea6-489e-8b6e-d34c4bf073ec | + | $ # use your ID provided by openstack flavor list |
+ | $ openstack flavor show 3c183fea-cea6-489e-8b6e-d34c4bf073ec | ||
+----------------------------+--------------------------------------+ | +----------------------------+--------------------------------------+ | ||
| Property | Value | | | Property | Value | | ||
Line 148: | Line 152: | ||
=== Keypairs === | === Keypairs === | ||
- | Keypair are also handled by **Nova**. To list them, we use **nova keypair-list**. You should only see your own keypair(s): | + | Keypair are also handled by **Nova**. To list them, we use **openstack keypair list**. You should only see your own keypair(s): |
<code> | <code> | ||
- | $ nova keypair-list | + | $ openstack keypair list |
+------+-------------------------------------------------+ | +------+-------------------------------------------------+ | ||
| Name | Fingerprint | | | Name | Fingerprint | | ||
Line 158: | Line 162: | ||
</code> | </code> | ||
- | Using **nova keypair-show**, you can see the details, including the public key: | + | Using **openstack keypair show**, you can see the details, including the public key: |
<code> | <code> | ||
- | $ nova keypair-show fep | + | $ openstack keypair show fep |
+-------------+-------------------------------------------------+ | +-------------+-------------------------------------------------+ | ||
| Property | Value | | | Property | Value | | ||
Line 171: | Line 175: | ||
| name | fep | | | name | fep | | ||
| updated_at | - | | | updated_at | - | | ||
- | | user_id | alexandru.carp | | + | | user_id | user.id | |
+-------------+-------------------------------------------------+ | +-------------+-------------------------------------------------+ | ||
- | Public key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqnHjfEFfB6n6CbF5a4wQpnxZkavrJCuX1ivjNoGjUmEa9dn0GS+YB+bWs8Nny8cgNkgzRE1jFcIZ2ByNxahf884G2QNZm+9tufWl3V0GdqZ+sooi5Fry9BGv/DHyRw3/y+w9xSfOoS8pFl/lV3jOfZYEWLRTwVT63SOx1sjOOMJtBxr6IyjHzVWErKlJymuxa7R5u4YqqeCNpqNYCQZqvbbY6iM9Rd4WbmEQgTtpmM6TLE2mpaD9MTeFsoiQxPhCTGCr1EZsLtIdPkowMAxCvVEQ7GU7p4R/8WZtKpujNLboFyZkZm7Ku0JgNdNEc+sl5YzxS9E6BkxlIl1xefEFP alexandru.carp@fep7-1.grid.pub.ro | ||
</code> | </code> | ||
=== Networks === | === Networks === | ||
- | Networks are handled by **Neutron**. We use **neutron net-list** to list all the networks: | + | Networks are handled by **Neutron**. We use **openstack net list** to list all the networks: |
<code> | <code> | ||
- | $ neutron net-list | + | $ openstack net list |
+--------------------------------------+--------+--------------------------------------------------+ | +--------------------------------------+--------+--------------------------------------------------+ | ||
| id | name | subnets | | | id | name | subnets | | ||
Line 190: | Line 193: | ||
Let's show details about: | Let's show details about: | ||
- | * the **vlan9** network, with ID **424666ed-c0e8-4d1c-96fe-c22c56262a87** (using **neutron net-show**) | + | * the **vlan9** network, using **openstack net show** |
- | * its associated subnet, with ID **3f7ca0ff-7855-4f12-b6b4-4c4a763aa22f** (using **neutron subnet-show**) | + | * its associated subnet, using **openstack net show** |
<code> | <code> | ||
- | $ neutron net-show 424666ed-c0e8-4d1c-96fe-c22c56262a87 | + | $ # use the correct ID retrieved openstack net show |
+ | $ openstack net show 424666ed-c0e8-4d1c-96fe-c22c56262a87 | ||
+-----------------+--------------------------------------+ | +-----------------+--------------------------------------+ | ||
| Field | Value | | | Field | Value | | ||
Line 211: | Line 215: | ||
<code> | <code> | ||
- | $ neutron subnet-show 3f7ca0ff-7855-4f12-b6b4-4c4a763aa22f | + | $ # use the correct ID retrieved openstack net show |
+ | $ openstack subnet show 3f7ca0ff-7855-4f12-b6b4-4c4a763aa22f | ||
+-------------------+------------------------------------------------+ | +-------------------+------------------------------------------------+ | ||
| Field | Value | | | Field | Value | | ||
Line 233: | Line 238: | ||
=== Security groups === | === Security groups === | ||
- | Security groups are also handled by **Neutron**, so we'll use **neutron security-group-list**. | + | Security groups are also handled by **Neutron**. We'll use **openstack security group list**. |
<code> | <code> | ||
- | $ neutron security-group-list | + | $ openstack security group list |
+--------------------------------------+---------+----------------------------------------------------------------------+ | +--------------------------------------+---------+----------------------------------------------------------------------+ | ||
| id | name | security_group_rules | | | id | name | security_group_rules | | ||
Line 254: | Line 259: | ||
</code> | </code> | ||
- | For very verbose details, use **neutron security-group-show** and the ID of the security group: | + | For very verbose details, use **openstack security group show** and the ID of the security group: |
<code> | <code> | ||
- | $ neutron security-group-show 8ef0e4b7-4543-48da-b304-00f74c6e20c4 | + | $ openstack security group show 8ef0e4b7-4543-48da-b304-00f74c6e20c4 |
+----------------------+--------------------------------------------------------------------+ | +----------------------+--------------------------------------------------------------------+ | ||
| Field | Value | | | Field | Value | | ||
Line 281: | Line 286: | ||
Finally, after listing all the parameters, we can boot the instance. We will use: | Finally, after listing all the parameters, we can boot the instance. We will use: | ||
- | * **image**: **Ubuntu 16.04 Xenial** (with ID **3672370a-af54-47c2-b2c1-d9875952415f**) | + | * **image**: **Ubuntu 16.04 Xenial** |
- | * **flavor**: **m1.tiny** (with ID **3c183fea-cea6-489e-8b6e-d34c4bf073ec**) | + | * **flavor**: **m1.tiny** |
* **keypair**: your own keypair | * **keypair**: your own keypair | ||
- | * **network**: **vlan9** (with ID **424666ed-c0e8-4d1c-96fe-c22c56262a87**) | + | * **network**: **vlan9** |
* **security-group**: **default** | * **security-group**: **default** | ||
- | * **name**: **scgc** | + | * **name**: **user.name-vm** |
- | For booting, we use **nova boot**: | + | For booting, we use **openstack server create**: |
<code> | <code> | ||
- | $ nova boot --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f\ | + | $ openstack server create --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f \ |
--nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --security-group default --key-name fep scgc | --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --security-group default --key-name fep scgc | ||
+--------------------------------------+------------------------------------------------------------+ | +--------------------------------------+------------------------------------------------------------+ | ||
Line 336: | Line 341: | ||
=== Query === | === Query === | ||
- | We can use **nova list** for listing all instances: | + | We can use **openstack server list** for listing all instances: |
<code> | <code> | ||
- | $ nova list | + | $ openstack server list |
+--------------------------------------+------+--------+------------+-------------+--------------------+ | +--------------------------------------+------+--------+------------+-------------+--------------------+ | ||
| ID | Name | Status | Task State | Power State | Networks | | | ID | Name | Status | Task State | Power State | Networks | | ||
Line 346: | Line 351: | ||
</code> | </code> | ||
- | With **nova show**, we can get details: | + | With **openstack server show**, we can get details: |
<code> | <code> | ||
- | $ nova show acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 | + | $ openstack server show acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 |
+--------------------------------------+------------------------------------------------------------+ | +--------------------------------------+------------------------------------------------------------+ | ||
| Property | Value | | | Property | Value | | ||
Line 392: | Line 397: | ||
=== Stop === | === Stop === | ||
- | For stopping the instance, without deleting it, we can use the **nova stop** command. This is the equivalent of shutting down the instance. | + | For stopping the instance, without deleting it, we can use the **openstack server stop** command. This is the equivalent of shutting down the instance. |
<code> | <code> | ||
- | $ nova stop <INSTANCE ID> | + | $ openstack server stop <INSTANCE ID> |
Request to stop server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | Request to stop server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | ||
</code> | </code> | ||
<code> | <code> | ||
- | $ nova list | + | $ openstack server list |
+--------------------------------------+------+---------+------------+-------------+--------------------+ | +--------------------------------------+------+---------+------------+-------------+--------------------+ | ||
| ID | Name | Status | Task State | Power State | Networks | | | ID | Name | Status | Task State | Power State | Networks | | ||
Line 413: | Line 418: | ||
=== Start === | === Start === | ||
- | After being stopped, an instance can be started with the **nova start** command: | + | After being stopped, an instance can be started with the **openstack server start** command: |
<code> | <code> | ||
- | $ nova start <INSTANCE ID> | + | $ openstack server start <INSTANCE ID> |
Request to start server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | Request to start server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | ||
</code> | </code> | ||
<code> | <code> | ||
- | $ nova list | + | $ openstack server list |
+--------------------------------------+------+--------+------------+-------------+--------------------+ | +--------------------------------------+------+--------+------------+-------------+--------------------+ | ||
| ID | Name | Status | Task State | Power State | Networks | | | ID | Name | Status | Task State | Power State | Networks | | ||
Line 435: | Line 440: | ||
=== Terminate === | === Terminate === | ||
- | Terminate the instance with the **nova delete** command: | + | Terminate the instance with the **openstack server delete** command: |
<code> | <code> | ||
- | $ nova delete <INSTANCE ID> | + | $ openstack server delete <INSTANCE ID> |
Request to delete server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | Request to delete server acd0fcdd-ac58-49b5-ad04-bf34cc7af4a7 has been accepted. | ||
</code> | </code> | ||
- | After that, the instance should not appear in **nova list** any more: | + | After that, the instance should not appear in **openstack server list** any more: |
<code> | <code> | ||
- | $ nova list | + | $ openstack server list |
+----+------+--------+------------+-------------+----------+ | +----+------+--------+------------+-------------+----------+ | ||
| ID | Name | Status | Task State | Power State | Networks | | | ID | Name | Status | Task State | Power State | Networks | | ||
Line 462: | Line 467: | ||
</code> | </code> | ||
- | Then, boot a instance with **nova boot**, but specifying the **user-data** parameter: | + | Then, boot a instance with **openstack server create**, but specifying the **user-data** parameter: |
<code> | <code> | ||
- | $ nova boot --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --security-group default --key-name fep --user-data ./day0.txt myinstance | + | $ openstack server create --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --security-group default --key-name fep --user-data ./day0.txt user.name-vm |
</code> | </code> | ||
Line 479: | Line 484: | ||
<code> | <code> | ||
- | +--------+ mynetwork +--------+ | + | +--------+ user.name.network +--------+ |
- | | client |-------------------------| server | | + | | client |---------------------------------| server | |
- | +--------+ 172.16.1.0/24 +--------+ | + | +--------+ 172.16.1.0/24 +--------+ |
- | | | | + | | | |
- | | | | + | | | |
- | | vlan9 | vlan9 | + | | vlan9 | vlan9 |
</code> | </code> | ||
* **vlan9** already exists and is a **provider** (physical) network | * **vlan9** already exists and is a **provider** (physical) network | ||
- | * **mynetwork** will have to be created and will be a **self-service** network (user defined, only visible inside our own tenant) | + | * **user.name.network** will have to be created and will be a **self-service** network (user defined, only visible inside our own tenant) |
=== Creating the network === | === Creating the network === | ||
- | Create the network using the **neutron net-create** command: | + | Create the network using the **openstack net create** command: |
<code> | <code> | ||
- | $ neutron net-create mynetwork | + | $ openstack net create user.name.network |
Created a new network: | Created a new network: | ||
+-----------------+--------------------------------------+ | +-----------------+--------------------------------------+ | ||
Line 503: | Line 508: | ||
| id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | | id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | ||
| mtu | 0 | | | mtu | 0 | | ||
- | | name | mynetwork | | + | | name | user.name.network | |
| router:external | False | | | router:external | False | | ||
| shared | False | | | shared | False | | ||
Line 514: | Line 519: | ||
Verify it was successfully created using: | Verify it was successfully created using: | ||
* Horizon, in **Project -> Network -> Networks** | * Horizon, in **Project -> Network -> Networks** | ||
- | * the **neutron net-show** command: | + | * the **openstack net show** command: |
<code> | <code> | ||
- | $ neutron net-show <NETWORK ID> | + | $ openstack net show <NETWORK ID> |
+-----------------+--------------------------------------+ | +-----------------+--------------------------------------+ | ||
| Field | Value | | | Field | Value | | ||
Line 524: | Line 529: | ||
| id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | | id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | ||
| mtu | 0 | | | mtu | 0 | | ||
- | | name | mynetwork | | + | | name | user.name.network | |
| router:external | False | | | router:external | False | | ||
| shared | False | | | shared | False | | ||
Line 535: | Line 540: | ||
=== Creating the subnet === | === Creating the subnet === | ||
- | The next step is to create a subnet for **mynetwork**. We will use **neutron subnet-create** and: | + | The next step is to create a subnet for **usern.name.network**. We will use **openstack subnet create** and: |
* **172.16.1.0/24** for prefix | * **172.16.1.0/24** for prefix | ||
- | * **mysubnet** for name | + | * **user.name.subnet** for name |
* no gateway (VMs will have the gateway through **vlan9**) | * no gateway (VMs will have the gateway through **vlan9**) | ||
<code> | <code> | ||
- | $ neutron subnet-create --name mysubnet --no-gateway mynetwork 172.16.1.0/24 | + | $ openstack subnet create user.name.subnet --network user.name.network --subnet-range 172.16.1.0/24 |
Created a new subnet: | Created a new subnet: | ||
+-------------------+------------------------------------------------+ | +-------------------+------------------------------------------------+ | ||
Line 556: | Line 561: | ||
| ipv6_address_mode | | | | ipv6_address_mode | | | ||
| ipv6_ra_mode | | | | ipv6_ra_mode | | | ||
- | | name | mysubnet | | + | | name | user.name.subnet | |
| network_id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | | network_id | 20a1cce9-9adc-48d3-bb55-3917dd3fbdea | | ||
| subnetpool_id | | | | subnetpool_id | | | ||
Line 563: | Line 568: | ||
</code> | </code> | ||
- | Verify the subnet was successfully created using Horizon, in **Project -> Network -> Networks -> mynetwork -> Subnets** | + | Verify the subnet was successfully created using Horizon, in **Project -> Network -> Networks -> user.name.network -> Subnets** |
=== Booting the instances === | === Booting the instances === | ||
Line 569: | Line 574: | ||
We will boot the instances according to the topology. Note that each instance will have 2 vNICs: | We will boot the instances according to the topology. Note that each instance will have 2 vNICs: | ||
* the first one in **vlan9** | * the first one in **vlan9** | ||
- | * the second one in **mynetwork** | + | * the second one in **user.name.network** |
+ | * Use **Ubuntu 16.04 Xenial** as image. | ||
<code> | <code> | ||
- | $ nova boot --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --nic net-id=<mynetwork ID> --security-group default --key-name <keypair> client | + | $ openstack server create --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --nic net-id=<user.name.network ID> --security-group default --key-name <keypair> client |
- | $ nova boot --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --nic net-id=<mynetwork ID> --security-group default --key-name <keypair> server | + | $ openstack server create --flavor m1.tiny --image 3672370a-af54-47c2-b2c1-d9875952415f --nic net-id=424666ed-c0e8-4d1c-96fe-c22c56262a87 --nic net-id=<user.name.network ID> --security-group default --key-name <keypair> server |
</code> | </code> | ||
Line 595: | Line 601: | ||
* terminate the instances: | * terminate the instances: | ||
<code> | <code> | ||
- | $ nova delete <client instance ID> | + | $ openstack server delete <client instance ID> |
- | $ nova delete <server instance ID> | + | $ openstack server delete <server instance ID> |
</code> | </code> | ||
* delete the network: | * delete the network: | ||
<code> | <code> | ||
- | $ neutron net-delete <mynetwork ID> | + | $ openstack net delete <mynetwork ID> |
</code> | </code> | ||
- | Verify that the resources were deleted using **nova list** and **neutron net-list**. | + | Verify that the resources were deleted using **openstack server list** and **openstack net list**. |
==== 7. [20p] Orchestration ==== | ==== 7. [20p] Orchestration ==== | ||
Line 612: | Line 618: | ||
For this, go to **Project -> Orchestration -> Stacks** and click on **Launch Stack** | For this, go to **Project -> Orchestration -> Stacks** and click on **Launch Stack** | ||
- | For **Template source**, upload a file with the following content (substitute <KEYPAIR NAME> with your own keypair name): | + | For **Template source**, upload a file with the following content (substitute <KEYPAIR NAME> with your own keypair name). Substitute the IDs (network, image) with the correct ones: |
<code> | <code> | ||
Line 621: | Line 627: | ||
type: OS::Nova::Server | type: OS::Nova::Server | ||
properties: | properties: | ||
- | name: vm1 | + | name: user.name.vm1 |
image: 3672370a-af54-47c2-b2c1-d9875952415f | image: 3672370a-af54-47c2-b2c1-d9875952415f | ||
flavor: m1.tiny | flavor: m1.tiny | ||
Line 631: | Line 637: | ||
type: OS::Nova::Server | type: OS::Nova::Server | ||
properties: | properties: | ||
- | name: vm2 | + | name: user.name.vm2 |
image: 3672370a-af54-47c2-b2c1-d9875952415f | image: 3672370a-af54-47c2-b2c1-d9875952415f | ||
flavor: m1.tiny | flavor: m1.tiny | ||
Line 641: | Line 647: | ||
type: OS::Nova::Server | type: OS::Nova::Server | ||
properties: | properties: | ||
- | name: vm3 | + | name: user.name.vm3 |
image: 3672370a-af54-47c2-b2c1-d9875952415f | image: 3672370a-af54-47c2-b2c1-d9875952415f | ||
flavor: m1.tiny | flavor: m1.tiny | ||
Line 664: | Line 670: | ||
<note> | <note> | ||
- | **Hint:** https://docs.openstack.org/heat/pike/template_guide/software_deployment.html | + | **Hint:** https://docs.openstack.org/heat/queens/template_guide/software_deployment.html |
</note> | </note> | ||