Ansible - Automatizando o Data Center

Este documento foi criado com a intenção de ser um tutorial Quick-Start. Para uma referência completa do Ansible, exemplos e boas práticas, visite seu site oficial.

[ Hits: 42.896 ]

Por: Renato Santos em 24/02/2014


Módulo / Playbooks



Módulo

Os módulos são os blocos de construção dos Playbooks.

Existem módulos para, praticamente, qualquer tarefa e eles estão evoluindo rapidamente.

Aqui, há uma referência online deles:

Playbooks

São a base do gerenciamento de configuração e deployment de múltiplas máquinas.

Playbooks contém declarações, mas também, podem orquestrar passos de deploy de aplicativos, podem ativar/desativar serviços e garantir que a configuração de um servidor está de um modo específico.

Nesse tutorial, será mostrada uma visão mais prática e imediata dos playbooks. Para a teoria sobre eles, veja a documentação no site:
Então, algumas definições iniciais. Primeiro, como organizar os playbooks. O ideal é que os playbooks fique sob algum controle de versão - de preferência, o Git. Acostume-se a, sempre que alterar e testar um playbook, fazer o git commit, adicionando um comentário relevante sobre a mudança, para consultas futuras.

Inicialmente, vamos começar com um playbook que configurará uma máquina base. Essa máquina poderá, depois, ser customizada para ser um servidor PostgreSQL ou Tomcat, através de outro playbook. Então, vamos ver como criar e aplicar essa configuração.

O primeiro passo, é criar a estrutura de diretórios:

Mude para o diretório de playbooks:

cd ~/manager/books/

Vamos chamar essa configuração de Basica e criar a estrutura. Rode os seguintes comandos:

mkdir Basica
$ mkdir -p Basica/uploads
$ cd Basica


* Copie um arquivo /etc/sudoers de um S.O. identico ao quê você vai instalar para o diretório uploads.

O diretório Basica/uploads, agora, deverá conter o arquivo sudoers copiado.

Edite esse arquivo, com o editor de sua preferência (vim uploads/sudoers) e adicione a seguinte linha no final do arquivo:

operador   ALL=(ALL) NOPASSWD:ALL

Agora, vamos criar o playbook que vai enviar esse arquivo para o servidor, com as permissões corretas. Agora, edite o arquivo Basica.yml e adicione o seguinte conteúdo:

---
- hosts: all
  user: operador
  sudo: yes
  tasks:
  - name: Ativando o sudo sem senha
    action: copy src=./uploads/sudoers dest=/etc/sudoers owner=root group=root mode=0440

  - name: (A) Remove o sources.list original
    action: shell rm -f /etc/apt/sources.list

  - name: (B) Baixando o sources.list
    action: get_url url=http://172.25.137.131/sources/sources12.04.list dest=/etc/apt/sources.list owner=root group=root mode=0644

  - name: Atualizando o cache do apt
    action: apt update_cache=yes

  - name: Atualizando o sistema
    action: apt upgrade=full

  - name: Criando o locale pt_BR.UTF-8
    action: shell locale-gen pt_BR.UTF-8

  - name: Atualizando todos os locales
    action: shell locale-gen

  - name: Instala o DKMS
    action: apt name=dkms state=latest

  - name: Instalando o Build-essential
    action: apt name=build-essential state=latest

  - name: Mudando o scheduler de disco default para NOOP
    action: lineinfile dest=/etc/default/grub regexp='^GRUB_CMDLINE_LINUX_DEFAULT=' line=GRUB_CMDLINE_LINUX_DEFAULT\=\"elevator\=noop\"

  - name: Mudando o scheduler de disco para NOOP
    action: lineinfile dest=/etc/default/grub regexp='^GRUB_CMDLINE_LINUX=' line=GRUB_CMDLINE_LINUX\=\"elevator\=noop\"

  - name: Atualizando o Grub
    action: shell sudo update-grub

  - name: Limpa o cache do Apt
    action: shell sudo apt-get clean all

  - name: Reiniciando o servidor
    action: command reboot

O playbook acima é, praticamente, autoexplicativo. O mais notável é que ele altera arquivos de configuração do sistema para a opção desejada (os módulos lineinfile).

Obs.: as ações (A) e (B) só são necessárias, se você usa um sources.list customizado. Senão, retire-as do playbook.

Para executar esse playbook:

ansible-playbook --ask-sudo-pass Basica.yml

A razão da opção --ask-sudo-pass é que, nesse momento, o S.O. ainda está pedindo senha para fazer sudo su -. Ele executará um pouco e falhará, porque está esperando o prompt de sudo. Mas na segunda vez, execute-o assim:

ansible-playbook Basica.yml

Depois do playbook ser executado, ele não mais pedirá senha para comandos administrativos.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação / Configuração inicial
   3. Módulo / Playbooks
   4. ansible_hosts / arquivo Ansible Host
Outros artigos deste autor

Monitorando Banco de Dados Postgres com ZABBIX

Ansible - Instalação em massa Agent Zabbix

Leitura recomendada

Como configurar o Minicom para roteadores cisco no Fedora

Pebrot: Um cliente MSN (modo texto) muito eficiente

Instalação do Software de Monitoramento Zabbix

LFTP - Sophisticated File Transfer Program

OpenMPI - Instalação de uma aplicação paralela

  
Comentários
[1] Comentário enviado por eduinfo10 em 24/02/2014 - 09:05h

Bom dia amigo,

Artigo bem completo, mas não ficou claro tudo que este software faz. Podia ter tirado uns prints e explicado melhor, não ?

[2] Comentário enviado por danniel-lara em 24/02/2014 - 11:02h

ele é similar ao puppet ?

[3] Comentário enviado por renato473 em 24/02/2014 - 22:22h


[2] Comentário enviado por danniel-lara em 24/02/2014 - 11:02h:

ele é similar ao puppet ?


Sim e similar , somente via comando a ferramenta e livre , agora com a dashboard web ela ja se torna paga a vantagem e que pode utilizar python e shell script entre outras linguagem , mais sempre obedecendo a documentação.

[4] Comentário enviado por renato473 em 24/02/2014 - 22:26h


[1] Comentário enviado por eduinfo10 em 24/02/2014 - 09:05h:

Bom dia amigo,

Artigo bem completo, mas não ficou claro tudo que este software faz. Podia ter tirado uns prints e explicado melhor, não ?


Vamos dizer que vc tenha que alterar em 200 servidores as senhas de acesso de root e levasse cerca de 7 minutos para fazer o procedimento de loga, alterar a senha e deslogar em 200 servidores não seria algo chato e demorado e ainda com princípios de erro ? , e que tal utilizar uma forma que ira levar menos tempos e será mais eficaz ? , não cheguei a tirar print pois onde trabalho cheguei a fazer os LAB'S , questão de print pode ver pela forma da documentação e feita pela própria ansible, ele funciona em modo terminal que e versão free mais que existe a versão web que e paga.

[5] Comentário enviado por luzfcb em 25/02/2014 - 12:41h

Renato, uma opção interessante que apareceu esses tempos, é o https://asciinema.org/
Basicamente um aplicativo escrito em Python que grava a execução de comandos no terminal.
Seria legal, você incluir no tutorial, talvez a gravação de tela do Ansible funcionando


Para instalar:

sudo easy_install asciinema

ou

sudo pip install --upgrade asciinema

Você pode obter o código fonte dele aqui:

https://github.com/sickill/asciinema

[6] Comentário enviado por renato473 em 25/02/2014 - 22:25h

Desconhecia esta ferramenta luzfcb, obrigado pela dica, talvez criei outro tutorial , sendo ansible na pratica, já contendo essa dica de qual nos passou.


[5] Comentário enviado por luzfcb em 25/02/2014 - 12:41h:

Renato, uma opção interessante que apareceu esses tempos, é o https://asciinema.org/
Basicamente um aplicativo escrito em Python que grava a execução de comandos no terminal.
Seria legal, você incluir no tutorial, talvez a gravação de tela do Ansible funcionando


Para instalar:

sudo easy_install asciinema

ou

sudo pip install --upgrade asciinema

Você pode obter o código fonte dele aqui:

https://github.com/sickill/asciinema



[7] Comentário enviado por diegoascanio em 28/02/2014 - 11:05h

bom artigo para o futuro do sysadmin

devops agora é o que há!

[8] Comentário enviado por Tacioandrade em 12/03/2014 - 01:07h

Muito interessante esse programa principalmente por ao contrário de seus "concorrentes" não precisa de um agente nas slaves, uma pena que por agora não vou poder implementar nada de novo no datacenter da empresa por o novo administrador ta dando uma de do contra para novidades (até mesmo para ambientes de homologação)....

[9] Comentário enviado por renato473 em 12/03/2014 - 01:12h

Olá Tacio andrade ,

Uma forma e demonstrar a ferramenta os pós e contra, dizer a ele que quanto tempo demora para subir um servidor e tipo mostrar como iria funcionar um plano de contenção se utilizasse ferramenta e procedimentos automatizados, onde trabalhei eu e equipe documentávamos tudo mesmo.

[10] Comentário enviado por Tacioandrade em 12/03/2014 - 01:19h


[9] Comentário enviado por renato473 em 12/03/2014 - 01:12h:

Olá Tacio andrade ,

Uma forma e demonstrar a ferramenta os pós e contra, dizer a ele que quanto tempo demora para subir um servidor e tipo mostrar como iria funcionar um plano de contenção se utilizasse ferramenta e procedimentos automatizados, onde trabalhei eu e equipe documentávamos tudo mesmo.


Pois é, no nosso caso o buraco é um pouco mais em baixo, principalmente por a maior parte dos servidores não serem de nossa incubência, nós só montamos as VMs e passamos para o setor, empresa, etc que requisitou. Porem já fiz a indicação para alguns amigos aqui agora que mostraram muito interesse e pretendo usar em empresas onde presto consultoria também, uma pena que no ambiente que mais ganharia por enquanto pelo menos não rola.

[11] Comentário enviado por davirussi em 22/08/2014 - 13:11h

Pergunta, por acaso tem como automatizar instalação de impressora? Eu gostaria de automatizar a sintalação do hp-setup mas durante a instalação o script faz multiplas perguntas. Teria como automatizar isso pelo ansible? Obrigado

[12] Comentário enviado por renato473 em 22/08/2014 - 13:25h

Sim, e possível realizar isto , mais será necessário alterar seu script , pois no shell script podemos confirmar.

usando -y ou -n.


[11] Comentário enviado por davirussi em 22/08/2014 - 13:11h:

Pergunta, por acaso tem como automatizar instalação de impressora? Eu gostaria de automatizar a sintalação do hp-setup mas durante a instalação o script faz multiplas perguntas. Teria como automatizar isso pelo ansible? Obrigado




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts