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:
- Instalação do VirtualBox;
- Instalação do Vagrant;
- Edição do arquivo de configuração da nova VM criada pelo Vagrant;
- Criação de um shell script o qual será executado na instalação da nova VM;
- 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/
A mesma automatização poderá ser realizada considerando o Splunk Forwader and também o Splunk Cluster! Mas isso é tema para um outro artigo!