quinta-feira, 27 de novembro de 2014

Tutorial: Enterprise Manager 12c Cloud Control com o Oracle VM VirtualBox


O objetivo deste tutorial é criar um ambiente de demo ou testes do Enterprise Manager 12c Cloud Control. Ele surgiu como uma necessidade direta do meu trabalho como pré-vendas em demonstrar soluções para os clientes, porém este mesmo material pode ser muito útil para o público geral, em especial aquelas pessoas que gostariam de ter um ambiente sandbox para aprender mais sobre a ferramenta Enterprise Manager 12c e não têm uma máquina física disponível. 

Além disso, é sabido que a instalação manual do EM12c é um pouco trabalhosa, e muitas vezes o que queremos é apenas usar o ambiente, e não aprender a instalá-lo. Logo, para conseguir um ambiente funcional o mais rápido possível, optei por utilizar extensivamente os templates de VMs disponíveis no site da Oracle.

Pré-Requisitos


Antes de começar, é importante se assegurar que as seguintes condições sejam cumpridas:
  • O suporte a virtualização está habilitado no BIOS. (Extensões VT-x ou similar)
  • A última versão do Oracle VM VirtualBox está instalada. Se vocês caírem no erro abaixo, atualizar a versão do VirtualBox:
 

Baixar em https://www.virtualbox.org/wiki/Downloads. É importante também baixar o Extension Pack compatível.

Para atualizar o Extension Pack do VirtualBox, vá em Arquivo -> Preferências -> Extensões e clique em Acrescentar pacote:

 Selecione o arquivo baixado da home do VirtualBox e atualize o pacote:

  • Baixar os templates das VMs no site da Oracle / e-delivery.
a. Oracle Linux: baixar a Oracle Linux 6 Admin VM. No www.oracle.com, ir em Downloads -> Prebuilt developer VMs
   

 Na lista de VMs, localizar a Oracle Linux 6 Admin VM:



b. Oracle Enterprise Manager 12c Cloud Control: 

Baixar pelo e-delivery (https://edelivery.oracle.com/linux). No Media Pack Search escolher Oracle VM Templates e x86 64 bit:

Baixar o template abaixo:


Cuidado para não baixar o o Oracle VM Template, e sim o Oracle VM VirtualBox. O arquivo correto tem 4 partes e 15 GB no total. A versão mais atual é a 12.1.0.4.0.

Antes de importar o appliance é necessário descompactar os arquivos e recombiná-los em um só *.OVA. Para fazer isso basta seguir as instruções do readme:

a) Extract all of the zip files using unzip. This will create files with the .ova extension. 

b) Run the following command to combine the .ova files into one .ova file: 

On Linux: cat VBox*.ova > EM12cR4.ova

On Windows: type VBox*.ova > EM12cR4.ova
Sugestão: como é um processo intensivo de I/O, recomendo fazer esta movimentação entre HDs diferentes.

Descritivo do Ambiente


Eu estou usando como máquina de teste o notebook Dell Latitude E7240. É um modelo com disco interno SSD e 8 GB de RAM. Eu já fiz um ambiente similar utilizando um note mais antigo, Lenovo Thinkpad T420, também com 8 GB, porém com disco normal. O meu note está com Windows 8, mas no setup anterior fiz com o Windows 7.

Em termos de periféricos, como eu já montei algumas demos bem grandes (exemplo: EBS Vision Single Node, requisitos de 300 GB de disco!), eu comprei dois HDs externos – um HD SSD de 240 GB e outro normal de 1 TB que eu uso como “storage”, ambos em USB 3.0.

A idéia é rodar as VMs a partir do SSD, seja interno ou externo (vou montar no externo neste setup), e manter uma biblioteca de templates no disco normal. Em casos extremos como o do EBS Vision não tem outra escolha senão rodar a VM a partir do disco externo.

Observação: se vocês forem utilizar o recurso de snapshots extensivamente, sugiro deixar num disco externo bem grande, pois vocês vão ver o disco sumir rapidinho. Também dá para bolar uma estratégia mista, mantendo a imagem original no disco lento e as imagens diferenciais no disco rápido. Depois vou elaborar melhor este ponto, primeiro vamos cuidar dos setups básicos, ok?

Basicamente, para ter menos concorrência em disco, uma alternativa é alternar sempre o drive de destino. Ex.: baixar os arquivos do template na unidade externa ‘A’, descompactar no disco interno ‘B’ (ou outra unidade externa ‘C’) e recombinar os arquivos para a unidade externa ‘A’ de novo. Eu mantenho um diretório com todos os templates de VM prontos para importar no disco de 1 TB.

A VM do EM12c depois de importada tem em torno de 40 GB. A VM do Oracle Linux tem 5,5 GB. Após o fim de todos os setups é esperado que elas ocupem bem mais espaço, então recomendo reservar cerca de 60 GB para todo o ambiente.

Passo 1: Import dos Templates


Antes de importar qualquer template é importante indicar para o VirtualBox qual é o diretório de destino das máquinas virtuais. Na tela principal, clicar em Arquivo -> Preferências -> Geral e modificar a pasta padrão das máquinas para o diretório desejado (ficar atento para exigências de espaço livre em disco):


Na tela principal do VirtualBox, clicar em Arquivo -> Importar Appliance:


Selecionar o arquivo EM12cR4.ova e apertar Próximo:
  

Na tela seguinte, eu recomendo renomear a máquina virtual para emcc.example.com, reduzir o número de CPUs para 1 e desativar o áudio, para economizar um pouco de recursos. Feito isto basta disparar o import:


Este processo, considerando o setup que eu comentei, leva em torno de 10 minutos. Se vocês forem importar no mesmo disco, esperem que vai demorar... :)

Na sequência, fazer o mesmo para o Oracle Linux, renomeando a máquina para oel.example.com e desativando o áudio. O import desta máquina leva em torno de 3 minutos. No final vocês devem ter as duas máquinas na página principal do VirtualBox.

Agora, para eu me organizar melhor, eu costumo fazer duas práticas que vocês podem adotar também ou não. A primeira, é organizar as VMs em grupo, assim eu sei que elas fazem parte do mesmo ambiente. Clique com o botão direito do mouse em uma das VMs e escolha Grupo:


Em seguida, arraste a segunda VM para dentro do grupo. Eu vou chamar este grupo de EM12c 12.1.0.4:


A segunda prática é criar um snapshot a cada passo significativo do setup do ambiente. Como acabamos de importar os templates e esse é um processo que pode ser demorado (importar o EM12cR4.ova na minha máquina antiga levava quase uma hora). 

Manter snapshots é uma forma de garantir “restore points” caso vocês precisem voltar o ambiente para o estado anterior, seja para desfazer um erro de configuração ou ainda como um passo natural para ambientes de demo. 

Vou criar um para cada VM a fim de guardar este estado inicial. Primeiro clique em Snapshots, e depois em Criar Snapshot:


Passo 2: Configuração do EM12c


Estamos prontos para inciar a VM pela primeira vez. Inicie a VM emcc.example.com. O usuário e senha é oracle/welcome1. Como primeira tarefa, vamos atualizar os Adicionais para Convidado. No menu do VirtualBox, clicar em Dispositivos -> Inserir imagem de CD dos Adicionais para Convidados...

Na caixa de mensagem que abrir na tela, dar um duplo clique no autorun.sh e escolher Run in Terminal. Ele vai pedir o password do root que também é welcome1. Espere concluir o processo e você pode “ejetar” o CD.

Vamos dar um shutdown na VM e preparar o ambiente de rede. O primeiro passo é configurar a rede de hospedeiro. No menu do VirtualBox, clique em Arquivo -> Preferências -> Rede -> Redes Exclusivas de Hospedeiro. Deve haver pelo menos um adaptador criado:

 

Se não houver, criar um com o ícone + no canto direito da tela. Clique na chave de fenda e depois em Servidor DHCP para ver as configurações da rede:


Por padrão o VirtualBox utiliza a faixa de IPs de 192.168.56.x. IPs iguais ou maiores que 101 estão reservados para o servidor DHCP interno. Como nós vamos utilizar este ambiente para testes de data guard, RAC, etc, recomendo utilizar IPs fixos na faixa de 10 a 100.

Para meu setup inicial, vou considerar as seguintes máquinas:

192.168.56.10 emcc.example.com emcc
192.168.56.20 oel.example.com  oel

Adicione estes endereços nos arquivos hosts de todos os servidores, incluindo o computador host do VirtualBox e as VMs. No Windows 8, o arquivo hosts está no caminho X:\Windows\System32\drivers\etc\hosts, onde X é a unidade de instalação do SO. No Linux, o arquivo hosts está no caminho /etc/hosts. (Um atalho rápido para linha de comando no Windows 8 é pressionar a tecla Windows+x e depois pressionar ‘a’. É preciso ter acesso de administrador para editar o arquivo hosts)
  



Feito isso vamos mudar as configurações das placas de rede dos dois servidores para fixar estes IPs. No VirtualBox, clicar com o botão direito no nome da máquina (emcc.example.com) e depois em Configurações -> Rede e trocar o adaptador para Placa de Rede Exclusiva de Hospedeiro (host-only).


Fazer o mesmo para a máquina oel.example.com.

Um último passo de setup que pode economizar bastante tempo no futuro é definir uma pasta compartilhada para as VMs e o host. Ainda na tela de Configurações, escolher o último item, Pastas Compartilhadas. Eu costumo acrescentar uma pasta shared no meu disco “Storage”.
  

A pasta compartilhada vai estar disponível no diretório /media/sf_nome. Como a minha pasta se chama shared, ela aparece como /media/sf_shared. Note que para o usuário oracle poder ler e gravar nesta pasta ele precisa das permissões corretas. Para fazer isso é necessário acessar o terminal da VM e adicionar o usuário oracle ao grupo vboxsf:


Depois dessa mudança é necessário fazer Log Out / Log On para que o X Windows reconheça as novas permissões.

(Observação: outra coisa que pode ajudar bastante neste momento é habilitar o clipboard bi-direcional no VirtualBox. Isso pode ser feito no menu Dispositivos -> Área de Transferência Compartilhada -> Bi-direcional)

Agora vamos subir a máquina emcc.example.com. Inicie a VM e entre com o usuário oracle/welcome1. Precisamos mudar o IP do adaptador de rede e configurar o arquivo hosts assim como fizemos no Windows. Vá em System -> Administration -> Network, entre com a senha de root - welcome1.

É possível configurar tudo a partir desta única tela, basta seguir os modelos abaixo. Selecionar eth0 e clicar em edit:


Configurar o IP estático:


Na aba hosts, adicionar os endereços do emcc.example.com e oel.example.com:


 


Está na hora de iniciar o EM12c, finalmente, mas os scripts estão bugados... Então antes de subir o EM precisamos corrigi-los no terminal. Abra uma janela do terminal pelo menu Applications -> Accessories -> Terminal.

Então renomeamos os scripts antigos e criamos dois scripts novos para start/stop do oms:

$ mv start_oms.sh start_oms.sh.old
$ mv stop_oms.sh stop_oms.sh.old
$ echo /u01/OracleHomes/Middleware/oms/bin/emctl start oms > start_oms.sh
$ echo /u01/OracleHomes/Middleware/oms/bin/emctl stop oms > stop_oms.sh
$ chmod +x start_oms.sh
$ chmod +x stop_oms.sh

Agora é um bom momento para criar um snapshot da VM. Utilizando a tecla host (Ctrl Direito) + T você pode chamar a tela de criação de snapshots diretamente da VM.


Feito isso basta rodar o script start_all.sh para iniciar o ambiente. O startup pode levar alguns minutos dependendo da máquina, sendo o mais demorado o OMS. Para checar que os detalhes da configuração do OMS, após a inicialização, basta rodar o seguinte comando:

$ /u01/OracleHomes/Middleware/oms/bin/emctl status oms –details
Oracle Enterprise Manager Cloud Control 12c Release 4 
Copyright (c) 1996, 2014 Oracle Corporation. All rights reserved.
Enter Enterprise Manager Root (SYSMAN) Password : 
Console Server Host : emcc.example.com
HTTP Console Port : 7788
HTTPS Console Port : 7799
HTTP Upload Port : 4889
HTTPS Upload Port : 4900
EM Instance Home : /u01/OracleHomes/gc_inst/em/EMGC_OMS1
OMS Log Directory Location : /u01/OracleHomes/gc_inst/em/EMGC_OMS1/sysman/log
OMS is not configured with SLB or virtual hostname
Agent Upload is locked.
OMS Console is locked.
Active CA ID: 1
Console URL: https://emcc.example.com:7799/em
Upload URL: https://emcc.example.com:4900/empbs/upload

WLS Domain Information
Domain Name : GCDomain
Admin Server Host : emcc.example.com
Admin Server HTTPS Port: 7101
Admin Server is RUNNING

Oracle Management Server Information
Managed Server Instance Name: EMGC_OMS1
Oracle Management Server Instance Host: emcc.example.com
WebTier is Up
Oracle Management Server is Up

BI Publisher is not configured to run on this host.

O EM12c já está no ar, porém está acessível apenas a partir da VM. O último passo para liberar o acesso do EM12c no host do VirtualBox é mudar a configuração do Firewall. Existem duas opções: desabilitar o firewall completamente ou adicionar as portas do EM12c como exceção. Ambas as configurações podem ser feitas no menu System -> Administration -> Security Level and Firewall. Para manter a simplicidade do demo, vou simplesmente desabilitar o Firewall como um todo.


Com tudo no ar, basta abrir uma janela do browser no host Windows e digitar o endereço https://emcc.example.com:7799/em.

Se a página não abrir, existe um passo adicional de configuração na rede do host. Numa linha de comando, verifique que a rede VirtualBox Host-Only Network está na mesma faixa de endereços que a VM utilizando o comando ipconfig:

Ethernet adapter VirtualBox Host-Only Network:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::494f:65d3:7114:caef%13
Autoconfiguration IPv4 Address. . : 169.254.202.239
Subnet Mask . . . . . . . . . . . : 255.255.0.0
Default Gateway . . . . . . . . . :

No meu caso ela não está, então para corrigir vamos alterar as configurações da rede no Painel de Controle:


As configurações do IPV4 estavam erradas. É só colocar tudo em automático e voltar ao teste. Para confirmar que o problema está resolvido, basta rodar um ping na linha de comando:

C:\Windows\system32>ping emcc

Pinging emcc.example.com [192.168.56.10] with 32 bytes of data:
Reply from 192.168.56.10: bytes=32 time<1ms TTL=64
Reply from 192.168.56.10: bytes=32 time<1ms TTL=64
Reply from 192.168.56.10: bytes=32 time<1ms TTL=64
Reply from 192.168.56.10: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.56.10:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms


C:\Windows\system32>

De volta ao browser:


Voilá! Sucesso! :)

Lembrando que a senha do sysman é welcome1.


Opcional: Executar a VM sem interface gráfica.


Para economizar um pouco de recursos, eu gosto de desabilitar a interface gráfica das VMs e consolidar todo o gerenciamento via browser no host do VirtualBox. Para fazer isso, primeiro é necessário baixar os serviços do EM12c. No terminal, execute o script stop_all.sh.

Em seguida, como root edite o arquivo /etc/inittab e troque o default runlevel de 5 para 3:

# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

Reinicie a máquina, entre com o usuário oracle/welcome1 e execute o script start_all.sh novamente. Estamos prontos!

Passo 3: Configuração da máquina Linux


O objetivo do tutorial era criar um ambiente EM12c para demos. Uma das primeiras coisas que os clientes gostam de ver é como se faz uma instalação de agentes remotamente. É para isso que eu vou utilizar esta máquina com o Oracle Linux.

Primeiro, vamos configurar a conectividade. Inicie a VM oel.example.com. O usuário e senha é oracle/oracle.

Como é uma versão diferente do Linux, os menus estão em lugares diferentes, mas os objetivos são os mesmos:

1. Instalar Adicionais para Convidados

2. Desabilitar (ou configurar) o Firewall: em System -> Administration -> Firewall

3. Configurar o IP estático: System -> Preferences -> Network Connections. Em eth0 -> Edit.

4. Adicionar entradas de endereço no arquivo /etc/hosts.

5. Configurar Pastas Compartilhadas, incluindo permissões do usuário oracle e owner da pasta.

Um passo adicional que não foi necessário fazer na VM anterior é mudar o nome da máquina. É preciso editar o arquivo /etc/sysconfig/network e mudar a linha HOSTNAME para HOSTNAME=oel.example.com.

Além disso, precisamos adicionar o usuário oracle na lista de sudoers. Como root, utilize o comando visudo e adicione a seguinte linha no final do arquivo:

oracle ALL=(ALL) ALL

Ainda no visudo, vamos aproveitar para mudar as propriedades requiretty para !requiretty e !visiblepw para visiblepw:


Também vamos criar a hierarquia de diretórios para acomodar a instalação do agente. Como root digite:

mkdir /u01

chown oracle:oracle /u01

Passo 4: Instalar o agente do EM12c no host oel.example.com


Agora que temos todo o ambiente preparado, vamos adicionar a VM oel.example.com como um alvo gerenciado no EM12c.

No menu Setup -> Add Target -> Configure Auto Discovery vamos criar uma nova pesquisa para encontrar o host oel.example.com.

Clique em Create para adicionar uma nova regra de descoberta:


Na tela seguinte, clique em Add. Neste passo estamos escolhendo o agente do EM12c que vai ficar responsável por fazer esta varredura. No caso, só temos um agente disponível, o do próprio EM12c:

  

Selecione o agente emcc.example.com:3872 para prosseguir para a próxima tela. Agora temos que preencher o formato de busca do host. Você pode preencher vários valores separados por espaços e utilizar faixas de endereço ou nomes de hosts. Eu optei por fazer a busca diretamente pelo nome do host para economizar tempo.


É necessário definir também as credenciais de root (ou poweruser) do host onde está o agente que vai fazer a varredura. Lembrando, a senha do root é welcome1. Vou salvar esta credencial como credencial nomeada para uso futuro:


Ao clicar em Save and Submit Scan você vai voltar para a tela anterior:


Depois de poucos segundos o resultado já deve estar completo:


Você pode ver o resultado da pesquisa clicando no número “1” na coluna Discovered Targets, ou pelo menu Setup -> Add Target -> Auto Discovery Results. Na primeira aba da tela, Host and Oracle VM Manager, é possível promover o host para gerenciado pelo botão Promote


O Promote vai abrir um wizard para guiar a instalação do agente do EM12c no host:



Na primeira tela não tem muito segredo, é só certificar que o SO foi descoberto corretamente. Na segunda tela especificamos o caminho da instalação do agente. Pode ser qualquer caminho que faça sentido. Vou colocar /u01/agentHome:


Também vou criar uma credencial nomeada para o usuário oracle:



A última tela é apenas um review. Clique em Deploy Agent.


O EM12c vai executar os passos de verificação e instalar o agente:


Pronto, o oel.example.com está gerenciado!

Conclusões


O objetivo deste roteiro era criar uma infra estrutura básica para poder rodar demos do Enterprise Manager 12c Cloud Control. Não se trata de um ambiente production ready em função de algumas simplificações que fizemos na configuração, em especial em termos de segurança, mas é perfeitamente funcional para realizar demos, testes e apresentações.

Espero que tenham gostado do passo a passo e quaisquer dúvidas fiquem a vontade para postar nos comentários.