Ansible instalando Puppet

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×

Existem alguns artigos na internet que comparam Ansible e Puppet como concorrentes e que Ansible substitui o Puppet e assim por diante, mas na minha opinião as ferramentas se complementam, no meu dia a dia eu adotei a seguinte filosofia:

Deploys -> Ansible

Gerênciamento de Configuração -> Puppet

Então esse post tem como objetivo mostrar como o Ansible pode ser utilizado para fazer a instalação do Puppet em uma máquina que acabou de ser criada. Afinal sabe-se que o puppet para funcionar é necessário que seja feita a instalação de um agent e sincronizado com o servidor master e esse trabalho teóricamente é manual, mas podemos automatizar esse processo utilizando o Ansible.

A única coisa que o Ansible precisa para executar em uma máquina é o acesso via SSH, então vamos ver como isso funciona.

No exemplo abaixo vou criar um Playbook, que vai instalar o servidor do Puppet Master. Um Playbook é um arquivo com todas as instruções para a execução de uma determinada tarefa, uma boa prática é criar Roles ao invés de Playbooks, pois as Roles além de serem mais organizadas tornam os seus scripts do Ansible reutilizáveis, mas isso é assunto pra outro post.

Abaixo segue a playbook para instalar o servidor puppet master:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---
- hosts: puppet
  user: root
  vars:
    master_name: puppetmaster
    master_name_domain: puppetmaster.responsus.com.br
  tasks:
  - name: Configuring hostname
    hostname: name=puppetmaster.responsus.com.br
  - name: Installing puppet
    apt: name=puppet state=latest
  - name: Deleting certificates
    file: path=/var/lib/puppet/ssl state=absent
  - name: Copying template file
    template: src=puppet.conf.tpl dest=/etc/puppet/puppet.conf
  - name: Generating Cert
    shell: puppet master --verbose

Uma playbook do ansible é bem simples, é basicamente um arquivo no formato yaml, com palavras chaves específicas do ansible.

Agora temos também o arquivo hosts que fica da seguinte maneira:

1
2
[puppet]
192.168.0.112

Um terceiro arquivo que temos que criar também é o arquivo de template, pois é necessário configurar o puppet.conf com o hostname da máquina em que ele será instalado.

O arquivo de template ficará da seguinte maneira:

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
prerun_command=/etc/puppet/etckeeper-commit-pre
postrun_commnad=/etc/puppet/etckeeper-commit-post
certname = {{master_name}}
dns_alt_name = {{master_name}}, {{master_name_domain}}

[master]
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_file_header = SSL_CLIENT_VERIFY

Note que em certname e dns_alt_name são as variáveis que estão dentro da seção vars no nosso playbook.

Não esqueça de que é necessário fazer a liberação de acesso através de chaves, para copiar a chave da sua máquina local para o servidor em que será instalado o puppet você pode executar a seguinte instrução:

ssh-keygen
ssh-copy-id root@192.168.0.112

O primeiro comando vai gerar uma nova chave que será armazenada em ~/.ssh/id_rsa e o segundo comando vai copiar esse chave para o outro servidor.

Agora para executar a playbook deve ser executado o seguinte comando:

alisson@alisson-laptop:~/Ansible$ ansible-playbook puppetmaster.yml  -i hosts

A saída do comando deverá ser parecida com essa:

 
PLAY [puppet] ******************************************************************
 
TASK [setup] *******************************************************************
ok: [192.168.0.112]
 
TASK [Configuring hostname] ****************************************************
ok: [192.168.0.112]
 
TASK [Installing puppet] *******************************************************
changed: [192.168.0.112]
 
TASK [Deleting certificates] ***************************************************
changed: [192.168.0.112]
 
TASK [Copying template file] ***************************************************
ok: [192.168.0.112]
 
TASK [Generating Cert] *********************************************************
changed: [192.168.0.112]
 
PLAY RECAP *********************************************************************
192.168.0.112              : ok=6    changed=3    unreachable=0    failed=0

Caso você queira validar se o seu servidor foi instalado com sucesso basta logar na máquina e executar o seguinte comando:

root@puppetmaster:~# puppet cert list --all
+ "puppetmaster.responsus.com.br" (SHA256) 8C:CA:78:2D:55:2F:94:84:EF:08:E5:B5:CC:FD:1F:4A:62:EF:E2:21:45:57:5F:7D:56:CC:58:7C:49:4A:3A:45 (alt names: "DNS:puppet", "DNS:puppet.responsus.com.br", "DNS:puppetmaster.responsus.com.br")

Valeu! \o

0 Flares Twitter 0 Facebook 0 Filament.io 0 Flares ×
12 meses ago

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *