Olá, tudo bem?
Eu entendi o conceito para os scripts puppet, mas pesquisando vi que dá para trabalhar com módulos, que é até uma forma mais segura e de boas práticas assim como código em outras linguagens. Bom estou tentando trabalhar com o vagrant e puppet mas para um projeto python com django, assim é dieferente de um projeto java.
estou tentando fazer um script puppet que vai instalar o django, fazer o clone do projeto no github, instalar o requirements do projeto python com pip install requirements.txt, instalar o my sql, criar o banco, instalar o uwsgi, o nginx, virtualenv e intalar e configurar o jenkis
Até agora eu tenho as pastas organizadas em módulos da seguinte forma:
files
(diretório vazio)
manifests
nodes.pp
web.pp
modules
django
manifests
init.pp
files
(diretório vazio)
git
manifests
init.pp
files
(diretório vazio)
postgres
Para executar os scripts do puppet eu uso o comando:
sudo puppet apply --modulepath=/vagrant/modules /vagrant/manifests/web.pp
No arquivo init.pp da pasta git eu tenho o script:
class git{
include git::install
}
class git::install{
package { 'git:':
ensure => present
}
}
define git::clone ( $path, $dir){
exec { "clone-$name-$path":
command => "/usr/bin/git clone git@github.com:$name $path/$dir",
creates => "$path/$dir",
require => [Class["git"], File[$path]],
}
}
No arquivo init.pp da pasta django eu tenho o script:
class django{
include django::install, django::clone, django::environment
}
class django::install {
package { [ "python", "python-dev", "python-virtualenv", "python-pip",
"python-psycopg2", "python-imaging"]:
ensure => present,
}
}
class django::clone {
git::clone { 'My GitHub repository name':
path => '/home/vagrant/',
dir => 'django',
}
}
define django::virtualenv( $path ){
exec { "create-ve-$path":
command => "/usr/bin/virtualenv -q $name",
cwd => $path,
creates => "$path/$name",
require => [Class["django::install"]],
}
}
class django::environment {
django::virtualenv{ 've':
path => '/usr/local/app',
}
}
No arquivo nodes.pp eu chamo os outros da seguinte forma:
node default {
include postgres
include git
include django
}
e no web.pp eu eu importo o que tem no nodes:
import ' nodes.pp '
só que ta dando problema e não está clonando o projeto do git, quando executo o comando ele dá erro:
Could not find dependency File[/home/vagrant/] for Exec[clone-radar-parlamentar/radar-/home/vagrant/] at /vagrant/modules/git/manifests/init.pp:16
Não estou conseguindo resolver, como faço para tal?
Obs: onde está como o nome 'My GitHub repository name' eu coloco o nome do projeto do github corretamente.
Como faço para resolver?