Quick Start - VPC
Prerequisites
- Exoscale CLI download the latest binary for macOS, Linux or Windows from GitHub
- Exoscale Account sign in or register.
- API Key/Secret
configured via the CLI with
exo config. - SSH Key registered in your Exoscale account, to connect to the instances.
First Steps via CLI
Create a VPC
Create a VPC named my-first-vpc:
$ exo networking vpc create my-first-vpc
✔ Creating VPC "my-first-vpc"... 0s
┼─────────────┼──────────────────────────────────────┼
│ VPC │ │
┼─────────────┼──────────────────────────────────────┼
│ ID │ cdaa9663-634d-4abd-94a3-fc2b32c4854a │
│ Name │ my-first-vpc │
│ Description │ │
│ Default │ false │
│ Zone │ ch-gva-2 │
│ Created At │ 2026-09-09 07:31:15 +0000 UTC │
│ Labels │ n/a │
│ Subnets │ - │
┼─────────────┼──────────────────────────────────────┼
Create a Subnet
Add a Subnet to the VPC with the chosen private IPv4 range:
$ exo networking vpc subnet create my-first-vpc my-first-subnet --address-family inet4 --address-space private --ipv4-block 10.42.0.0/16
✔ Creating Subnet "my-first-subnet"... 0s
┼────────────────┼──────────────────────────────────────┼
│ VPC SUBNET │ │
┼────────────────┼──────────────────────────────────────┼
│ ID │ d557ef4e-c481-4ba4-872e-4c6b53705be8 │
│ Name │ my-first-subnet │
│ Description │ │
│ Zone │ ch-gva-2 │
│ Created At │ 2026-09-09 07:32:39 +0000 UTC │
│ Address Family │ inet4 │
│ Address Space │ private │
│ IPv4 Block │ 10.42.0.0/16 │
│ Labels │ n/a │
│ Instances │ - │
┼────────────────┼──────────────────────────────────────┼
Create and Attach Instances
Create the first instance:
$ exo compute instance create instance-A --template "Linux Ubuntu 26.04 LTS 64-bit" --ssh-key my-ssh-key
✔ Creating instance "instance-A"... 21s
┼─────────────────────────────────────────┼──────────────────────────────────────┼
│ COMPUTE INSTANCE │ │
┼─────────────────────────────────────────┼──────────────────────────────────────┼
│ ID │ 324d7bb3-0a1c-4bd8-abc5-9a1cd8109196 │
│ Name │ instance-A │
│ Creation Date │ 2026-09-09 07:34:26 +0000 UTC │
│ Instance Type │ standard.medium │
│ Template │ Linux Ubuntu 26.04 LTS 64-bit │
│ Zone │ ch-gva-2 │
│ Anti-Affinity Groups │ n/a │
│ Deploy Target │ - │
│ Security Groups │ default │
│ Private Instance │ No │
│ Elastic IPs │ n/a │
│ Public IP │ inet4 │
│ IP Address │ 85.217.161.236 │
│ IPv6 Address │ - │
│ Vpc │ │
│ Vpc Subnets │ n/a │
│ Private Networks │ n/a │
│ SSH Keys │ n/a │
│ Disk Size │ 50 GiB │
│ State │ running │
│ Labels │ n/a │
│ Secure Boot │ false │
│ Tpm │ false │
│ Reverse DNS │ │
│ Application-Consistent Snapshot enabled │ false │
┼─────────────────────────────────────────┼──────────────────────────────────────┼
Attach it to the Subnet:
$ exo compute instance attach-to-subnet instance-A my-first-vpc my-first-subnet
✔ Attaching instance "instance-A" to Subnet "my-first-subnet"... 3s
┼─────────────────────────────────────────┼──────────────────────────────────────┼
│ COMPUTE INSTANCE │ │
┼─────────────────────────────────────────┼──────────────────────────────────────┼
│ ID │ 324d7bb3-0a1c-4bd8-abc5-9a1cd8109196 │
│ Name │ instance-A │
│ Creation Date │ 2026-09-09 07:34:26 +0000 UTC │
│ Instance Type │ standard.medium │
│ Template │ Linux Ubuntu 26.04 LTS 64-bit │
│ Zone │ ch-gva-2 │
│ Anti-Affinity Groups │ n/a │
│ Deploy Target │ - │
│ Security Groups │ default │
│ Private Instance │ No │
│ Elastic IPs │ n/a │
│ Public IP │ inet4 │
│ IP Address │ 85.217.161.236 │
│ IPv6 Address │ - │
│ Vpc │ my-first-vpc │
│ Vpc Subnets │ my-first-subnet 10.42.145.150 │
│ Private Networks │ n/a │
│ SSH Keys │ n/a │
│ Disk Size │ 50 GiB │
│ State │ running │
│ Labels │ n/a │
│ Secure Boot │ false │
│ Tpm │ false │
│ Reverse DNS │ │
│ Application-Consistent Snapshot enabled │ false │
┼─────────────────────────────────────────┼──────────────────────────────────────┼
Create and attach a second instance:
$ exo compute instance create instance-B --template "Linux Ubuntu 26.04 LTS 64-bit" --ssh-key my-ssh-key
$ exo compute instance attach-to-subnet instance-B my-first-vpc my-first-subnet
Allow Traffic Between the Instances
Create a Security Group that allows the instances to ping each other and accepts SSH connections from any address:
$ exo compute security-group create my-sg
[...]
$ exo compute security-group rule add my-sg --protocol tcp --flow ingress --port 22 --network 0.0.0.0/0
[...]
$ exo compute security-group rule add my-sg --protocol icmp --flow ingress --icmp-type 8 --security-group my-sg
✔ Adding rule to Security Group "my-sg"... 24s
┼──────────────────┼────────────────────────────────────────────────────────────────────────────────────────────┼
│ SECURITY GROUP │ │
┼──────────────────┼────────────────────────────────────────────────────────────────────────────────────────────┼
│ ID │ 699977e4-0403-478c-9b61-7dd347643e98 │
│ Name │ my-sg │
│ Description │ │
│ Ingress Rules │ │
│ │ dc712e4c-9998-4823-a49e-edc2413a8b53 ICMP SG:my-sg ICMP code:0 type:8 │
│ │ 718f4c0b-711f-4adb-a84b-29b67b458de3 TCP 0.0.0.0/0 22 │
│ │ │
│ Egress Rules │ - │
│ External Sources │ - │
│ Instances │ - │
┼──────────────────┼────────────────────────────────────────────────────────────────────────────────────────────┼
Add both instances to the Security Group:
$ exo compute instance security-group add instance-A my-sg
$ exo compute instance security-group add instance-B my-sg
Confirm Private Connectivity
Connect to instance-A over SSH and ping the VPC address of instance-B:
ubuntu@instance-A:~$ ping 10.42.13.243
PING 10.42.13.243 (10.42.13.243) 56(84) bytes of data.
64 bytes from 10.42.13.243: icmp_seq=1 ttl=64 time=0.442 ms
64 bytes from 10.42.13.243: icmp_seq=2 ttl=64 time=0.340 ms
64 bytes from 10.42.13.243: icmp_seq=3 ttl=64 time=0.511 ms
^C
--- 10.42.13.243 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2032ms
rtt min/avg/max/mdev = 0.340/0.431/0.511/0.070 msThe Security Group blocks traffic on other protocols or ports until you add a rule to allow it.
First Steps via Portal
Portal is coming soon.
Next Steps
Last updated on