353 VM Deployment and Provisioning

From Documentacao LPI
Jump to: navigation, search

353.1 Cloud Management Tools (peso: 2)

Objetivo do tópico:

Weight 2
Description Os candidatos devem compreender as ofertas comuns em nuvens públicas e ter conhecimento básico dos recursos das ferramentas de gerenciamento de nuvem comumente disponíveis.

Áreas de conhecimento chave:

  • Entender as ofertas comuns em nuvens publicas
  • Conhecimento básico de recursos do OpenStack
  • Conhecimento básico de recursos do Terraform
  • Conhecimento de CloudStack, Eucalyptus e OpenNebula

Lista parcial de arquivos, termos e utilitários usados:

  • IaaS, PaaS, SaaS
  • OpenStack
  • Terraform

Entender as ofertas comuns em nuvens publicas

  • Diferencial da nuvem em relação a consumo de recurso de datacenter virtualizado: Pagamento pelo consumo, serviços integrados com autogerenciamento
  • Principais conceitos:
    • IaaS
    • Paas
    • Saas
  • Principais nuvens e serviços
    • AWS
    • Azure
    • Google Cloud

Conhecimento básico de recursos do OpenStack

OpenStack é uma plataforma Open Source que permite que seja construído a chamada nuvem de infraestrutura como serviço (IaaS) rodando em hardware convencional. Grandes corporações estão por traz do projeto como a NASA por exemplo.

  • Os serviços OpenStack controlam grandes pools de computação, armazenamento e recursos de rede ao longo de um data-center.
  • A tecnologia por trás OpenStack consiste em uma série de projetos inter-relacionados entregando vários componentes para uma solução de infraestrutura de nuvem. Cada serviço oferece uma API aberta para que todos esses recursos possam ser gerenciados através de um painel de controle que fornece aos administradores controle a recursos de provisão através de uma interface web, um cliente de linha de comando, ou kits de desenvolvimento de software que suportam a API. Muitas APIs OpenStack são extensíveis, o que significa que você pode manter a compatibilidade com um conjunto básico de chamadas, proporcionando acesso a mais recursos e inovando através de extensões de APIs. O projeto OpenStack é uma colaboração global de desenvolvedores e técnicos de computação em nuvem. O projeto produz uma plataforma de computação em nuvem padrão aberto para nuvens públicas e privadas. Ao concentrar-se na facilidade de implementação, escalabilidade massiva, uma variedade de recursos avançados, e uma enorme capacidade de extensão, o projeto tem como objetivo oferecer uma solução prática e confiável de nuvem para todos os tipos de organizações.
  • Arquitetura OpenStack

Existe uma gama complexa de serviços que funcionam como sub projetos dentro do guarda-chuva do OpenStack que juntos formam o projeto como um todo. Abaixo listados por tipo de serviço, nomenclatura e descrição.

Arquitetura Openstack.png
  • Serviço disponibilizado - Nome do Projeto - Descrição
    • Dashboard - Horizon - Provê a interface Web, para interagir com os serviços do OpenStack
    • Compute (Computação) - Nova - Gerencia o ciclo de vida das instâncias de computação. Gerencia as maquinas virtuais.
    • Rede - Neutron - Habilita conectividade de rede como um serviço para os serviços OpenStack, como o de computação por exemplo. Suporta as tecnologias e fabricantes mais populares
    • Object Storage (Armazenamento de objetos) - Swift - Armazena e recupera objetos de dados não estruturados. É altamente tolerante a falhas com a sua replicação de dados e arquitetura scale-out.
    • Block Storage (Armazenamento de blocos) - Cinder - Provê armazenamento de bloco persistente para as instâncias.
    • Identity Service (Serviço de identidade) - Keystone - Provê serviço de autenticação e autorização para os demais serviços do Openstack.
    • Image service (Serviço de imagem) - Glance - Armazena e recupera imagens de disco de máquina virtual. OpenStack Compute faz uso disto durante o provisionamento de instância.
    • Telemetry (Telemetria) - Ceilometer - Monitorar e medir a nuvem Openstack para billing, benchmark, escalabilidade, etc.

Conhecimento básico de recursos do Terraform

Terraform é uma ferramenta para criar, alterar e criar versões de infraestrutura com segurança e eficiência. Terraform pode gerenciar provedores de serviços existentes e populares (AWS, Azure, Gcloud), bem como soluções internas personalizadas [1].

  • Precisa de dois arquivos, um com informações do provedor e outro com a receita informando o que será criado.
    • Exemplo de arquivo provider.tf
provider "aws" {
    region = "sa-east-1"
    access_key = "AKIA9485jPX2Z3IDG7S"
    secret_key = "hCWEHw4plkkfdjlkdfjlkdfslfk02CVln"
}
    • Exemplo de arquivo main.tf:
data "aws_ami" "ubuntu" {
  most_recent = true

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }

  owners = ["099720109477"] # Canonical
}

variable "vpc_id" {
    default = "vpc-0c49f6b5b84d75103"
}

variable "subnet_id" {
    default = "subnet-0cf21c3f41404169f"
}

variable "key_name" {
    #default = "terraform-key"
    default = "terraform-key"
}


resource "aws_security_group" "permitir_ssh" {
  name        = "permitir_ssh"
  description = "Permite SSH na instancia EC2"
  vpc_id      = var.vpc_id

  ingress {
    description = "SSH to EC2"
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "permitir_ssh"
  }
}

resource "aws_instance" "webserver1" {
  ami           = data.aws_ami.ubuntu.id
  instance_type = "t2.micro"
  key_name = var.key_name
  subnet_id = var.subnet_id
  vpc_security_group_ids = [aws_security_group.permitir_ssh.id]
  associate_public_ip_address = true

  tags = {
    Name = "webserver1"
  }
}
  • Comandos básicos de execução [2]

. Inicializar depois de configurar o provedor
# terraform init

. Executar o comando para planejamento
# terraform plan


. Aplicar as alterações planejadas
# terraform apply -auto-approve

. Para destruir o plano criado
# terraform destroy -auto-approve

Conhecimento de CloudStack, Eucalyptus e OpenNebula

  • CloudStack:

CloudStack é uma plataforma de software de código aberto que reúne recursos de computação para construir uma pública, privada e hibrida Infra-estrutura como serviço (IaaS) de nuvens. CloudStack gerencia os nós de rede, armazenamento e computação que compõem uma infraestrutura de nuvem. CloudStack é usado para implantar, gerenciar e configurar ambientes de computação em nuvem.

  • O CloudStack foi comprado da empresa cloud.com pela Citrix e em seguida liberado na licença Apache2 disponibilizado e mantido pela Apache Foundation
Cloudstack arquitetura.jpg
  • Alguns recursos:
    • Configuração sob demanda, serviço de núvem elastico (adaptável). Provedores de serviços podem vender instâncias de máquinas virtuais, volumes de armazenamento e configurações de rede através da Internet.
    • Em uma configuração de nuvem privada, em vez de gerenciar máquinas virtuais da mesma forma como máquinas físicas, com CloudStack uma empresa pode oferecer auto-serviço de máquinas virtuais para os usuários sem envolver os departamentos de TI.
    • Suporte a multiplos hypervisors
    • Gestão de Infra-estrutura altamente escalável: CloudStack pode gerenciar dezenas de milhares de servidores instalados em vários datacenters geograficamente distribuídos. O servidor de gerenciamento centralizado escala linearmente, eliminando a necessidade de servidores intermediários de gerenciamento de nível de cluster. Nenhuma falha de componente único pode causar queda de toda a nuvem. A manutenção periódica do servidor de gerenciamento pode ser realizada sem afetar o funcionamento de máquinas virtuais rodando na nuvem.
    • Gerenciamento de Configuração Automática: CloudStack configura automaticamente as configurações de rede e de armazenamento de cada máquina virtual convidada (guest). CloudStack gerencia internamente um conjunto de dispositivos virtuais para dar suporte a própria nuvem. Estas aplicações oferecem serviços como firewall, roteamento, DHCP, acesso VPN, proxy de console, o acesso ao armazenamento e replicação de armazenamento. O uso extensivo de dispositivos virtuais simplifica a instalação, configuração e gerenciamento contínuo de uma implementação de nuvem.
    • Interface gráfica de usuário: Cloudstack oferece uma interface de administrador web, usada para provisionamento e gerenciamento do cloud, bem como interface web de usuário final, usada para rodar VMs e gerenciar templates. A interface pode ser customizada.
    • API: Cloudstack provê API para acessos de programas ou scripts aos recursos.
    • Alta disponibilidade: CloudStack tem um número de características para aumentar a disponibilidade do sistema. O próprio Management Server pode ser implantado em uma instalação multi-nó onde os servidores são load balancers. MySQL pode ser configurado para utilizar a replicação para proporcionar um limite de falha manual em caso de perda de dados. Para os Hosts, CloudStack suporta ligação NIC e o uso de redes separadas para armazenamento, bem como iSCSI Multipath.
  • Características em destaque:
    • Instalação simplificada, podendo ser instalado em 2 VMs. Como ponto negativo, a instalação pode se tornar engessada
    • Zona de segurança de rede. Isolamento de rede seguro
    • O suporte a hypervisors inclui Citrix XenServer, Oracle VM, Hyper-V
    • Facilidade de uso com uma interface web interativa e documentação bem organizada.
  • Eucalyptus:

Assim como seus concorrentes, o Eucalyptus é um software livre e open-source para construir ambientes de nuvens de computação privadas e híbridas compatíveis com Amazon Web Service (AWS). Eucalyptus é um acronimo para "Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems". Ele disponibiliza computação em pool, recursos de storage e rede que podem ser dinamicamente escalados para cima ou para baixo (elasticidade) conforme a alteração da carga de trabalho. Em setembro de 2014 o projeto foi adquirido pela Hewlett-Packard.

  • Comandos do Eucalyptus podem gerenciar tanto a Amazon ou instâncias de Eucalyptus. Os usuários também podem se mover entre as instâncias de uma nuvem privada Eucalyptus e a Amazon Elastic Compute Cloud para criar uma nuvem híbrida. A virtualização de hardware isola as aplicações de detalhes de hardware do computador.
  • Visão geral da arquitetura e nomenclatura (Muito similares com AWS):
    • Images: Uma imagem é uma coleção fixa de módulos de software, software de sistema, software de aplicação e informações de configuração que é iniciado a partir de uma linha de comando conhecida (imutável/fixo). Quando empacotados e enviados para a nuvem Eucalyptus, ela se torna uma imagem de máquina Eucalyptus (EMI).
    • Instances: Quando uma imagem é colocada em uso, ela é chamada de uma instância. A configuração é executada em tempo de execução, e o Cloud Controller decide onde a imagem será executada, o armazenamento e a rede são anexados para atender às necessidades de recursos.
    • IP addressing: Instâncias do Eucalyptus podem ter endereços IP públicos e privados. Um endereço IP é atribuído a uma instância quando a instância é criada a partir de uma imagem. Para os casos que requerem um endereço IP persistente, como um servidor web, Eucalyptus fornece endereços IP elásticos. Estes são pré-alocados pela nuvem Eucalyptus e podem ser transferidos para uma instância em execução.
    • Security: Grupos de segurança TCP/IP compartilham um conjunto comum de regras de firewall. Este é o mecanismo para firewall desligado em uma instancia usando a funcionalidade de bloqueio/liberação de ip address e porta. As instâncias são isoladas no TCP/IP na camada 2.Se isto não estivesse presente, um usuário pode manipular a rede de instâncias e ter acesso a instâncias vizinhos que violam o princípio básico nuvem de isolamento e separação de instâncias.
    • Networking: Há três modos de redes. Em Managed Mode Eucalyptus gere uma rede local de instâncias, incluindo grupos de segurança e endereços IP. No System Mode, Eucalyptus atribui um endereço MAC e atribui interface de rede da instância para a rede física através de Bridge do Controlador do nó HOST. O System Mode não oferecer endereços IP elásticos, grupos de segurança, ou isolamento de VM. Em Static Mode Eucalyptus atribui endereços IP de instâncias. O Modo estático (Static Mode) não oferece IPs elásticos, grupos de segurança, ou isolamento de VM.
    • Access Control: Um usuário de Eucalyptus é atribuído uma identidade e identidades podem ser agrupadas para controle de acesso.
  • OpenNebula:

OpenNebula é uma plataforma de computação em nuvem para o gerenciamento de infra-estruturas de data-centers distribuídos e heterogêneos. A plataforma OpenNebula gere infra-estrutura virtual de um data-center para construir implementações privadas, públicas e híbridas de infra-estrutura como um serviço (IaaS). OpenNebula é um software livre e de código aberto, sujeitos às exigências da Licença Apache versão 2. OpenNebula é uma solução enterprise que inclui todas as características necessárias para fornecer uma oferta de nuvem no local, e para oferecer serviços de nuvem pública.

  • OpenNebula fornece recursos para as duas principais camadas de Virtualização de Data Center e Cloud Infrastructure:
    • Gerenciamento de virtualização de data center: Muitos usuários usam OpenNebula para gerenciar virtualização de data center, consolidar servidores, e integrar os ativos de TI existentes para computação, armazenamento e networking. Neste modelo de implantação, OpenNebula integra diretamente com hypervisors (como KVM, Xen ou VMware ESX) e tem o controle completo sobre os recursos físicos e virtuais, fornecendo recursos avançados para gerenciamento de capacidade, otimização de recursos, alta disponibilidade e continuidade de negócios. Alguns destes usuários também desfrutam de gestão em nuvem do OpenNebula e recursos de provisionamento adicional quando desejam federar centros de dados, implementar cloudbursting, ou oferecer portais de auto-atendimento para os usuários.
    • Gerenciamento de nuvem: Alguns usuários utilizam OpenNebula para fornecer "um multi-tenant", provisionamento de camada de nuvem em cima de uma solução de gerenciamento de infra-estrutura existente (como o VMware vCenter). Esses usuários estão à procura de provisionamento, elasticidade e nuvem multi-tenancy características como provisionamento virtual de datacenter, federação de datacenter ou computação em nuvem híbrida para ligar as infra-estruturas in-house com nuvens públicas, enquanto a infra-estrutura é gerida por ferramentas já conhecidas para a gestão de infra-estrutura e operação.
  • O OpenNebula faz parte dos softwares de gerenciamento de nuvens, como o Openstack, CloudStack e Eucalyptos. Assim como os anteriores, as funcionalidades básicas se repetem e o objetivo é o mesmo

353.2 Packer (peso: 2)

Objetivo do tópico:

Weight 2
Description Os candidatos devem ser capazes de usar o Packer para criar imagens do sistema. Isso inclui a execução do Packer em vários ambientes de nuvem pública e privada, bem como a construção de imagens de contêiner para LXC / LXD.

Áreas chaves de conhecimento:

  • Compreender as funcionalidades e características do Packer
  • Criar e manter arquivos de template
  • Construir imagens de arquivos templates usando diferentes builders

Lista parcial de termos, arquivos e utilitários:

  • packer

packer

Packer é uma ferramenta para criação de maquinas e imagem de containers para múltiplas plataformas a partir de uma configuração de única origem.

  • Packer não substitui o gerenciamento de configuração como Chef ou Puppet. Na verdade, durante a construção de imagens, Packer é capaz de usar ferramentas como o Chef ou Puppet para instalar softwares na imagem.
  • Uma imagem de máquina é única e estática e contém um sistema operacional pré-configurado, com softwares instalados. É usada para criar novas máquinas rapidamente.
  • Packer é fácil de usar e automatiza a criação de qualquer tipo de imagem de máquina. Ela abrange um gerenciamento de configuração moderna, incentivando você a usar um framework como o Chef ou Puppet para instalar e configurar o software dentro de suas imagens Packer feitas.
  • Uma das vantagens do uso do Packer é a possibilidade de implantação de infra-estrutura super rápida. Packer imagens permitem que você rode máquinas totalmente provisionados e configurados em segundos, em vez de vários minutos ou horas.
  • Possibilidade de portabilidade Multi-provedor. O Packer cria imagens idênticas para várias plataformas, você pode executar a produção em AWS(Amazon), testes/QA em uma nuvem privada como OpenStack, e desenvolvimento em soluções de virtualização de desktop, tais como VMware ou VirtualBox. Cada ambiente está executando uma imagem de máquina idêntica, dando portabilidade.
  • Packer na prática:
    • Para instalação o packer deve ser simplesmente baixado do site do projeto e descompactado. Deve ser criado um atalho do comando packer em um diretório de binário.
    • Após 'instalado' as operações de deploy de maquinas virtuais, assim como pós instalação da Maquina que constitui a instalação automática, são feitas por um arquivo .JSON. Este arquivo é dividido internamente em seções:
  "variables": ["..."] → Informações de acesso a nuvem
  "builders": ["..."], → Informações de criação da maquina virtual
  "provisioners":["..."] → Informações de pós-instalação
  • Importante salientar que o packer não faz gerenciamento das maquinas, ele apenas provê as maquinas, porém é possível durante o deploy ocorrer a instalação de programas de maneira automática.
    • Abaixo o exemplo de um arquivo para deploy de uma Maquina na nuvem da Amazon Ec2:
{
  "variables": {
    "aws_access_key": "",
    "aws_secret_key": ""
  },
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `aws_access_key`}}",
    "secret_key": "{{user `aws_secret_key`}}",
    "region": "us-east-1",
    "source_ami": "ami-de0d9eb7",
    "instance_type": "t1.micro",
    "ssh_username": "ubuntu",
    "ami_name": "packer-example {{timestamp}}"
  }]
}

Uma vez criado o arquivo de configuração, o packer pode ser executado:

  • Primeiro: Verificando se a configuração criada é válida:
# packer validate exemplo.json.
  • Segundo: Executando o Deploy efetivamente
# packer build exemplo.json.
  • Se adicionarmos o bloco abaixo, ao arquivo exemplo.json, então assim que o servidor for provisionado e funcional, será instalado o pacote apache2
{
  "variables": ["..."],
  "builders": ["..."],

  "provisioners": [{
    "type": "shell",
    "inline": [
      "sleep 30",
      "sudo apt-get update",
      "sudo apt-get install -y apache2"
    ]
  }]
}

Podem ser utilizados vários builders diferentes, provisionando configurações iguais de maquinas em diferentes estruturas de nuvens.

353.3 cloud-init (peso: 3)

Objetivo do tópico:

Weight 3
Description Os candidatos devem ser capazes de usar o cloud-init para configurar máquinas virtuais criadas a partir de imagens padronizadas. Isso inclui o ajuste de máquinas virtuais para corresponder a seus recursos de hardware disponíveis, especificamente, espaço em disco e volumes. Além disso, os candidatos devem ser capazes de configurar instâncias para permitir logins SSH seguros e instalar um conjunto específico de pacotes de software. Além disso, os candidatos devem ser capazes de criar novas imagens de sistema com suporte para inicialização em nuvem.

Áreas chaves de conhecimento:

  • Compreender os recursos e conceitos do cloud-init, incluindo user-data, inicialização e configuração do cloud-init
  • Uso do cloud-init para criar, redimensionar e montar sistemas de arquivos, configurar contas de usuário, incluindo credenciais de login, como chaves SSH e instalar pacotes de software do repositório da distribuição
  • Integrar cloud-init com sistemas de images
  • Usar config drive datasource para testes

Lista parcial de termos, arquivos e utilitários:

  • cloud-init
  • user-data
  • /var/lib/cloud/

Cloud-init Arquitetura

  • Provê a possibilidade de customização para instâncias cloud ou virtualizadas
  • Serviço roda durante o boot, recebendo dados dos usuários de fontes externas e executando ações
  • Modular e configurável:
    • Configurações de disco
    • Execução de comandos
    • Criação de usuários e grupos
    • Gerenciamento de pacotes
    • Escrever arquivos
  • Largamente usado por OpenStack; AWS; RHEV; VMware
  • Categoria de dados: Os dados são recebidos das fontes abaixo e armazenados em: /var/lib/cloud
    • meta-data: É oferecido pela plataforma de cloud
    • user-data: É um conjunto de dados oferecido pelo usuário
  • O Cloud-init procura por um cd ou floppy contendo o arquivo user-data.txt

Utilização

  • Exemplo de instalação de pacote:
#cloud­config
package_upgrade: true
packages:
­ git
­ screen
­ vim­enhanced
  • Criar grupo e usuário:
#cloud-config
groups:
  - ubuntu: [root,sys]
  - cloud-users
users:
  - default
  - name: foobar
    gecos: Foo B. Bar
    primary_group: foobar
    groups: users
    selinux_user: staff_u
    expiredate: '2032-09-01'
    ssh_import_id: foobar
    lock_passwd: false
    passwd: $6$j212wezy$7H/1LT4f9/N3wpgNunhsIqtMj62OKiS3nyNwuizouQc3u7MbYCarYeAHWYPYb2FT.lbioDm2RrkJPb9BZMN1O/
  - name: barfoo
    gecos: Bar B. Foo
    sudo: ALL=(ALL) NOPASSWD:ALL
  • Aumentar partição ROOT
growpart:
  mode: auto
  devices: ['/']
  ignore_growroot_disabled: false

Fontes: [3], [4]

353.4 Vagrant (peso: 3)

Objetivo do tópico:

Weight 3
Description O candidato deve ser capaz de usar o Vagrant para gerenciar máquinas virtuais, incluindo o provisionamento da máquina virtual.

Áreas chaves de conhecimento:

  • Compreender arquitetura e conceito do vagrant, incluindo storage e rede.
  • Recuperar e usar caixas do Atlas
  • Criar e rodar Vagrantfiles
  • Acessar maquinas virtuais Vagrant
  • Compartilhar e sincronizar a pasta entre uma máquina virtual Vagrant e o sistema host
  • Compreender provisionamento Vagrant, i.e. File and Shell provisioners
  • Compreender configuração de multi-machine

Lista parcial de arquivos, termos e utilitários:

  • vagrant
  • Vagrantfile

vagrant

Vagrant é um automatizador na criação de ambientes com o uso de maquinas virtuais, direcionado a projetos de desenvolvimento.

  • O Vagrant usa e depende do VirtualBox da Oracle, VMWare, AWS ou outro provedor, para criar dinamicamente máquinas virtuais configuráveis, leves e portáteis.
  • Por meio do fornecimento de máquinas virtuais fáceis de configurar, leves, reproduzíveis e portáteis, direcionadas para ambientes de desenvolvimento, o Vagrant ajuda a maximizar tanto sua produtividade e sua flexibilidade quanto as de sua equipe.
  • O Vagrant fornece a você as ferramentas para construir ambientes de desenvolvimento únicos para cada projeto de uma vez, e depois facilmente derrubá-los e reconstruí-los apenas quando eles forem necessários para que você economize tempo.
  • Para instalar o Vagrant, baixe o pacote ou o instalador apropriado a partir da página de download e faça a instalação usando os procedimentos padrões do sistema operacional ou distribuição. No Debian 8 basta digitar:
# aptitude install vagrant

Após a instalação, ja podemos criar os ambientes e projetos com o Vagrant.

  • O primeiro passo para usar o Vagrant de maneira efetiva é criar um diretório do projeto.
$ mkdir projeto01
$ cd projeto1
  • Uma vez criado o diretório e dentro do mesmo, temos que criar os arquivos necessários para o Vagrant
$ vagrant init projeto01
  • O ambiente está quase pronto para ser utilizado e precisamos baixar a base necessária sobre a qual os programas do projeto irão rodar. Estas bases necessárias são chamadas de Box e estão disponíveis para download diretamente no site da vagrant em: https://atlas.hashicorp.com/boxes/search/ . Com esta informação em mãos vamos fazer o download do box para o projeto.
* Baixando o box Debian-8 mínimo
$ vagrant box add projeto01 https://github.com/holms/vagrant-jessie-box/releases/download/Jessie-v0.1/Debian-jessie-amd64-netboot.box
  • Para iniciar o projeto, ou seja, inicializar o ambiente virtual, digitar:
$ vagrant up

As maquinas virtuais necessárias são criadas e configuradas conforme o arquivo Vagrantfile que fica armazenado no diretório do projeto. Neste arquivo entre outras coisas é possível definir encaminhamento de portas da maquina física para a virtual, políticas de dependências e as automatizações necessárias para criação de um ambiente de desenvolvimento de forma automática.

  • Exemplo de um VagrantFile[5]
# Example 1
#
# Single box with some custom configuration.
#
# NOTE: Make sure you have the precise32 base box installed...
# vagrant box add precise32 http://files.vagrantup.com/precise32.box

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
  config.vm.hostname = "myprecise.box"
  config.vm.network :private_network, ip: "192.168.0.42"
end