Analytics

26 mai, 2014

Servidor Splunk 6.1 com Vagrant em 5 passos

Publicidade

Quanto mais automatizado um processo, melhor é. E quando falamos de Vagrant, a coisa não pode ser diferente. Basicamente, o Vagrant utiliza os drivers dos fabricantes de software de virtualização e sobre um ambiente com várias configurações, prevendo a instalação de todos os softwares necessários para se realizar testes como se estivesse em um ambiente de produção, ou seja, é possível subir em minutos uma máquina virtual com as mesmas características de uma máquina de produção. O Vagrant faz isso e é um software que você precisa ter em sua caixa de ferramentas até para automatizar a criação de ambientes de testes, que pela velocidade de criação dos mesmos, nos proporciona muito mais tempo focando a solução para um possível problema do que com a criação de máquinas virtuais seguindo o modelo padrão. Para mais informações sobre o Vagrant, em breve publicarei um artigo aqui no iMasters sobre este software.

Bom, neste artigo, quero mostrar como criar uma máquina de testes Splunk em cinco passos, à saber:

  1. Instalação do VirtualBox;
  2. Instalação do Vagrant;
  3. Edição do arquivo de configuração da nova VM criada pelo Vagrant;
  4. Criação de um shell script o qual será executado na instalação da nova VM;
  5. Abrir o browser e acessar o Splunk.

O mais interessante aqui é que, na primeira vez que se inicia um projeto assim com o Vagrant, é possível criar configurações que serão utilizadas para criação da máquina virtual Splunk sempre que se precisar de trabalhar com a mesma. Além disso, vale a pena para aqueles que precisam ter o Splunk, MySQL, Oracle ou qualquer outro software que exige um pouco mais de recurso consumindo espaço de um HD externo ou, considerando um ambiente maior, um NAS ou mesmo NFS.

A instalação do VirtualBox não tem mistério. Só é preciso acessar o site, fazer o download e instalar. Isso vale tanto para Windows, quanto para Linux e Mac. O próximo passo é fazer o download do Vagrant, acessando o site, fazendo o download e instalando na máquina. Um toque aqui é, se você não é chegado à linha de comando, este é o seu ponto de desistência. Caso isso não seja um problema, vamos em frente.

Para este artigo, estou utilizando o terminal do Mac OS e vou explicar cada comando e conceitos em torno dos mesmos. Já passamos então por dois dos passos, instalamos o VirtualBox e o Vagrant, passos que não apresentam nenhum mistério quanto sua evolução.

Com o Vagrant instalado, seu binário chamado vagrant já estará disponível para utilização em linha de comando e todos os comandos de interação com máquinas virtuais criadas com este binário serão utilizados. Primeiro de tudo, verifique a versão do Vagrant que está rodando:

wagnerbianchi:opt root# vagrant --version
Vagrant 1.6.2

Eu sempre escolho o diretório /opt do Linux para descompactar meus softwares, desenvolver scripts e criar qualquer projeto – isso é mania e você deverá continuar com as suas próprias. Com isso, eu criei um diretório /opt/vagrant_project/splunkbox e caminhei em meu terminal até lá. Dentro do diretório citado, entrei com o comando que criará o arquivo de configuração que vamos editar, veja abaixo:

wagnerbianchi:opt root# mkdir -p vagrant_projects/splunkbox01
wagnerbianchi:opt root# cd vagrant_projects/splunkbox01/

# O comando vagrant init <nome_box> criará o arquivo de configuração da máquina virtual
wagnerbianchi:splunkbox01 root# vagrant init splunkbox01
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

# Arquivo de configuração da máquina Virtual a ser criada
# Este arquivo contém as configurações de rede da máquina
wagnerbianchi:splunkbox01 root# ls
Vagrantfile

wagnerbianchi:splunkbox01 root# vim Vagrantfile 
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # nome da máquina virtual a ser iniciada
  config.vm.box = "splunkbox01"
  # imagem do sistema operacional
  config.vm.box_url="http://files.vagrantup.com/precise64.box" 
  # configurações de redirecionamento de portas 
  config.vm.network "forwarded_port", guest: 8000, host: 8080 
  # script para instalação do Splunk 
  config.vm.provision "shell", path: "splunkinstall.sh"
  # IP estático da máquina  
  config.vm.network :public_network, ip: "192.168.0.200" 
end

Algumas observações interessantes sobre o arquivo Vagrantfile:

  • Cada vez que a máquina virtual controlada pelo Vagrant é iniciada, este arquivo é lido e, como definido acima, o sistema operacional será um Ubuntu Precise 12.04 LTS, uma versão básica do mesmo.
  • As configurações de encaminhamento de conexões entre as portas são definidas pelo Vagrant, sendo que, quando digitarmos no browser http://localhost:8080, a conexão será encaminhada para a máquina virtual e abrirá a interface de login do Splunk, que roda na porta 8000.
  • A máquina tera uma interface de rede adicional (eth1) com o IP 192.168.0.200 configurado para que outras pessoas na mesma rede também possam acessar o seu ambiente, ou seja, a empresa poderá utilizar o SPlunk a partir desse momento acessando http://192.168.0.200:8000 ou a sua máquina, acessando a porta 8080. Divertido, não?

O próximo passo é desenvolvermos o “Script para instalação do Splunk”. Bom, aqui vale ressaltar que é interessante você ter um perfil no site da Splunk para que você tenha acesso primeiramente visual do download a ser automatizado aqui. Ao acessar o painel, será possível pegar o URL para então fazer download via wget ou curl. De posse da URL para download do SPlunk 6.1., dentro do mesmo diretório onde estamos (mesmo dir do arquivo Vangratfile), crie o script splunkinstall.sh:

wagnerbianchi:splunkbox01 root# vim splunkinstall.sh 

#!/usr/bin/env bash
#####################################################################
#
#: altere o nome do arquivo, se for o caso
#
SplunkDownloadedFileName="splunk-6.1.1-207789-linux-2.6-amd64.deb"
SplunkSharedFolder="/vagrant"
SplunkHomeDir="/opt"
#
#: URL aqui!!
#
wget -qcO /vagrant/splunk-6.1.1-207789-linux-2.6-amd64.deb 'http://www.splunk.com/page/download_track?file=6.1.1/splunk/linux/splunk-6.1.1-207789-linux-2.6-amd64.deb&ac=&wget=true&name=wget&platform=Linux&architecture=x86_64&version=6.1.1&product=splunk&typed=release' 2>&1
#####################################################################
# STARTING UP THE SPLUNK SETUP ######################################
#####################################################################
echo "Starting the Splunk Environment configuration, please wait ...";
cp $SplunkSharedFolder/$SplunkDownloadedFileName $SplunkHomeDir
cd $SplunkHomeDir 2>&1
dpkg -i $SplunkDownloadedFileName 2>&1
sudo $SplunkHomeDir/splunk/bin/splunk start --accept-license 2>&1

wagnerbianchi:splunkbox01 root# ls
Vagrantfile      splunkinstall.sh

Bom, nesse momento temos tudo que precisamos e o último passo é enviar o comando vagrant up!

wagnerbianchi:splunkbox01 root# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'splunkbox01' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Adding box 'splunkbox01' (v0) for provider: virtualbox
    default: Downloading: http://files.vagrantup.com/precise64.box
==> default: Successfully added box 'splunkbox01' (v0) for 'virtualbox'!
==> default: Importing base box 'splunkbox01'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: splunkbox01_default_1400610556392_81682
==> default: Clearing any previously set network interfaces...
==> default: Available bridged network interfaces:
1) en1: Wi-Fi (AirPort)
2) en0: Ethernet
3) p2p0
    default: What interface should the network bridge to? 1
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: bridged
==> default: Forwarding ports...
    default: 8000 => 8080 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 4.3
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => /opt/vagrant_projects/splunkbox01
==> default: Running provisioner: shell...
    default: Running: /tmp/vagrant-shell20140520-27435-1sd4pj.sh
==> default: stdin: is not a tty
==> default: Starting the Splunk Environment configuration, wait please ...
==> default: Selecting previously unselected package splunk.
==> default: (Reading database ... 
==> default: 51095 files and directories currently installed.)
==> default: Unpacking splunk (from splunk-6.1.1-207789-linux-2.6-amd64.deb) ...
==> default: Setting up splunk (6.1.1) ...
==> default: complete
==> default: Copying '/opt/splunk/etc/openldap/ldap.conf.default' to '/opt/splunk/etc/openldap/ldap.conf'.
==> default: Generating RSA private key, 1024 bit long modulus
==> default: e is 65537 (0x10001)
==> default: writing RSA key
==> default: Generating RSA private key, 1024 bit long modulus e is 65537 (0x10001) writing RSA key
==> default: Moving '/opt/splunk/share/splunk/search_mrsparkle/modules.new' to '/opt/splunk/share/splunk/search_mrsparkle/modules'.
==> default: This appears to be your first time running this version of Splunk.
==> default: Splunk> Take the sh out of IT.
==> default: Checking prerequisites...
==> default: 	Checking http port [8000]: 
==> default: open
==> default: 	Checking mgmt port [8089]: 
==> default: 	Checking configuration... 
==> default:  Done.
==> default: 	Checking critical directories...	Done
==> default: 	Checking indexes...
==> default: 		Validated: _audit _blocksignature _internal _introspection _thefishbucket history main summary
==> default: 	Done
==> default: New certs have been generated in '/opt/splunk/etc/auth'.
==> default: open
==> default: 		Creating: /opt/splunk/var/lib/splunk
==> default: 		Creating: /opt/splunk/var/run/splunk
==> default: 		Creating: /opt/splunk/var/run/splunk/appserver/i18n
==> default: 		Creating: /opt/splunk/var/run/splunk/appserver/modules/static/css
==> default: 		Creating: /opt/splunk/var/run/splunk/upload
==> default: 		Creating: /opt/splunk/var/spool/splunk
==> default: 		Creating: /opt/splunk/var/spool/dirmoncache
==> default: 		Creating: /opt/splunk/var/lib/splunk/authDb
==> default: 		Creating: /opt/splunk/var/lib/splunk/hashDb
==> default: 	Checking filesystem compatibility...  Done
==> default: 	Checking conf files for problems...
==> default: 	Done
==> default: All preliminary checks passed.
==> default: Starting splunk server daemon (splunkd)...  
==> default: Done
==> default: Starting splunkweb...  Generating certs for splunkweb server
==> default: Generating a 1024 bit RSA private key - writing new private key to 'privKeySecure.pem'
==> default: Signature ok
==> default: subject=/CN=precise64/O=SplunkUser
==> default: Getting CA Private Key
==> default: writing RSA key
==> default: Done
==> default: If you get stuck, we're here to help.  
==> default: Look for answers here: http://docs.splunk.com
==> default: The Splunk web interface is at http://precise64:8000

Da primeira vez talvez demore um pouco, dependendo de sua conexão com a internet, mas da segunda vez em diante, quando o box já estará adicionado ao seu Vagrant e o Splunk instalado, basta enviar um novo vagrant up que tudo será implementado muito, mas muito rápido. Para desfazer de sua máquina virtual, envie o comando abaixo e quando quiser trabalhar naquele ambiente novamente, vagrant up!

Finalmente, o Splunk estará disponível no browser da sua máquina através do seguinte endereço: http://localhost:8080/

Tela de login do Splunk
Tela de login do Splunk

A mesma automatização poderá ser realizada considerando o Splunk Forwader and também o Splunk Cluster! Mas isso é tema para um outro artigo!