Fabric e Django

70 views
Skip to first unread message

Max

unread,
Nov 28, 2012, 10:43:01 PM11/28/12
to django...@googlegroups.com
Pessoal,
Comecei a me aventurar com o Fabric e estou gostando bastante apesar de já ter perdido bastante tempo criando um script,

Gostaria de tirar algumas duvidas com aqueles que usam Fabric, vi algumas pessoas que utilizam o git para transferir os arquivos, isto é, envia do ambiente de desenvolvimento para o git e em seguida baixa do servidor do git para o servidor de produção. Enquanto por outro lado, vi pessoas que usam o rsync que aparentemente parece a melhor solução.

O negócio é que tenho sido um pouco infeliz com ele, meu deploy está assim:

def deploy():
    """
    Send the code to the remote host.
    """
    # Copy the project
    rsync_project(
        remote_dir='/home/nsfelect/www_py/',
        exclude=RSYNC_EXCLUDE,
        delete=True,
        extra_opts='--omit-dir-times',
    )

sendo assim, ele envia da pasta que eu estou ('D:\CODE\wamp\www\nsfcms'), para o '/home/nsfelect/www_py/' que já contém uma pasta chamada 'nsfcms'.

O debug tem sido um erro de permissão, que eu ainda não descobri como resolver (as permissões estão 755):

'''
rsync: recv_generator: failed to stat "/home/nsfelect/www_py/nsfcms/nsfcms-backup-20121128014318.sql": Permission denied (13)
rsync: recv_generator: mkdir "/home/nsfelect/www_py/nsfcms/engine" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
'''



Alguém tem idéia?

Valeu!


Douglas Miranda

unread,
Nov 29, 2012, 2:54:52 PM11/29/12
to django...@googlegroups.com
Eu uso os 2, ou seja, o fabric faz o push da máquina local para o controle de versão, daí na produção e faz um pull. Usando o git ele preserva as permissões de arquivos.

No fabfile que uso p/ deploy no meu site tem umas coisinhas que só uso na webfaction e tals, mas acho que dá p/ ter uma ideia lá em 'deploy()'
https://github.com/douglasmiranda/douglasmiranda.com/blob/master/fabfile.py

Rafael Novello

unread,
Nov 29, 2012, 3:21:20 PM11/29/12
to django...@googlegroups.com
Oi max,

Eu uso o git no servidor e só vejo vantagens, o deploy fica mais rápido já que se transfere apenas as alterações e para fazer rollback de versões (tags) tbm é muito mais fácil.

Recomendo usar assim tbm.

Um abraço!
Atenciosamente,
Rafael Novello.

Twitter: @rafa_novello



--
 
 

Max

unread,
Nov 29, 2012, 3:23:04 PM11/29/12
to django...@googlegroups.com
Eu tinha lido a respeito do pessoal que usa rsync, mas então pelo jeito compensa usar o Git mesmo.

Aqui ninguém usa a função rsync_project() do fabric então...


--
 
 



--
AVISO LEGAL
Esta mensagem contém informação confidencial, protegida por sigilo profissional, para uso exclusivo do destinatário acima enunciado, especificamente para essa ocasião. 
(Constituição Federal, art. 5º, XII e XIV; Lei nº 8.906/94, art. 7º, II).


Max

unread,
Nov 29, 2012, 3:43:03 PM11/29/12
to django...@googlegroups.com
O que vocês usam (ou como usam) dentro do fabfile.py de vocês, para autenticar sem precisar de senha.

No caso do ssh eu utilizo uma chave pública, mas e no caso de algum outro tipo de senha, por exemplo senha do banco de dados.

Ou mesmo no arquivo settings.py, vocês deixam a senha exposta lá no DATABASES ?

Rafael Novello

unread,
Nov 29, 2012, 4:04:53 PM11/29/12
to django...@googlegroups.com
Max,

Para autenticação via ssh uso chaves também.

Não costumo aplicar alterações diretamente no banco com o script de deploy, no máximo rodo migrações criadas pelo South[1], mas acredito ser possível "pedir" a senha via terminal mesmo no case de automações com Fabric.

Sobre a senha ficar no settings do Django, não há problema algum nisso já que apenas os devs ou os sysadmins deveriam ter acesso ao servidor, certo?


Atenciosamente,
Rafael Novello.

Twitter: @rafa_novello



--
 
 

Italo Maia

unread,
Nov 29, 2012, 6:38:06 PM11/29/12
to django...@googlegroups.com
Oi Max, tenho deploy com rsync sem esse problema, que é bem estranho. Já viu as permissões do arquivo e da pasta no servidor?

Fiz uma postagem recentemente sobre o assunto deploy git x rsync: http://www.italomaia.com/2012/11/03/deploy-de-aplicacao-web-python-da-para-melhorar/

Particularmente, vejo mais vantagens em se utilizar o rsync, pois você controla direitinho o que está entrando em produção. Tinha um script de deploy baseado em "git pull" para atualizar o código. Passei para rsync com fabric e está funcionando muito bem. 


--
 
 



--
"A arrogância é a arma dos fracos."

===========================
Italo Moreira Campelo Maia
Bacharel em Ciência da Computação - UECE
Analista de Sistemas / Desenvolvedor Web, Desktop e Mobile (Python, Java, Lua)
Coordenador do Pug-CE
-----------------------------------------------------
http://www.italomaia.com/
http://twitter.com/italomaia/
http://eusouolobomau.blogspot.com/
-----------------------------------------------------
Turtle Linux  9.10 - http://tiny.cc/blogturtle910
Turtle Linux 10.10 - http://bit.ly/cEw4ET
===========================

Max

unread,
Nov 29, 2012, 6:46:18 PM11/29/12
to django...@googlegroups.com
Olá Italo,
Foi exatamente o seu artigo que me levou a questionar a respeito do uso de rsync e/ou git.
Acredito que eu esteja tendo problemas por usar windows (apesar de já ter instalado o rsync apropriado) e o negócio acaba sendo bem escasso de documentação.
Uma das minhas tentativas foi rodar o local(rsync...) mas tive os mesmos resultados.
:(

Matheus Lima

unread,
Nov 29, 2012, 11:41:55 PM11/29/12
to django...@googlegroups.com

Eu utilizo com Git, porém de uma forma diferente.

Não utilizo pull no servidor, de forma alguma. Nem sempre eu quero colocar a ultima versão no servidor, nem é legal fazer isso.

Eu faço com que o Fabric dê um push do meu repositório, direto pro repositório que está em produção, dando um git init antes. Assim eu tenho controle sobre qual versão exatamente eu quero em produção. Entenderam?

Quando eu vou fazer um deploy, eu coloco meu projeto na versão que quero, na minha máquina local. Testo e vejo se está tudo ok. Se for realmente o que quero em produção, eu mando fazer o deploy. Então o Fabric executa um git init no repositório de produção, em seguida força um push pro repositório de produção. Simples!







--
 
 



--
Att,

Matheus dos Santos Lima     


Vinicius Assef

unread,
Dec 2, 2012, 4:06:19 AM12/2/12
to django...@googlegroups.com
Max, sobre as senhas, escrevi recentemente isso:
http://aprenda-python.blogspot.com.br/2012/11/desacople-usuario-e-senha-e-compartilhe.html

--
Vinicius Assef



2012/11/29 Max <luca...@uberlandia.com>:
> --
>
>

dalembertian

unread,
Dec 2, 2012, 10:58:30 AM12/2/12
to django...@googlegroups.com
Acho que, das coisas que mudaram nos últimos 12 meses, a que mais teve impacto no meu dia a dia foi finalmente ter passado a usar o Fabric...

Foi uma revolução tão grande quanto passar a usar git, há vários anos - aproveitando, acho o git ótimo como "ferramenta de deploy", muito melhor que rsync, maven e diversas outras soluções, em minha opinião, para projetos Django (onde entregamos, basicamente, o código-fonte).

Eu venho aprimorando um fabfile.py padrão para todos os meus projetos, que deixei público no GitHub:

https://github.com/dalembertian/fabmanager

Entre outras coisas, resolvi esta questão das senhas fazendo o Fabric pegar a senha do banco de dados, por exemplo, do próprio settings.py (já para acesso aos ambientes, SSH com chave privada, claro). Para a questão de gerenciar vários ambientes, adotei a solução de ter um settings.py para cada um, mas fazendo o commit junto com o projeto (acho bem melhor que deixar de fora do git). O meu fabfile gera os arquivos de configuração do Apache e do mod_wsgi para cada ambiente.

Talvez você ache útil...

Abraço,
Rubens

Luciano Ramalho

unread,
Dec 2, 2012, 7:44:57 PM12/2/12
to django...@googlegroups.com
2012/12/2 dalembertian <rub...@altimari.com.br>:
Excelente, Rubens, muito grato por compartilhar!

Vou adotar o fabmanager!

[ ]s
Luciano



--
Luciano Ramalho / OFICINAS TURING
Twitter: @ramalhoorg

Autor e professor dos cursos:

* Objetos Pythonicos --> http://turing.com.br/oopy
* Python para quem sabe Python --> http://turing.com.br/ppqsp

luan fonceca

unread,
Dec 2, 2012, 7:57:05 PM12/2/12
to django...@googlegroups.com
To gostando muito desse tópico, estou tentando sair dessa parte apenas de dev-boy e esse assunto está sendo de grande valia no momento, continuem por favor kkkkkkkkkkk


--





--
  • Software Engineering student at the Universidade Federal do Rio Grande do Norte;
  • Front-end Designer and Developer;
  • Python/Django Developer at the multmeio.com.br.

Reply all
Reply to author
Forward
0 new messages