{"id":58,"date":"2020-08-04T01:06:03","date_gmt":"2020-08-04T01:06:03","guid":{"rendered":"http:\/\/168.138.249.13\/?p=58"},"modified":"2020-08-06T03:31:45","modified_gmt":"2020-08-06T03:31:45","slug":"gerenciando-instancias-no-oci-usando-oci-cli-e-uma-instancia-always-free","status":"publish","type":"post","link":"https:\/\/adrianotanaka.com.br\/index.php\/2020\/08\/04\/gerenciando-instancias-no-oci-usando-oci-cli-e-uma-instancia-always-free\/","title":{"rendered":"Gerenciando instancias no OCI usando oci cli e uma inst\u00e2ncia Always free."},"content":{"rendered":"\n<p>Esse artigo tem com objetivo mostrar uma forma simples e pr\u00e1tica de se utilizar o&nbsp;<em>oci cli<\/em>&nbsp;em conjunto com uma inst\u00e2ncia&nbsp;<em>Always Free<\/em>&nbsp;para controlar o lifecycle de suas inst\u00e2ncias no OCI, ao final voc\u00ea ser\u00e1 capaz de entender um pouco mais do&nbsp;<em>oci cli<\/em>&nbsp;e tamb\u00e9m agendar o stop\/start da inst\u00e2ncia para economizar cr\u00e9ditos.<\/p>\n\n\n\n<p><strong>Itens necess\u00e1rios:<\/strong><\/p>\n\n\n\n<p>Uma m\u00e1quina do tipo Always free ou linux com o oci cli instalado e configurado para se autenticar no seu ambiente.<\/p>\n\n\n\n<p>Comandos dispon\u00edveis Para gerenciar uma inst\u00e2ncia usando o oci cli vamos usar o comando oci compute instance com o par\u00e2metro action com os seguintes valores:<\/p>\n\n\n\n<p><strong>START:<\/strong>&nbsp;Inicia a inst\u00e2ncia<\/p>\n\n\n\n<p><strong>STOP:<\/strong>&nbsp;Para a inst\u00e2ncia<\/p>\n\n\n\n<p><strong>RESET:<\/strong>&nbsp;Reinicia a inst\u00e2ncia<\/p>\n\n\n\n<p><strong>SOFTSTOP:<\/strong>&nbsp;Emite comandos de sistema operacional para a VM e ela \u00e9 parada<\/p>\n\n\n\n<p><strong>SOFTRESET:<\/strong>&nbsp;Emite um comando de reiniciar para a VM nos mesmos moldes do SOFTSTOP<\/p>\n\n\n\n<p>Note que at\u00e9 o momento apenas as op\u00e7\u00f5es SOFTSTOP e SOFTRESET est\u00e3o dispon\u00edveis via dashboard:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i.imgur.com\/LBvfgg6.png\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/LBvfgg6.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p>Obrigatoriamente precisamos passar um valor para o par\u00e2metro&nbsp;<em>&#8211; -action<\/em>&nbsp;e tamb\u00e9m o&nbsp;<em>ocid<\/em>&nbsp;da inst\u00e2ncia a ser manipulada, para retornar todas as inst\u00e2ncias de um compartimento voc\u00ea pode executar o seguinte comando passando o&nbsp;<em>ocid<\/em>&nbsp;do compartimento:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>oci compute instance list -c ocid1.compartment.oc1..XXXXXX | jq -r '.data&#91;] | \"Inst: \\(.\"display-name\") | Status: \\(.\"lifecycle-state\") | OCID: \\(.id)\"'\n<\/code><\/pre>\n\n\n\n<p>Ele vai te mostrar a seguinte informa\u00e7\u00e3o, um resumo das inst\u00e2ncias, seu respectivo status e seu ocid:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i.imgur.com\/qI882Xo.png\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/qI882Xo.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"parando-a-inst\u00e2ncia\">Parando a inst\u00e2ncia:<\/h4>\n\n\n\n<p>Para desligar uma m\u00e1quina voc\u00ea pode utilizar os valores&nbsp;<strong>STOP<\/strong>&nbsp;ou&nbsp;<strong>SOFTSTOP<\/strong>&nbsp;no par\u00e2metro&nbsp;<em>&#8211; -action<\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>oci compute instance action --action STOP --instance-id ocid1.instance.oc1.sa-saopaulo-1.XXXXXXXXXXX\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<pre class=\"wp-block-code\"><code>oci compute instance action --action SOFTSTOP --instance-id ocid1.instance.oc1.sa-saopaulo-1.XXXXXXXXXXX\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i.imgur.com\/KPgUgNj.png\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/KPgUgNj.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p>Perceba que ao usar o valor&nbsp;<strong>STOP<\/strong>&nbsp;(marcado de vermelho) para a m\u00e1quina seria o mesmo que puxar o cabo de energia, enquanto que ao usar&nbsp;<strong>SOFTSTOP<\/strong>&nbsp;(em azul) a m\u00e1quina realmente recebe um comando de reiniciar (shutdown), por isso o uso de&nbsp;<strong>STOP<\/strong>&nbsp;n\u00e3o \u00e9 recomendado a n\u00e3o ser que a m\u00e1quina esteja travada e n\u00e3o possa receber o comando.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"iniciando-a-inst\u00e2ncia\">Iniciando a inst\u00e2ncia:<\/h4>\n\n\n\n<p>Para colocar a inst\u00e2ncia no ar, basta executar o comando com o par\u00e2metro&nbsp;<em>&#8211; -action<\/em>&nbsp;e o valor&nbsp;<strong>START<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>oci compute instance action --action START --instance-id ocid1.instance.oc1.sa-saopaulo-1.XXXXXXXXXXX\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"agendando-o-desligamento-autom\u00e1tico-de-inst\u00e2ncias\">Agendando o desligamento autom\u00e1tico de inst\u00e2ncias:<\/h4>\n\n\n\n<p>Depois de descobrir a din\u00e2mica do comando oci compute instance action fica f\u00e1cil de configurar um desligamento\/ligamento autom\u00e1tico das VMs:<\/p>\n\n\n\n<p>Crie um script chamado&nbsp;<em>shutdown_vm.sh<\/em>&nbsp;com o seguinte conte\u00fado para desligar a inst\u00e2ncia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export OCI_CLI_AUTH=instance_principal\n\/root\/bin\/oci compute instance action --action SOFTSTOP --instance-id $1 >> \/home\/opc\/shutdown_$1.log 2>&amp;1 \n<\/code><\/pre>\n\n\n\n<p>Crie um script chamado&nbsp;<em>startup_vm.sh<\/em>&nbsp;com o seguinte conte\u00fado:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export OCI_CLI_AUTH=instance_principal\n\/root\/bin\/oci compute instance action --action START --instance-id $1 >> \/home\/opc\/shutdown_$1.log 2>&amp;1 \n\n<\/code><\/pre>\n\n\n\n<p>E agende no crontab passando o ocid para o script:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i.imgur.com\/I1VGJeW.png\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/I1VGJeW.png\" alt=\"\"\/><\/a><\/figure>\n\n\n\n<p>Dessa forma a sua m\u00e1quina vai ser desligada e ligada no hor\u00e1rio agendado al\u00e9m de gerar um log para cada uma das m\u00e1quinas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esse artigo tem com objetivo mostrar uma forma simples e pr\u00e1tica de se utilizar o&nbsp;oci cli&nbsp;em conjunto com uma inst\u00e2ncia&nbsp;Always Free&nbsp;para controlar o lifecycle de suas inst\u00e2ncias no OCI, ao final voc\u00ea ser\u00e1 capaz de entender um pouco mais do&nbsp;oci cli&nbsp;e tamb\u00e9m agendar o stop\/start da inst\u00e2ncia para economizar cr\u00e9ditos. Itens necess\u00e1rios: Uma m\u00e1quina do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":66,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"material-hide-sections":[],"footnotes":""},"categories":[6,1],"tags":[5,4,3],"class_list":["post-58","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle","category-uncategorized","tag-banco-de-dados","tag-database","tag-oracle"],"_links":{"self":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=58"}],"version-history":[{"count":2,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/58\/revisions"}],"predecessor-version":[{"id":175,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/posts\/58\/revisions\/175"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media\/66"}],"wp:attachment":[{"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianotanaka.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}