1 . O que é o Custom Images

Básicamente uma “Custom Image” é a representação de um S.O (Sistema Operacional) personalizado por você. Uma imagem de S.O é responsável  pela inicialização de uma instância. Podemos entender essa imagem como representação de disco rígido virtual que nele contém o sistema operacional e os outros softwares.

 

2 . Como funcinonam Custom Images

O funcionamento deste recurso é simples, basta acessar o menu de uma instância em execução e solicitar criação de uma Custom Image. Feito isso, a instância começa o processo de parada e em seguida inicia a execução de criação da imagem.

 Não é possível criar uma Custom Image de uma instância parada.

O processo de criação da imagem contempla somente o “boot volume”, desconsiderando qualquer “block-volume” atachado.

Enquanto escrevia este artigo, o acesso do serviço do Custom Images está localizado dentro da console do OCI no menu hambúrguer a esquerda, dentro da categoria Compute. Na lista que será aberta a direita o serviço do Custom Images é o último item.

CI-image1

 

2.1 . Resiliência

Com o serviço do Custom Images é possível criar sistemas redundantes em domínios de disponibilidades diferentes para suportar failover do ambiente. Para tanto, é importante atentar-se com possíveis alterações realizadas no S.O que esta sendo utilizado como modelo. Isto por que, qualquer alteração feita na imagem matriz não é automaticamente refletida na Custome Image criada, sendo necessário repetir o processo de criaçao de imagem.

Como dito anteriormente, discos anexados (block-volumes) a instâncias são desconsiderados na Custom Image. Portanto, em casos onde é preciso manter redundancia de sistemas é importante realizar backups ou cópias de block-volumes para outras regiões e manter um nível de sincrozinação de dados. 

 

2.2 . Limites e Considerações

Existem alguns avisos e orientações importantes a serem considerados antes da execução de Custom Images. O Quadro abaixo abrange as principais e mais contundentes.

Determinados endereços IP são reservados para uso do Oracle Cloud Infrastructure e podem não ser usados no seu esquema de numeração de endereços.

Antes de criar uma custom image de uma instância, desconecte todos os anexos iSCSI.

A instância sofre shutdown e permanece indisponível durante execução do processo custom images.

Você não pode criar custom images adicionais de uma instância enquanto a instância estiver envolvida no processo de criação de imagem. No entanto, você pode criar imagens de diferentes instâncias ao mesmo tempo.

Custom Images estão disponíveis para todos os usuários autorizados para o compartimento  no qual a imagem foi criada.

As custom images herdam as formas compatíveis que são definidas por padrão com relação à imagem base.

O tamanho máximo para a importação/exportação de uma custom images é de 400 GB.

É possível criar imagens personalizadas de algumas imagens do Marketplace (Ex. Microsoft SQL Server Enterprise)

Não é possível criar uma imagem de uma instância do Oracle Database.

 

2.3 . Importação/Exportação de Imagens

É possível compartilhar custom images entre tenancys e regiões diferentes utilizando importação/exportação. Entretanto, para esse tipo de cenário é necessário a utilização do serviço de Object Storage.

Atualmente a OCI suporte imagens do tipo Emulation Mode, Paravirtualized e Native Mode.

Segue 2 quadros de matriz de compatibilidade de Sistemas Operacionais:

  • Sistemas Operacionais Baseados em Linux
  • Oracle Linux 6.x
  • Oracle Linux 7.x
  • Oracle Linux 8.x
  • Oracle Linux Cloud Developer 8.x
  • CentOS 7
  • Ubuntu 18.04
  • Ubuntu 20.04

 

  • Sistemas Operacionais Baseados no Windows
  • Windows Server 2012 Standard, Datacenter
  • Windows Server 2012 R2 Standard, Datacenter
  • Windows Server 2016 Standard, Datacenter
  • Windows Server 2019 Standard, Datacenter

 

2.4 . BYOI (Bring Your Own Image)

O recurso BYOI (Bring Your Own Image) permite que você traga suas próprias versões de S.O para a cloud, desde que o hardware subjacente o suporte.

Essa feature ajuda principalmente em processos de migração, onde “dispensa” a obrigatoriedade de reformulação ou adequação de S.O antigos. Isso contribui para agilizar e facilitar a execução de lift-and-shitf de projetos, ganhando maior tração e engajamento, além de flexibilizar a utilização da infraestrutura de Onpremise para cloud.

É preciso cumprir todos os requisitos de licenciamento ao fazer upload e iniciar instâncias com base nas imagens do SO que você fornece.

 

2.4.1 . Limites e Considerações

Para a feature do BYOI também existem alguns avisos e orientações que devem ser considerados na utilização:

  • Há suporte para apenas um disco, e ele deve ser a unidade de inicialização com um registro mestre de inicialização (MBR) e um carregador de inicialização.
  • O processo de inicialização não deve exigir a presença de volumes de dados adicionais para uma inicialização bem-sucedida
  • A imagem do disco não pode ser criptografada
  • A imagem do disco deve ser um arquivo VMDK ou QCOW2
  • A interface de rede deve utilizar DHCP para descobrir as definições de rede
  • A configuração de rede não deve codificar o endereço MAC da interface de rede

 

3 . Criar Custom Images

Agora que entendemos o funcionamento básico de uma Custom Images, vamos partir para criação da imagem.

A instância que utilizaremos como modelo para ser executada a custom image está rodando um Sistema Operacional Oracle-Linux 7.9.

A primeira etapa é acessar a instância, clicar no botão More Actions e depois selecionar o item Create custom images

CI-image2

Na tela aberta, escolha o compartimento onde ficará a Custom Image e logo abaixo o nome da imagem. Preenchido esses dois campos basta confirmar no botão Create custom image.

CI-image3

Após confirmação, caso a instância esteja rodando será iniciado um processo de parada e só após isso começa a criação da Custom Image.

image 4

Finalizada a criação, a instância automaticamente será reiniciada e a imagem criada já estará disponível dentro do menu do serviço Custom Images.

CI-image5

Dentro da Custom Image criada, pode ser validado todos detalhes e características, tais como; tamanho, id, data/hora de criação, imagem de origem e etc.. Além disso, também são disponibilizados cinco botões com ações distintas.

CI-image6

CI-image7

O primeiro botão Create instance serve para criar uma nova instância usando como base esta imagem, no exemplo “image-modelo”. O segundo botão Edit detais, mostra quais compatibilidades da imagem da imagens com os shape de máquinas em OCI. O terceiro botão, Edit image capabilities, é o mais especifico, trata-se do modelo de imagem, boot, firmware, etc.. Na quarta opção, Export, temos a possiblidade de exportar a imagem enviando está para bucket, que pode ser local ou remota em outra região. E por último, o botão More Actions, disponibiliza executar a movimentação dessa imagem para outro compartimento, deletar a imagem ou adicionar uma tag.

CI-image8

 

4 . Exportando imagem para outra região

No capítulo anterior, acompanhamos como criar uma custom images e o que podemos fazer com ela. Agora nessa etapa, vamos exportar a imagem criada para uma outra região e nessa nova região iremos criar uma nova instância.

Para executar o procedimento export é necessário previamente ter criado bucket. O bucket não precisa ser pública, porém é preciso que o usuário que executa a ação tenha permissão no bucket para criar uma pré-autenticação.

Primeiro passo é, acessar o menu Custom Images, selecionar a imagem e escolher a opção Export. Dentro do menu, podemos escolher entre duas maneiras de fazer o exporte. Na opção Export to an Object Storage bucket você irá transferir a imagem para um bucket local, isto é, na mesma região onde Custom Image foi executada.  Na outra opção Export to an Object Storage URL a imagem será transferida para um bucket remoto, em outra região, todavia existe o pré-requisito de ser gerado uma URL mediante a criação de uma autorização na bucket remota.

Ambas soluções são validas, funcionais e em sua essência parecidas, ficando a critério de como deseja seguir. Para este artigo iremos exportar direto para bucket remota.

Em nosso exemplo iremos transferir a custom image da região Ashburn para bucket em Vinhedo. A bucket na região de Vinhedo já está criada.

Assim como descrito, para utilizarmos a opção de transferir direto para bucket remoto precisamos de uma URL. Para isso vamos acessar a região remota, no meu caso Vinhedo, entrar na console, acessar o menu hambúrguer categoria Storage e selecionar item bucket. Dentro do menu será exibida uma lista com as bucket acessivies, vamos entrar na bucket que deseja, acessar o menu Pre-Authenticated Request seguido clicar em Create Pre-Authenticated Request

Na tela de create vamos escolher a opção “Object” e no campo que abrirá abaixo vamos colocar o nome exato da imagem feita com o custom imagem, no meu caso image-modelo. Na opção Access type vamos escolher o último item “Permit object reads and writes”. Este permite escrever e ler os objetos gravados na bucket.  

Após isto, é preciso aguardar enquanto a imagem está sendo transferida.

export

Após a conclusão da transferência, a imagem transferida de Ashburn está disponível na bucket de Vinhedo. O próximo passo é acessar a console, menu hambúrguer, categoria Compute e depois Custom Images. Lembrando que isso deve ser executado na região do bucket que recebeu a imagem, em nosso exemplo é Vinhedo. Dentro do Custom Images, selecione o botão Import image, uma tela será aberta solicitando algumas informações. Dentre várias opções a mais importante é referente a “Bucket in Compartiment”, em que é preciso selecionar o bucket que recebeu a imagem, em seguida “Object Name”, deve ser selecionado a imagem desejada. Ao final será iniciado o processo de importe.

import

 

4.1 . Criando instância a partir de uma custom image

Com a imagem importada, seguiremos com a criação de uma nova instância. Para isso, vamos voltar a acessar o menu Custom Images e já selecionamos a nova imagem importada, para nosso exemplo ” imported-image-from-ashburn”. Dentro da imagem, iremos selecionar “Create instance”. A tela a seguir é a mesma para criação de uma instância comum, sendo assim basta selecionar as opções desejadas e confirmar a criação.

creating

Pronto, com isso criamos uma nova instância em Vinhedo baseada em uma imagem customizada trazida de Ashburn.

5. Conclusão

Conforme demostrado nesse artigo, Custom Images é um recurso simples de ser usado, mas que possui um alto valor para uma estratégia de ambiente saudável e resiliente. Vimos que de maneira simples e seguindo poucos passos foi possível criar um ambiente segurança, escalavel e pronto falha e recuperação . Espero ter conseguido transmitir com sucesso o conceito por de trás desse componente, exaltando sua relevância na estratatégia corporativa.