sábado, 9 de janeiro de 2010

[Linux] SVN - Migração

Voltando a escrever...
Primeira semana do ano de trabalho(ou estágio), primeira missão. Objetivo? Migrar um SVN de um datacenter para o SVN local.
Mas primeiramente, o que é um SVN? Segundo o sábio dos sábios, que não é o Google(este é apenas o Oráculo), a wikipedia diz... SVN, acrônimo para Subversion, é um sistema de controle de versões e tem a finalidade de gerenciar diferentes versões de um documento qualquer. Geralmente é usado no desenvolvimento de software para controlar diferentes versões dos códigos-fontes e documentação.

Agora vamos ao que interessa... Como exportar um dump de um repositório svn?
Os comandos são simples, nada de "iptables -A forward blablablabla". Para fazer o dump basta:
# svnadmin dump (caminho para o repo) > (arquivo)

Com o arquivo de dump em mão, é então necessário criar um repositório... Pode ser na mão, mas prefiro indicar uma ferramenta que me ajuda a pensar menos o Submin. Este aplicativo facilita bastante a vida na parte de criação e gerenciamento de repositório e usuários.
Agora com o dump em mãos é necessário carregá-lo no repo recém-criado.
# svnadmin load (caminho para o repo criado) < (arquivo)

Realizado este último comando, é terminado o processo de migração.

Em breve como configurar o WebDav e idéias sobre svnserve!

Este post plagiou devidamente:
http://pt.wikipedia.org/wiki/Subversion
http://pt.wikipedia.org/wiki/Sistema_de_controle_de_versão
http://www.petefreitag.com/item/665.cfm

sábado, 2 de janeiro de 2010

[Linux] NAT em Debian/Ubuntu

Primeira dica útil...
Temos uma máquina X que possuí 2 interfaces de redes, uma que realiza a conexão com a internet e a outra que presta um serviço de DHCP. Como fazer com que as máquinas que estão por de trás do DHCP acessem a rede deste servidor X???

A resposta é simples... Masquerade ou NAT. O que consiste o NAT? O NAT, segundo os sábios da wikipedia, é uma técnica que reescreve os endereços IPs de origem de um pacote que passa por algum gateway (roteador ou firewall) de maneira que um computador de uma rede interna possa acessar a outra rede(que pode ser a externa ou outra subnet).

Agora a parte prática... Preste atenção neste cenário:

M1 (10.0.0.1) --> (10.0.0.2) M2 (10.0.1.3) --> M3 (10.0.1.4)

A máquina 1 tem que falar com a máquina 3, mas ela não consegue. Para isso vamos realizar os seguintes procedimentos de criaçao de uma NAT na máquina 2.

0 - Faça as coisas como macho, e use o modo root.

1 - Habilitar o IP Forward!
$ echo 1 > /proc/sys/net/ipv4/ip_forward

2 - Construir as rotas... Esta etapa é a mais importante e é a que mais precisa de atenção. Temos as 2 placas, uma é para a rede interna e a outra para "externa".
Então vamos criar uma rota para a rede interna.
$ route add -net 10.0.0.0 netmask 255.255.255.0 eth0
Com isso todos os pedidos que forem para a rede 10.0.0.0 serão tratados pela interface eth0.
Agora precisamos tratar os outros pedidos...
$ route add default gw 10.0.1.3 eth1
Com este comando, todos os pedidos que forem diferentes da rede 10.0.0.0, serão encaminhados para a interface eth1. Ou seja se você fizer um tcpdump na eth1, e em seguida mandar pingar em 10.0.1.4, será a interface que foi definida no comando a cima que realizará os trabalhos.

Agora é a receita de bolo do IPTABLES... Mas antes existem coisas que precisamos saber...
1- A interface "externa": eth1
2- A interface interna: eth0
Se você não seguir um padrão, na hora de inserir as regras do IPTABLES, as coisas certamente não darão certo, e será necessário dar um flush esperto nestas regras..
$IPTABLES -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED, RELATED -j ACCEPT
$IPTABLES -A FORWARD -i eth0 -o eth1 -j ACCEPT
$IPTABLES -A FORWARD -j LOG
$IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE

OBS.: Prometo um dia estudar de forma decente o IPTABLES e explicar o que cada uma destas linhas faz e porque faz... =(

Agora para fechar o caixão... Cada máquina da rede interna, tem que saber qual é o seu gateway... Se por algum insano motivo o DHCP não informou a rota, aqui segue o comando para o cenário que eu inventei:
Para a máquina da rede interna:
$ route add -net default gw 10.0.0.2
Para a máquina da rede "externa":
$ route add -net default gw 10.0.1.3

Referência (ou completamente chupado): http://br-linux.org/news2/006411.html

Se houver alguma falha nesse how-to ou partes a serem melhores explicadas, favor deixar um comentário.

[Mangá] Bakuman

Como os meus amiguinhos sabem... eu curto ler um mangá, mas não curto pagar (fala sério, nego não bota no formato ocidental para economizar na edição e ainda me botam um papel nojento).

Bem... o meu mais novo achado foi um mangá chamado Bakuman, que é sobre 2 jovens que querem ser mangakas. A história é interessante porque busca mostrar como é o mundo editorial dos mangás com os seus prazos apertados, mudanças de última hora nos escopos, a disputa entre outros autores e coisas do gênero.

Link: http://www.mangahut.com/manga/m=Uvsl/bakuman/001/pg1

Feliz 2010 e muito PNC!

Eba! Eba! Chegou 2010, e chegou com estilo! Pessoas alegres, pessoas felizes, pessoas alcoolizadas, pessoas fazendo projeto final na véspera do ano novo e comemorando com a sua baleia de pelúcia de estimação... hmm.. essa pessoa sou eu.
Primeiro e último blog, não esperem eu atualizando constantemente (na verdade eu devo abandonar isto em alguns meses), e não esperem um português correto (sou quase analfabeto). O fim deste blog é basicamente eu ter uma memória virtual do que eu fiz, já que sempre esqueço o que eu fiz e como eu fiz. Também pretendo postar alguns comentários sobre a vida cotidiana e achados da tecnologia...