[[!toc levels=4]] Bootstrap de uma configuração completa ====================================== Estágios de configuração ------------------------ Os seguintes estágios fazem parte de uma instalação padrão completa: 1. [Instalação do sistema padrão](/install) na máquina hospedeira. 2. [Criação de um vserver padrão](/vservers) para hospedar um nó administrativo. 3. [Bootstrap do puppet](/puppet) no vserver administrativo usando [hydra](http://git.sarava.org/?p=hydra.git;a=summary). 1. Instalação do gitosis. 2. Criação de um repositório [keyring](https://git.sarava.org/?p=keyringer.git;a=summary). 3. Criação de um repositório com a configuração padrão do puppet (repositório modelo no [puppet-bootstrap](http://git.sarava.org/?p=puppet-bootstrap.git;a=summary). 4. Clonagem do repositório e configuração inicial. 5. Clonagem do repositório para /etc/puppet. 6. Execução do puppetmaster pela primeira vez. 4. Configuração de serviços fundamentais: * Gitosis. * Criação das chaves criptográficas (gitosis + hydra) * Chaves GPG para backup local criptografado. * Chaves SSH para armazenamento remoto de backup. * Backups. * Puppetmaster. 5. Criação de outros vservers/nós: * Nó de armazenamento ("storage") para agrupamento de backups. * Proxy. * Web. * Test. Configuração do puppet ---------------------- apt-get install puppetmaster puppet git-core openssh-server cd /etc/puppet mkdir modules git init git add . repos="`lynx -dump http://git.sarava.org/?a=project_index | awk '{ print $1 }' | grep ^puppet-`" for repo in $repos; do module="`basename $repo .git | cut -d - -f 2`" if [ ! -d "modules/$module" ]; then git submodule add git://git.sarava.org/puppet-$module.git modules/$module fi done No caso de bootstrap para um novo projeto, substitua as referências de `git.sarava.org` para `git.projeto.org`. Configurando referências remotas em massa ----------------------------------------- # Configuracao origin="sarava.org" remotes="sarava.org:porta" repos="`lynx -dump http://git.$origin/?a=project_index | awk '{ print $1 }' | grep ^puppet-`" # Adicionando referencias for repo in $repos; do module="`basename $repo .git | cut -d - -f 2`" if [ -d "puppet-$module" ]; then cd puppet-$module for remote in $remotes; do ref="`echo $remote | cut -d . -f 1`" domain="`echo remote | cut -d : -f 1`" port="`echo remote | cut -d : -f 2`" git remote add $ref ssh://gitosis@git.$domain:$port/puppet-$module.git git push $ref master done cd .. fi done Mudando referências em submódulos --------------------------------- # Configuracao origin="sarava.org" dest="exemplo.org" cd puppet sed -i -e "s/git.$origin/git.$dest/" .gitmodules cd modules for module in `ls`; do cd $module git remote rm origin git remote add origin git://git.$dest/puppet-$module.git git config branch.master.remote origin git config branch.master.merge refs/heads/master cd .. done Exemplo de criação em massa de módulos -------------------------------------- # Configuracao origin="sarava.org" remotes="sarava.org:porta" mkdir puppet-{ikiwiki,moin,mysql,trac}/manifests -p touch puppet-{ikiwiki,moin,mysql,trac}/manifests/init.pp for module in ikiwiki moin mysql trac; do cd puppet-$module cp ../puppet-git/LICENSE . git init git add . git commit -a -m "Initial import" for remote in $remotes; do ref="`echo $remote | cut -d . -f 1`" domain="`echo remote | cut -d : f 1`" port="`echo remote | cut -d : f 2`" git remote add $ref ssh://gitosis@git.$domain:$port/puppet-$module.git git push $ref master done cd .. done