In the previous post we saw how to create a Compute Instance in OCI. To do this it was necessary to place it on a network segment, so in today's post we are going to go into the networking part of OCI.
Networking is a very broad topic, with a lot of associated resources. Today we will start with the most basic and important one, as it will contain the rest of the networking resources, Virtual Cloud Network (or VCN).
A Virtual Cloud Network is a software-defined private network. You have access to the VCN but not to the hardware, as it is all software. 
A VCN allows resources to communicate securely with the Internet, other instances or on-premise data centers.
It resides in a single region and can have up to 5 CIDR Blocks (it is recommended to use the private IP ranges specified in RFC 1918 (10.0.0.0.0/8, 172.16/12 and 192.168/16).
In OCI the supported size is from /16 to /30. As the netmask gets larger, the network size gets smaller.
We stop at /30 (4 addresses) because a VCN reserves 3 addresses: the first 2 for the network and the last one for broadcast.
As in the previous posts, we will look at different ways of creating a VCN:
- Manually from OCI Console
Select "Virtual Cloud Network" under Networking section:
Click on "Create VCN" button:
And fill the information required:
- With Terraform code
Use Infrastructure as Code to deploy it:
resource "oci_core_vcn" "test_vcn" {
    #Required
    compartment_id = var.compartment_id
    #Optional
    byoipv6cidr_details {
        #Required
        byoipv6range_id = oci_core_byoipv6range.test_byoipv6range.id
        ipv6cidr_block = var.vcn_byoipv6cidr_details_ipv6cidr_block
    }
    cidr_block = var.vcn_cidr_block
    cidr_blocks = var.vcn_cidr_blocks
    defined_tags = {"Operations.CostCenter"= "42"}
    display_name = var.vcn_display_name
    dns_label = var.vcn_dns_label
    freeform_tags = {"Department"= "Finance"}
    ipv6private_cidr_blocks = var.vcn_ipv6private_cidr_blocks
    is_ipv6enabled = var.vcn_is_ipv6enabled
    is_oracle_gua_allocation_enabled = var.vcn_is_oracle_gua_allocation_enabled
}
Code obtained from the official Terraform documentation:
- OCICLI
It is also to use the OCI API to create resources:
oci network vcn create -c [text]
To see all available options:
https://docs.oracle.com/en-us/iaas/tools/oci-cli/3.37.12/oci_cli_docs/cmdref/network/vcn/create.html