Solucionado (ver solução)
Solucionado
(ver solução)
15
respostas

vagrant destroy, vagrant up, manifests

Existe uma forma de preservar o diretório manifests quando eu executo um vagrant destroy ? Toda vez que executo, a pasta vagrant/manifests é apagada. Na atividade 2 da aula 3, o Guilherme fala em não ser mão de vaca e executar vagrant destroy, vagrant up e depois dá um puppet apply... Ocorre que alem de perder a pasta, o puppet também não vem instalado depois do vagrant up e tenho que fazer a instalação na mão. Tem como resolver?

15 respostas

Oi Slompo, puxa, o Vagrant está apagando sua pasta local? Isso não deveria estar acontecendo. Pode me dizer seu sistema operacional e versão do Vagrant pra mim testar isso de perto?

solução!

Consegui resolver. Eu não sei exatamente o que estava ocorrendo para apagar os scripts, especialmente do web.pp. Após executar um destroy, conferir se os scripts estavam preservados e reiniciar a máquina, passou a funcionar corretamente.

Tá, qualquer coisa, aciona a gente aqui!

O que você fez, porque o meu ele apaga sempre que realizo o destgroy, a minha maquina está com windows 10.

Meus scripts estavam sendo feitos no Notepad++. Quando eu notava que o sistema apagava o conteúdo do script no disco eu modificava um caracter e depois em Salvar para ele restaurar. Mas o que funcionou mesmo foi executar um "destroy", salvar os scripts e reinicializar o Windows. A partir disso funcionou normalmente.

Acho que estou fazendo errado, ou não estou entendendo direito, o arquivo pupet,tem que ser feito no windows ou dentro da maquina virtual?? Isso tudo é novo pra mim.

O primeiro arquivo a ser utilizado é o Vagrantfile. Nele deve estar a "chamada" de instalação do Puppet. A instalação do Puppet vai estar no bootstrap.sh

Depois que for instalado o Puppet que será executado o web.pp, que é onde começa a instalação do Java, Tomcat e MySQL. O Vagrantfile fica na pasta C:\musicjungle Os bootstrap.sh, web.pp e o vraptor-musicjungle.war ficam na pasta C:\musicjungle\manifests No arquivo web.pp, as referências de pastas devem estar corretas. Verifique se mensagens de erro após executar "vagrant up", se houver.

Obrigado, acho que eu não estou sabendo é colocar o chamado dos outros arquivos pelo vagrantfile. vou ter que rever tudo...

sem querer pedir muito, consegui posta como ficou o seu vagrantfile, juro não estou entendendo, onde colocar os arquivos como criar e chamar. Desespero...

Vagrantfile:

Vagrant.configure("2") do |config|

    config.vm.box = "hashicorp/precise32"
    config.vm.provision "shell", path: "manifests/bootstrap.sh"
    config.vm.provision "puppet" do |puppet|
        puppet.manifest_file = "web.pp"
    end

    config.vm.define :web do |web_config|
        web_config.vm.network "private_network", ip: "192.168.50.10"
    end
end

bootstrap.sh:

#!/bin/sh
set -e -x
if which puppet > /dev/null ; then
    echo "Puppet is already installed"
    exít 0
fi
export DEBIAN_FRONTEND=noninteractive

sudo wget -q http://apt.puppetlabs.com/puppetlabs-release-pc1-precise.deb -O /tmp/puppetlabs.deb
sudo dpkg -i /tmp/puppetlabs.deb > /dev/null

rm /tmp/puppetlabs.deb
sudo apt-get update
echo Installlng puppet
sudo apt-get install -y puppet
echo "Puppet installed!"

web.pp:

exec { "apt-update":
  command => "/usr/bin/apt-get update"
}

package { ["openjdk-7-jre", "tomcat7", "mysql-server"]:
    ensure => installed,
    require => Exec["apt-update"]
}

service { "tomcat7":
    ensure => running,
    enable => true,
    hasstatus => true,
    hasrestart => true,
    require => Package["tomcat7"]    
}
service { "mysql":
    ensure => running,
    enable => true,
    hasstatus => true,
    hasrestart => true,
    require => Package["mysql-server"]    
}
file { "/var/lib/tomcat7/webapps/vraptor-musicjungle.war":
    source => "/vagrant/manifests/vraptor-musicjungle.war",
    owner => "tomcat7",
    group => "tomcat7",
    mode => 0644,
    require => Package["tomcat7"],
    notify => Service["tomcat7"]
}
file { "/var/lib/tomcat7/webapps/vraptor-segunda-aplicacao.war":
    source => "/vagrant/manifests/vraptor-musicjungle.war",
    owner => "tomcat7",
    group => "tomcat7",
    mode => 0644,
    require => Package["tomcat7"],
    notify => Service["tomcat7"]
}
exec { "musicjungle":
  command => "mysqladmin -uroot create musicjungle",
  unless => "mysql -u root musicjungle", 
  path => "/usr/bin",
  require => Service["mysql"]  
}

exec { "mysql-password" :
    command => "mysql -uroot -e \"GRANT ALL PRIVILEGES ON * TO 'musicjungle'@'%' IDENTIFIED BY 'minha-senha';\" musicjungle",
    unless  => "mysql -umusicjungle -pminha-senha musicjungle",
    path => "/usr/bin",
    require => Exec["musicjungle"]
}

define file_line($file, $line) {
    exec { "/bin/echo '${line}' >> '${file}'":
        unless => "/bin/grep -qFx '${line}' '${file}'"
    }
}

file_line { "production":
    file => "/etc/default/tomcat7",
    line => "JAVA_OPTS=\"\$JAVA_OPTS -Dbr.com.caelum.vraptor.environment=production\"",
    require => Package["tomcat7"],
    notify => Service["tomcat7"]
}

Slompo, por acaso você estava criando os arquivos dentro da máquina virtual como o Valentim sugeriu que achou que era o certo?

Não. Sempre criei e editei na máquina física.

Já estava com duvidas agora estou ainda mais. estou finalizando o curso e ainda não estou sabendo usar o vagrant. Os arquivos tenho que criar na maquina local como o slampo falou acima ou na maquina virtual? Se crio na maquina virtual ao dar o comando destroy perco tudo que fiz e tenho que refazer tudo.

Segue como estou fazendo no win 10: Crio a pasta do projeto no c: c:\ musicjungle dentro da pasta criso os arquivos bootstrap.sh, e coloco o vraptor-musicjungle.war e crio a pasta manifests e dentro o arquivo web.pp.

Certo? porque até no ubuntu eu me perdir na criação dos arquivos.

Sempre cria na máquina física e o vagrant se encarrega de colocar na máquina virtual.

Isso, eu perguntei se tava criando na virtual por que o destroy deve remover apenas a máquina virtual da sua máquina física sem alterar nada nos arquivos.

Se o Vagrant está removendo os arquivos, deve ser algum bug, então teríamos que pesquisar um pouco pra saber se era isso mesmo ou alguma coisa diferente.

Então tá tudo bem pra você, certo Slompo?

Valentim, caso tenha dúvidas, fique a vontade pra abrir outro tópico, a gente pode ajudar melhor baseado na sua dúvida específica.