- Log into cloud.oracle.com
- From upper-right corner click Profile -> My Profile
- From lower-left section find Resources -> API keys
- Click 'Add API key' and paste public key in PEM format
- Copy and save displayed configuration into
~/.oci/config
Note: Get a suitable public key PEM for step 4 from an existing private key with:
ssh-keygen -e -m PKCS8 -f oci_api_privkey.pem
Useful for automating script retries since Ampere A1 is usually 'out of capacity' under free-tier.
oci compute instance launch --no-retry \
--compartment-id ocid1.tenancy.oc1..aaaaaaaasp7dsmvw3jxm5qzk7i5e4tjx7v3os36lshkdjragdyjgj5h53mrq \
--availability-domain yvnv:US-ASHBURN-AD-1 \
--subnet-id ocid1.subnet.oc1.iad.aaaaaaaaj4c6vgrtt7e6sxkpesduef6bkavbgvpd2gxig72xnhqto5knla5q \
--image-id ocid1.image.oc1.iad.aaaaaaaai42i6avvfxqawj3bjl5uzhlyq5lqkqhbeg4lpo5corvwqgnvrloq \
--shape VM.Standard.A1.Flex --shape-config '{"memoryInGBs":16.0,"ocpus":4.0}'
Get a shape-config json with:
oci compute instance launch --generate-param-json-input shape-config
Relevant fields used are memoryInGBs
and ocpus
. Others can be removed. eg. baselineOcpuUtilization
, nvmes
, vcpus
etc.
oci iam availability-domain list
oci network public-ip list \
--compartment-id ocid1.tenancy.oc1..aaaaaaaagyi66dc4o2cawmj4fclkpffuc6igwpx5aqh34mrcyx6qof6trs7a \
--scope AVAILABILITY_DOMAIN \
--availability-domain bgcw:AP-OSAKA-1-AD-1 --lifetime EPHEMERAL
The API has an annoying asymmetry. When releasing publicip it needs the public-ip-id
but renewing needs private-ip-id
.
oci network public-ip delete --force \
--public-ip-id ocid1.publicip.oc1.ap-osaka-1.amaaaaaawl5wgbqaor6wq2a3ukag4cyvuta4xypphsk4ipxmol7367vkjqpq
Note this must be done on a different machine or host. The VM instance cannot renew itself because OCI-CLI needs to make external API call.
oci network public-ip create \
--compartment-id ocid1.tenancy.oc1..aaaaaaaagyi66dc4o2cawmj4fclkpffuc6igwpx5aqh34mrcyx6qof6trs7a \
--private-ip-id ocid1.privateip.oc1.ap-osaka-1.abvwsljrnpnujpkuzbdmem22noq6ik4bhhvoxi3xemisl6f2mji6xisk3qna \
--lifetime EPHEMERAL --debug