Estou procurando um chef para automatizar as implantações do Magento - tanto nas opções de hospedagem padrão do Magento quanto em ambientes como o EC2. Pesquisei no Google e vi várias receitas, mas nenhuma realmente me parece canônica. Existe algum script de chef em particular que seja melhor / melhor? Além disso, se você já fez implantações de chefes com PHP antes, o que você gostaria de saber quando estava começando?
10
Respostas:
É quase impossível ter um conjunto de rotinas de tamanho único. Eu tive sucesso escrevendo um script Bash que executa
chef-client
corridas nas listas de hosts fornecidas porknife search
. Os procedimentos são assim ...Código aberto Chef Server 10.18.2 no Ubuntu 12.04 LTS
$branch
n98-magerun.phar
n98-magerun.phar
$revision
como uma nova versãoFonte: https://gist.github.com/parhamr/6177160#file-2-deployment
fonte
Foi assim que me aproximei dessa área enquanto usava o papel de ser administrador de sistemas / devops. A maioria dos itens a seguir serão apenas princípios gerais que tento seguir e não específicos do Chef.
Acabei indo com o Puppet porque descobri que havia mais recursos na época e me senti mais fácil de pegar.
Eu olhei para os vários módulos pré-criados disponíveis para coisas como apache, php5, etc. Muitos deles pareciam fazer muito mais do que eu precisava e por estarem tão familiarizados com a plataforma que não confiavam no que estava acontecendo. Decidi que seria mais simples identificar o que precisava ser feito em cada tipo de nó.
Iniciei o processo provisionando o ambiente de desenvolvimento local da equipe (vargrant + caixa virtual). Para cada serviço / componente, criei um módulo: php5, apache2, redis, mysql, etc.
Depois que o ambiente de desenvolvimento estava estável / funcionando, comecei a criar o ambiente de controle de qualidade. Eu defini tipos de nós genéricos para servidores web, redis, vernizes etc. que reutilizaram os mesmos módulos que o dev. Feito isso, o armazenamento temporário e a produção precisavam de mudanças mínimas para começar a funcionar.
Ao escrever e escrever suas receitas / modelos, considere como se poderia ser reutilizado / generalizado. Não codifique coisas como caminhos ou usuários / grupos que podem mudar entre distros / projetos / ambientes. Como você está olhando para uma abordagem generalizada, acho que um grande obstáculo será lidar com as diferenças entre as distribuições * nix.
Mais importante, manter é simples. Automatize / padronize as partes mais importantes / demoradas do ambiente. Iterar, evoluir.
fonte