Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Criação do Vagrantfile com as configurações para a VM de desenvolvimento #14

Open
drgomesp opened this issue Oct 3, 2012 · 52 comments
Labels
Milestone

Comments

@drgomesp
Copy link
Contributor

drgomesp commented Oct 3, 2012

Deverá ser criado o Vagrantfile necessário para subir uma VM com as seguintes configurações:

  • CentOS
  • PHP (stable)
  • MySQL (stable)
  • Apache2

Será utilizado o Puppet para a definição das configurações.

PS: Falta decidir os vhosts que serão utilizados, caso necessário.

@netojoaobatista
Copy link
Member

Project Root: /var/www/html/oportunidades
Document Root: /var/www/html/oportunidades/public

/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.2   ophportunidades.localhost

/etc/httpd/conf.d/ophportunidades.conf

NameVirtualHost 127.0.0.2:80

<Directory "/var/www/html/oportunidades">
    Options -Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost 127.0.0.2:80>
    DocumentRoot /var/www/html/oportunidades/public
    ErrorLog /var/www/html/oportunidades/error.log
    ServerName ophportunidades.localhost
    LogLevel warn
    ServerSignature Off
</VirtualHost>

@augustohp
Copy link
Contributor

PHP 5.3 ou 5.4?
O suporte ao 5.3 acaba esse ano, eu voto sempre pelo 5.4 =D

@samuelmesq
Copy link

@augustohp palavras de @netojoaobatista :

Sobre o PHP e MySQL, instalamos as últimas estáveis do CentOS.

@augustohp
Copy link
Contributor

Que são?

@netojoaobatista
Copy link
Member

@augustohp, são: PHP 5.3.2, MySQL 5.1.52 e Apache 2.2.15

@augustohp
Copy link
Contributor

Po, a do Ubuntu 12.04 é 5.3.10 e acho antiga já. O MySQL também é bem mais atual o 5.5 ...
Sério que vocês preferem mesmo usar o CentOS?

A versão 5.3.2 tem mais de 2 anos já =X

No fim o SO é indiferente pra gente agora. Podemos mudar depois, é mais o lance de ter menos trabalho pra fazer as coisas.
Eu colocaria um Varnish também nessa configuração.
Sem contar os cabeçalhos de dev do PHP pra compilarmos extensões caso seja necessário e a PEAR que no Ubuntu por exemplo não vem no pacote padrão;

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 3, 2012

PHP tem versões estáveis tanto para 5.3 quanto para 5.4, isso não deverá ser uma limitação.

Caso seja, usamos outra distor mesmo.

Tentarei criar esse arquivo hoje, ainda estou no trabalho, em reunião o dia todo.

@netojoaobatista
Copy link
Member

Sempre podemos abrir mão dos pacotes da distro e compilar o PHP, MySQL e Apache direto na VM.

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

Vou me certificar de ter as versões estáveis mais atuais de cada pacote.

Do contrário, trocamos de distro sem problema algum.

127.0.0.2:80, este é o endereço padrão para o acesso local? Isto será definido no Vagrantfile.

@augustohp
Copy link
Contributor

Sério que a gente vai optar por compilar as coisas só por causa da escolha do SO? Isso é bastante contra produtivo vocês não acham?

Mas enfim, acho importante antes de mais nada definirmos as versões utilizadas de cada componente =P

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

Não vamos compilar nada. Posso pegar versões específicas direto do gerenciador de pacotes do CentOS.

Mas como eu disse, quaisquer dificuldades, partimos para uma solução mais simples, afinal de contas, para o que precisamos, o OS realmente não fará a menor diferença.

@augustohp
Copy link
Contributor

Exato, eu pretendo desenvolver as coisas locais, provavelmente tenho a versão que será utilizada. O bacana é que com o vagrant a gente consegue testar bem o esquema de deploy e subir ainda um Jenkins!

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

Minhas sugestões para as versões são:

  • PHP 5.4.7
  • Apache httpd 2.4.3
  • MySQL 5.5.28

Exatamente, o Vagrant nos facilita muito neste quesito.

Porém, talvez um Travis facilite a nossa vida, pela facilidade da configuração comparado com o Jenkins... Especialmente por utilizarmos o Pagoda.

Estou errado?

@augustohp
Copy link
Contributor

+1 pras versões \m/

@drgomesp A idéia nossa é usar o Travis mesmo (bem lembrado, precisamos de um ticket pra isso), mas acho que seria bacana configurar um Jenkins no vagrant e acessá-lo, até memso porque vamos ter metade do caminho pronto. Pra isso é bom que o serviço e a porta já estejam mapeados.

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

Posso fazer isso tranquilamente, porém acredito que, pela limitação de tempo, não conseguirei preparar o Jenkins já pra amanhã. É possível, mas não garanto.

Vou escrever os recipes do Puppet para essas versões dos serviços, e ainda tem outras coisas, como os vhosts, que são essenciais pra amanhã.

Porém, +1 pro Jenkins, sempre preferível em qualquer situação.

@augustohp
Copy link
Contributor

Na real acho que é só deixar a porta do jenkins no vagrantfile e ele instalado. A idéia é justamente mostrar a gente configurando o Jenkins rapidão pra galera ver que não é bixo de 7 cabeças. Mas não acho que ele faça parte do caminho crítico, só acho bacana deixar ele de reserva ali já. Reconfigurar o vagrant e subir a VM de novo não vai ser bacana de fazer ao vivo =P

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

+1.

Show de bola, farei isso então.

@augustohp
Copy link
Contributor

Happy panda

@wesleyvicthor
Copy link
Contributor

@augustohp ja vi você configurando o jenkins mano e não fez isso em menos de uma hora ainda mais com os plugins de métricas etc.

@suissa
Copy link

suissa commented Oct 4, 2012

O Vagrant ja foi feito?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

@wesleyvicthor não vou configurar nada, apenas instalar e abrir uma porta específica pra ele na VM.

@suissa ainda não, estou terminando de escrever o Vagrantfile e devo fazer o pull request hoje, antes do hangout.

@netojoaobatista
Copy link
Member

@drgomesp, vamos precisar dessas máquinas antes do hangout. Precisaremos configurar as chaves SSH e ver outras configurações para o ambiente de desenvolvimento.

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

@netojoaobatista estou no trabalho neste momento, voltarei a trabalhar nisso quando sair, às 17h.

De qualquer forma, o básico vai estar pronto até às 22h.

Precisamos de mais o que, especificamente?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 4, 2012

@netojoaobatista, @augustohp, tive alguns problemas para configurar, em pouco tempo, as versões combinadas.

Acabei seguindo a sugestão do João, e pegando as últimas versões estáveis do CentOS.

Mais pra frente podemos mudar - e acho que devemos mesmo, mas para agora, creio que deverá servir.

Falta terminar as configurações específicas de vhosts e outros detalhes.

@augustohp
Copy link
Contributor

Devemos mudar de maneira urgente. Começar o projeto com uma versão de 2 anos atrás do PHP é pra mim uma vergonha pessoal. A coisa se agrava mais quando todo o core está bem decidido a finalizar o suporte à árvore do 5.3 esse ano.

Mas acho que não precisa de muito não... pelo menos no começo do Hangout vamos (ao meu ver) muito mais o terminal e o PHPUnit do que qualquer outra coisa.

@drgomesp Você consegue abrir uma pull request com o Vagrantfile já? Pra gente ir testando e construindo as VMs?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 5, 2012

@augustohp, posso mudar sim.

Porém, pelo pouco tempo que temos, acho melhor usar um Ubuntu ou algo parecido.

Não tenho costume com ele, pra instalar um 5.4 stable nele é rápido?

Estou em fase de término, jájá vou fazer a pull request.

@netojoaobatista
Copy link
Member

Com base na situação atual, uma VM para dev é, realmente, necessária?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 5, 2012

Ainda assim acho importante.

Estou providenciando a mais simples possível...

@netojoaobatista
Copy link
Member

@drgomesp, importante por qual motivo?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 5, 2012

@netojoaobatista acredito que mais pela questão da padronização de ambiente entre os desenvolvedores.

E também pela facilidade do gerenciamento de pacotes, ferramentas, etc.

Vamos abrir o hangout interno pra discutir melhor isso?

@augustohp
Copy link
Contributor

Acho que rola usar do jeito que está, ter alguma coisa é melhor do que não ter nada. Se mudarmos isso agora corremos o risco de não ter nada como o @netojoaobatista bem notou.

Depois mudamos as coisas e discumos melhor.

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 5, 2012

Esqueci de referenciar aqui, mas tá feito o Pull Request com o básico.

@rogeriopradoj
Copy link
Member

@drgomesp, o Pull Request #30 é o que tem as configurações básicas, certo?

Acho que está em um repositório seu fechado: o que mais você já montou? Tem como mandar em um gist para nós?

@rogeriopradoj
Copy link
Member

Criei um branch, feature/vagrant, para colocar o Vagrant file e os provisioners que usaremos.

No commit baecd18 eu peguei os arquivos que o @drgomesp tinha mandado no Pull Request, retirei os comentários e subi sem muita configuração adicional.

Pessoal fera em provisioners, tanto com Puppet ou com Chef, o que vocês estão usando ( @hussani , @EHER , @FabioBatSilva)?

@FabioBatSilva
Copy link

@rogeriopradoj Tenho usado Cookbooks, a maioria desse repositório https://github.com/opscode-cookbooks

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 7, 2012

@rogeriopradoj sugiro usar o Puppet, que está a frente do Chef em vários sentidos.

Como falei, meu Pull Request ficou bem básico, porque estava tentando resolver na pressa.

Mais pra frente pretendo montar algo decente, mas já pode fazer o commit disso também.

@rogeriopradoj
Copy link
Member

@FabioBatSilva, valeu, cara.

@drgomesp Feito merge no develop. Acho que o próximo passo agora é montar os vhosts pelo menos, que não estão montados.

@EHER e @eminetto, sei que vocês usam Puppet, como vocês estão fazendo para configurar vhosts no Apache?

@rogeriopradoj
Copy link
Member

@drgomesp Se puder, lança para a gente umas referências dessa comparação entre o Puppet e o Chef.

Já ouvi o @EHER citando sobre a preferência dele pelo Puppet, mas era mais "filosófica" (Puppet ser mais aberto e o Chef ter a empresa Opscode controlando).

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 8, 2012

Criar vhosts com o Puppet é muito fácil, na própria documentação isso fica evidenciado de forma simples.

@EHER
Copy link

EHER commented Oct 9, 2012

Como ficou isso? Posso ajudar com algo?

@drgomesp
Copy link
Contributor Author

drgomesp commented Oct 9, 2012

@EHER não ficou, está ficando.

Estou trabalhando nos vhosts agora.

Pode sempre ajudar, claro.

Basta contribuir.

@rogeriopradoj
Copy link
Member

Olá, @EHER , tudo certo?

No nosso branch feature-vagrant dentro da pasta /vagrant está sendo feito o Puppet para provisionar nossa máquina dev.

Porém ainda temos algumas coisas que estão definidas no Boxfile que será usado em produção no Pagoda que ainda não estão configuradas nesse Puppet dev.

Boxfile:
php_extensions: - apc - pdo_mysql - zip - timezonedb - mbstring

Puppet -> ophportunidades.pp:
`
class php {

package { "php":
    ensure => present,
}

package { "php-mysql":
    ensure => present,
}

package { "php-common":
    ensure => present,
}

}
`

@drgomesp, você acha que o package php-common trata tudo, ou precisaríamos listar essas dependências uma por uma?

@dextervip
Copy link

Tem alguma forma fácil de subir a app para VM vagrant?

@EHER
Copy link

EHER commented Oct 13, 2012

A vantagem de ter alguma ferramente de provisionamento é garantir que os ambientes são identicos. Nesse caso, isso não é possível.

Pelo que vi, o que sabemos do Pagoda (pq é o que vamos configurar no Boxfile) é:

  • versão do php
  • extensions

Essa garantia é o bastante?

@rogeriopradoj
Copy link
Member

@EHER acredito que nesse momento sim, a versão do php e as extensões são o suficiente.

Mas o que você sugere para que tenhamos os ambientes mais próximos?


Já estou pensando em criar um repositório separado apenas para a configuração do Vagrant, e talvez um outro para os provisionamentos, nesse caso o Puppet, seguindo a mesma ideia do pessoal do https://github.com/pyrocms:

  • repositório do projeto fica limpo (sem nenhuma configuração específica de vagrant nem provisionamento)
  • um repositório com os arquivos de provisionamento (com submódulos git para cada um dos módulos Puppet)
  • um repositório para o Vagrantfile, com dois submódulos git: 1 para o projeto, e outro para a pasta do Puppet

@EHER
Copy link

EHER commented Oct 14, 2012

Para garantir a versão do php e extensões, o composer dá conta. Ele não instala, mas reclama caso esteja diferente do que está configurado no composer.json.

Se for php 5.4 o "php -S localhost:80" deve ser o suficiente para ambiente de desenvolvimento.

O lance de ter repositório do puppet, acredito que é válido se a gente quiser usar uma AWS da vida e garantir que o ambiente de produção está igual aos outros ambientes.

Agora se o objetivo for criar a possibilidade de ter vários ambientes usando Vagrant e Puppet, gosto da separação em repositórios que vc fez.

Como a nossa configuração vai ficar bem simples, provavelmente um arquivo só resolve (não criaria módulos).

Nesse caso do Puppet, vamos precisar basicamente de Package, Service e File:

  • Package garante a instalação dos pacotes;
  • File garante a configuração dos serviços usando um arquivo dentro do projeto ou template;
  • Service sobe o serviço quando tudo estiver configurado ou quando alguma configuração for alterada.

@augustohp
Copy link
Contributor

Vamos dar uma prioridade pra isso pra facilitar o desenvolvimento de todo mundo e evitar problemas de ambiente e/ou configuração em diferentes ambientes. Isso vai resolver nossa vida pra caramba. A gente tem um branch feature-vagrant com essa fature vamos priorizar o merge (e finalização caso necessário, já que faz quase aniversário que não olho pra esse código) desse branch no branch develop.

@augustohp augustohp mentioned this issue Jul 12, 2013
@rogeriopradoj
Copy link
Member

@augustohp vou voltar a olhar tb, cara.
On Jul 12, 2013 2:25 PM, "Augusto Pascutti" [email protected]
wrote:

Vamos dar uma prioridade pra isso pra facilitar o desenvolvimento de todo
mundo e evitar problemas de ambiente e/ou configuração em diferentes
ambientes. Isso vai resolver nossa vida pra caramba. A gente tem um branch
feature-vagrant com essa fature vamos priorizar o merge (e
finalização caso necessário, já que faz quase aniversário que não olho pra
esse código) desse branch no branch develop.


Reply to this email directly or view it on GitHubhttps://github.com//issues/14#issuecomment-20890910
.

@diegoholiveira
Copy link
Contributor

Galera, eu tenho uma box do debian7 + php5.5 que pode facilitar bastante. Se vocês quiserem, posso providenciar o setup com o Vagrantfile + puppet. O que acham? Ou é melhor usar o php5.4?

@rogeriopradoj
Copy link
Member

Olá, @diegoholiveira. Minha opinião: deveríamos usar alguma box oficial do Vagrant e, em cima dela, fazer o provisionamento que for melhor (Puppet, Chef, shell script, qualquer coisa :-) ).

Na página oficial, eles só tem Ubuntus LTS lá, https://github.com/mitchellh/vagrant/wiki/Available-Vagrant-Boxes, mas acho que vale a pena (para não termos que dependermos de hospedagem para isso).

Sobre o Puppet, acho sim que devemos ir com ele. O pessoal do http://puphpet.com/ (https://github.com/puphpet) tem vários módulos já adaptados até com integração com o Composer, vale a pena da uma olhada também.

Sobre o PHP 5.5, voto por ele também, desde que na Pagodabox eles já tenham 5.5 disponível. Senão tiverem, vamos de 5.4 (manter o dev mais próximo do ambiente de produção). @augustohp, sabe que versão o Pagodabox está rodando?

@augustohp
Copy link
Contributor

+1 pra um Ubuntu LTS
+1 Pro PuPHPet
+1 pra box de 32bits (melhorar compatibilidade pra todo mundo.. vai que né...)

Versão de PHP no PagodaBox a última é a 5.4.14. 😒

Eu vou ver se normalizo o develop e o master pra gente já poder fazer o Vagrantfile e os manifests certinhos e testa eles direitinho. Pra isso queria que vocês desse um feedback na issue #57 também.

@hussani
Copy link

hussani commented Jul 13, 2013

+1 Ubuntu LTS
+1 PuPHPet

Trabalhamos com 5.4.x mesmo.
Quando ficar disponível no PagodaBox uma nova versão podemos atualizar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests