Uma das ferramentas que mais gosto de trabalhar é o oci-cli, e principalmente agora com a opção do Cloud Shell que autentica de forma automática no seu tenancy, fica fácil de levar os comandos para qualquer ambiente.
Por isso resolvi compartilhar com vocês alguns comandos que utilizo no meu dia-a-dia para facilitar meu trabalho, nesse post vou concentrar os comandos para instâncias.
Para facilitar sua vida, sugiro que exporte o ocid do compartimento onde você vai executar os comandos:
export OCI_COMPARTMENT=ocid.xxxxx
Também recomendo rodar os comandos sem chamar o jq para ver quais campos ele retorna e assim ajustar às suas necessidades.
Todas as instâncias do compartimento
oci compute instance list -c ${OCI_COMPARTMENT}
Retornar a instância que possem o shape Standard.E2
oci compute instance list -c ${OCI_COMPARTMENT} | jq -r '.data[] | select(."shape"|contains("VM.Standard.E2"))' | jq -r '"VM: " + ."display-name" +" Shape: "+ ."shape"'
Saída
adriano_ta@cloudshell:~ (sa-saopaulo-1)$ oci compute instance list -c ${OCI_COMPARTMENT} | jq -r '.data[] | select(."shape"|contains("VM.Standard.E2"))' | jq -r '"VM: " + ."display-name" +" Shape: "+ ."shape"' VM: SRV-TEST-DISK Shape: VM.Standard.E2.4 VM: openvp-srv Shape: VM.Standard.E2.1.Micro VM: srv-test-disk-intel Shape: VM.Standard.E2.1.Micro adriano_ta@cloudshell:~ (sa-saopaulo-1)$
Instância com seu respectivo IP
oci compute instance list-vnics -c ${OCI_COMPARTMENT} | jq -r '.data[] | [(."display-name", ."private-ip")] | @tsv'
Saída
adriano_ta@cloudshell:~ (sa-saopaulo-1)$ oci compute instance list-vnics -c ${OCI_COMPARTMENT} | jq -r '.data[] | [(."display-name", ."private-ip")] | @tsv' srv-test-disk-intel 10.0.1.3 SRV-TEST-DISK 10.0.1.2 openvpn-srv 10.0.1.4 adriano_ta@cloudshell:~ (sa-saopaulo-1)$
Instância de determinado SO
Para esse item, temos que primeiro gerar uma lista de ocids baseado no SO, nesse exemplo pego todas que possuam Oracle no nome:
export IMGS=$(oci compute image list -c ${OCI_COMPARTMENT} | jq -r '.data[] | select(."operating-system"|contains("Oracle")) | (.id)')
Gero isso em um arquivo:
echo "$IMGS" > imgs.txt
E o utilizo como parâmetro:
oci compute instance list -c ${OCI_COMPARTMENT} | jq -r --argjson ids "$(jq -R . imgs.txt | jq -s .)" '.data[] | select(."image-id" as $id | $ids | index($id)) | [."display-name",."lifecycle-state"]| @tsv'
E temos como saída:
adriano_ta@cloudshell:~ (sa-saopaulo-1)$ oci compute instance list -c ${OCI_COMPARTMENT} | jq -r --argjson ids "$(jq -R . imgs.txt | jq -s .)" '.data[] | select(."image-id" as $id | $ids | index($id)) | [."display-name",."lifecycle-state"]| @tsv' SRV-TEST-DISK RUNNING srv-test-disk-intel RUNNING adriano_ta@cloudshell:~ (sa-saopaulo-1)$
As vezes a Oracle não exporta todas as imagens(para gerar o arquivo), então recomendo sempre dar uma validada ou caso queira, você pode consultar aqui os ocids disponíveis.
Forçar o reinicio de uma instância
Tome bastante cuidado com esse comando pois ele é o equivalente a puxar o cabo de energia da VM:
oci compute instance action --action RESET --instance-id ocid1.XXXXXX
Listar todas as instâncias com seu respectivo shape e configurações
Esse é um dos que eu mais gosto, geralmente uso para listar as VMS e ter uma noção da configuração de CPU e memória das VMs, também retorno o tipo de shape(Intel, AMD, Flex) para caso precise calcular o custo dela.
oci compute instance list -c ${OCI_COMPARTMENT} | jq -r '.data[] | [(."display-name",."shape",."shape-config"."ocpus",."shape-config"."memory-in-gbs",."lifecycle-state")] | @csv'
A saída desse comando pode ser copiada e colada direto no Excel para uma analise mais detalhada.
adriano_ta@cloudshell:~ (sa-saopaulo-1)$ oci compute instance list -c ${OCI_COMPARTMENT} | jq -r '.data[] | [(."display-name",."shape",."shape-config"."ocpus",."shape-config"."memory-in-gbs",."lifecycle-state")] | @csv' "SRV-TEST-DISK","VM.Standard.E2.4",4,32,"RUNNING" "openvp-srv","VM.Standard.E2.1.Micro",1,1,"RUNNING" "srv-test-disk-intel","VM.Standard.E2.1.Micro",1,1,"RUNNING" adriano_ta@cloudshell:~ (sa-saopaulo-1)$