>_Ansible – conceito, instalação e o primeiro projeto – 1.1

ansible

Ansible.

Ansible é uma ferramenta de automação de TI. Com o Ansible é possível configurar sistemas, implantar softwares, e orquestrar tarefas na área de infraestrutura de TI.

Vantagens que considero importante para Adotar o Ansible:
Curva de aprendizado é menor em relação a linguagem do orquestrador.
Não é necessário um Agent instalado no Cliente. A troca de informações é feita por OpemSSH através da senha ou chave pública.
Não existe preocupações com agentes (atualização, segurança e comunicação).
Repositório extensível. O Ansible possui um repositório próprio chamado Galax com mais de 400 módulos oficiais, além dos módulos de terceiros.
Configurações ordenada.

Idempotência: A idempotência é uma propriedade que, aplicada ao gerenciamento de configuração, garante que as operações terão o mesmo resultado independentemente do momento em que serão aplicadas.

Playbooks: Como são chamados os arquivos de gerenciamento de configuração. Nele é possível escrever os perfis de tarefas que serão executadas. Possui um padrão chamado YAML que torna simples a escrita e leitura dos playsbooks.

O que é YAML?
YAML é um formato de codificação de dados legíveis por humanos inspirado em linguagens como XML, C, Python e outras mais.

Agentless: Não é necessário a instalação de agentes nos servidores que serão gerenciados. O servidor com o Ansible realiza uma coleta das informações dos servidores de destino utilizando o OpenSSH.

Módulos: Os módulos são considerados as unidades de trabalho do Ansible. Cada módulo é auto-suficiente para executar uma tarefa. Existe uma grande quantidade de módulos integrados para realizar diversos tipos de tarefas.

Inventário: O inventário é um arquivo onde o Ansible controla grupos de hosts, e no playbook você pode referenciar determinado grupo que já está previamente configurado no inventário. Por exemplo, você pode criar um grupo chamado banco de dados e outro grupo chamado web, onde os hosts do grupo banco de dados serão configurados com um banco de dados, e os hosts do grupo web, serão configurados com uma aplicação web.

Repositório oficial.
https://galaxy.ansible.com/

E como posso instalar um módulo pelo repositório oficial?

# ansible-galaxy install username.rolename

Instalando o Ansible.

Passo 1 – Instalação.

Debian 8.

# apt-get install python-markupsafe python-markupsafe-dbg python3-markupsafe python3-markupsafe-dbg  python-pip python-pip python-dev sshpass ntp
python-simplejson python-yaml 

Centos 7.

# yum install python-setuptools python-setuptools-devel ntp
# easy_install pip
# pip install ansible

Passo 2 – Iniciando e habilitando o NTP (Debian e CentOS).

/etc/init.d/ntp start
# systemctl enable ntp

Instalando o Ansible via pip.

# pip install ansible

Para testar se realmente foi instalado o Ansible, execute o comando abaixo:

# ansible-playbook

Para atualizar o Ansible, basta acrescentar a parâmentro upgrade no pip.

# pip install --upgrade ansible

Um pouco do Ansible.

Inventory: Para executar qualquer comando com o Ansible, é necessário definir um inventory. Um inventory pode ser divido em grupos marcado com “[name]”.

Exemplo:

[master-node]
127.0.0.1

[mongodb-servers]
192.168.10.1

É possível também indicar a porta de conexão, caso não seja a porta padrão.

[databases]
192.168.10.1:4422
192.168.10.2:22

Passo 3 – Criando o diretório de configuração do Ansible.

# mkdir -p /etc/ansible/
# cd /etc/ansible/

Passo 4 – Verificando a versão do Ansible.

# ansible --version
ansible 1.9.4
  configured module search path = None

Passo 5 – Criando o primeiro inventory, contendo 2 hosts no grupo master-node.

# vim master-node

Primeiro forma:

[ ] -Aqui é informado o grupo, no meu exemplo será master-node.

[master-node]
#HOSTNAME - IP - CONEXÃO - USER - SENHA.
hostname1 ansible_ssh_host=192.168.96.140 ansible_connection=ssh ansible_ssh_user=user ansible_ssh_pass=senha
hostname2 ansible_ssh_host=192.168.96.141 ansible_connection=ssh ansible_ssh_user=user ansible_ssh_pass=senha

Segunda forma:
Caso já possua as chaves públicas trocadas , basta criar o Inventory da seguinte forma:

# vim master-node
[master-node]
192.168.96.140
192.168.96.141

Testando a conexão do Ansible com os Hosts atráves do ping.
Primeira forma: Informando a senha:

# ansible all -i master-node -m ping --ask-pass
SSH password: 
192.168.96.141 | success >> {
    "changed": false,
    "ping": "pong"
}

192.168.96.140 | success >> {
    "changed": false,
    "ping": "pong"
}

Segunda Forma: Sem informar a senha:

# ansible all -i master-node -m ping           
192.168.96.140 | success >> {
    "changed": false,
    "ping": "pong"
}

192.168.96.141 | success >> {
    "changed": false,
    "ping": "pong"
}

Passo 6 – Executando o comando date via Ansible.

# ansible all -i master-node -m shell -a 'date'
192.168.96.141 | success | rc=0 >>
Mon Dec  7 16:20:29 BRST 2015

192.168.96.140 | success | rc=0 >>
Mon Dec  7 16:20:29 BRST 2015

Passo 7 – Criando a primeira task.

name:  Nome dados ao módulo.
hosts: Informações sobre hosts.
shell: Informa ao módulo que será executado um comando via shell.
apt: Será acionado o comando apt para gerenciamento dos pacotes.

# vim tarefa.yml
- name: "Tarefa 1"
  hosts: master-node

  tasks:
  - name: "update"
    shell: apt-get update -y
  - name: "Pacote whois"
    apt: name=whois state=present

Executando a primeira task.

# ansible-playbook -i master-node tarefa.yml
PLAY [Tarefa 1] *************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.96.140]
ok: [192.168.96.141]

TASK: [update] **************************************************************** 
changed: [192.168.96.141]
changed: [192.168.96.140]

TASK: [Pacote whois] ********************************************************** 
changed: [192.168.96.140]
changed: [192.168.96.141]

PLAY RECAP ******************************************************************** 
192.168.96.140             : ok=3    changed=2    unreachable=0    failed=0   
192.168.96.141             : ok=3    changed=2    unreachable=0    failed=0   

Criando o primeiro projeto.

Orquestrando a instalação do Zabbix Agent 2.4.7 para o Debian e CentOS.

Passo 1 – Dentro do diretório /etc/ansible será criado o diretório zabbix. Dentro desse diretório será construído o projeto de instalação do Zabbix Agent 2.4.7.

# cd /etc/ansible
# mkdir zabbix

Passo 2 – Dentro do diretório zabbix serão criados 2 arquivos, sendo eles: hosts e site.yml.
No arquivo hosts será definido os grupos de hosts.
No arquivo site.yml será definido playbook do projeto inicial do zabbix.

# vim hosts

Dentro desse arquivo será criado o primeiro grupo, chamado zabbix_agent, contendo os hosts que pertencerá ao grupo zabbix_agent.

[zabbix_agent]
192.168.96.140
192.168.96.141

site.yml
hosts: Grupo de host que pertencem ao playbook.
roles: Hierarquia de organização dos playbooks.

# vim site.yml
- hosts: zabbix_agent
  roles:
   - zabbix_agent

Passo 3 – Executando o playbook.

# ansible-playbook -i hosts site.yml 
ERROR: cannot find role in /home/ansible/zabbix/roles/zabbix_agent or /home/ansible/zabbix/zabbix_agent or /etc/ansible/roles/zabbix_agent

Ops: Error!!!
Isso mesmo, como foi definido uma role (zabbix_agent), será preciso criar a estrutura da role com o comando ansible-galaxy.

# ansible-galaxy init zabbix_agent
- zabbix_agent was created successfully

Após a criação da estrutura da role, basta entra no diretório zabbix_agent e verificar a estrutura que foi criada automaticamente.

# ls
hosts  zabbix_agent  zabbix.yml
# cd zabbix_agent/

Agora vamos dar uma olhada no que foi criado.

zabbix_agent
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
└── vars
    └── main.yml

Roles – Estrutura de diretórios:

Defaults: Variáveis padrões para funções sem prioridade.
Files
: Arquivos necessários para o provisionamento.
Handlers: Task que responde a um evento (stop, start e etc).
Meta: Responsável pelas dependencias de outras roles.
Tasks: Tarefas a serem executadas.
Inventory: Informações sobre os grupos de hosts.
Templates: Arquivos necessários para o provisionamento.
Vars: Variáveis compartilhadas entre a Role.

Passo 4 – Verificando a lista de hosts com o comando ansible-playbook.

# ansible-playbook site.yml --list-hosts -i hosts
playbook: site.yml

  play #1 (zabbix): host count=2
    192.168.96.140
    192.168.96.141

Passo 5 – Definindo as variáveis do projeto dentro do vars/main.yml.
Estas variáveis serão utilizadas pela role zabbix_agent.

# vim vars/main.yml

zabbix_server: Endereco do servidor Zabbix Server, neste caso: zabbix.tgl.com.
Url: Link oficial para download do Zabbix 2.4.7.
tar_zabbix: Arquivo do Zabbix compactado.
dir_dest: Local onde será armazenado diretorio do Zabbix 2.4.7
dir_zabbix: Diretório dos arquivos do Zabbix 2.4.7

---
# vars file for zabbix_agent
zabbix_server: 'zabbix.tgl.com.br'
url: 'http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.7/zabbix-2.4.7.tar.gz'
tar_zabbix: 'zabbix-2.4.7.tar.gz'
dir_dest: '/opt'
dir_zabbix: 'zabbix-2.4.7'

Passo 6 – Criando a primeira task.
Nesta primeira task, será feito o download do Zabbix 2.4.7 do site oficial do Zabbix.

Explicando:

– name: Nome dado a task.
get_url: Algo como o wget.
tags: Através de um tag é possível executar o playbook informando a task que deseja que seja executada.

Exemplo:

ansible-playbook -i hosts site.yml  --tags download_zabbix_2_4_7

Rumbora!

# vim zabbix_agent/tasks/download-zabbix.yml
---
- name: "Download do Zabbix Agent"
  get_url: url={{url}} dest={{dir_dest}}
  # changed_when: true
  tags: download_zabbix_2_4_7

Módulo changd_when.

changd_when – ( True notifica a mudança – false nao notifica a mudança )
changed_when: true/false

Passo 7 -Incluindo a task download-zabbix.yml na task default zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml

Passo 8 – Enfim, vamos ao que interessa.
Através  do comando ansible_playbook -i host site.yml, será executado a primeira task. O resultado da saída dessa task será algo parecido como o exemplo abaixo:

# ansible-playbook -i hosts site.yml 

Saída do comando:

PLAY [zabbix] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.96.140]
ok: [192.168.96.141]

TASK: [zabbix_agent | Download do Zabbix Agent] ******************************* 
changed: [192.168.96.140]
changed: [192.168.96.141]

PLAY RECAP ******************************************************************** 
192.168.96.140             : ok=2    changed=1    unreachable=0    failed=0   
192.168.96.141             : ok=2    changed=1    unreachable=0    failed=0   


Criando as task apt e yum.

Estas duas novas tasks terá como função baixar os pacotes necessários para Zabbix Agent.

Passo 9 – Criando a task apt.yml

# vim zabbix_agent/tasks/apt.yml

– name: “Breve descrição da task”
apt: Será acionado o módulo apt-get
name= {{item}} Itens que estão sendo relacionados no dicionário (whith_item).
Em state temos as seguintes opções:
lasted: Instala a versão mais recente do pacote
present: Instala o pacote
absent: Remove o pacote

Mais informações:
http://docs.ansible.com/ansible/yum_module.html
http://docs.ansible.com/ansible/apt_module.html

---
- name: "Instalacao dos pacotes necessarios para o Zabbix Agent - APT"
  apt: name={{item}} state=present
  with_items:
   - wget
   - tar
   - make
   - gcc
   - chkconfig
  tags: apt

Passo 10 – Incluindo a task apt.yml na task default zabbix_agent/tasks/main.yml

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'

Passo 11 – Executando a task apt.

# ansible-playbook -i hosts site.yml  --tags apt

PLAY [zabbix_agent] *********************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.96.141]
ok: [192.168.96.140]

TASK: [zabbix_agent | Instalacao dos pacotes necessarios para o Zabbix Agent - APT] *** 
changed: [192.168.96.140] => (item=wget,tar,make,gcc,chkconfig)
changed: [192.168.96.141] => (item=wget,tar,make,gcc,chkconfig)

PLAY RECAP ******************************************************************** 
192.168.96.140             : ok=2    changed=1    unreachable=0    failed=0   
192.168.96.141             : ok=2    changed=1    unreachable=0    failed=0   

Passo 12 – Criando a task yum.yml.

---
- name: "Instalacao dos pacotes necessarios para o Zabbix Agent - YUM"
  yum: name={{item}} state=latest
  with_items:
   - wget
   - tar
   - make
   - gcc
   - chkconfig
  tags: yum

Adicionando a task yum.yml na task default zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'

Executando a task.

# ansible-playbook -i hosts site.yml  --tags yum

PLAY [zabbix_agent] *********************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.96.141]
ok: [192.168.96.140]

TASK: [zabbix_agent | Instalacao dos pacotes necessarios para o Zabbix Agent - YUM] *** 
skipping: [192.168.96.140]
skipping: [192.168.96.141]

PLAY RECAP ******************************************************************** 
192.168.96.140             : ok=1    changed=0    unreachable=0    failed=0   
192.168.96.141             : ok=1    changed=0    unreachable=0    failed=0   

Ops!
Perceba que o task yum.yml retornou um skipping. Isso ocorreu porque não possuo nenhum CentOS no meu grupo de host.

Passo 13 – Criando a task untar.yml.

# vim zabbix_agent/tasks/untar.yml

Esta task será responsável por extrair o arquivo zabbix-2.4.7.tar.gz dentro do diretório /opt.

---
- name: "Extraindo o arquivo zabbix"
  unarchive: src={{dir_dest}}/{{tar_zabbix}}  dest={{dir_dest}}
  tags: untar

Após a criação da task untar.yml, o próximo passo é incluí-la na task default no arquivo zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml

Incluindo na task default.

---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml

Executando a task untar.
Obs: Caso queira executar o playbook por completo, basta remover a tag untar.

# ansible-playbook -i hosts site.yml  --tags untar

ou

# ansible-playbook -i hosts site.yml 

Passo 14 – Criando a task responsável pela criação do usuário zabbix.

# vim zabbix_agent/tasks/user.yml
---
- name: "Criando o usuario zabbix"
  action: user name=zabbix shell=/bin/nologin home=/home/zabbix/
  tags: user

Incluíndo a taks user.yml na task default zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml

Passo 15 – Criando a task reponsável pela compilação do Zabbix Agent.

# vim zabbix_agent/tasks/compilacao.yml
---
- name: "Compilando o Zabbix Agent 2.4.5"
  command: 'chdir={{dir_dest}}/{{dir_zabbix}} {{item}}'
  with_items:
   - ./configure --enable-agent
   - make
   - make install
  tags: compilacao

Adicionando a task compilacao.yml na task default zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml
- include: compilacao.yml

Passo 16 – Criando a task responsável pelo permissionamento.
Esta task terá como função ajustar o permissionamento dos diretórios e arquivos do Zabbix Agent.

# vim zabbix_agent/tasks/permissionamento.yml
---
- name: "Ajustando o permissionamento dos arquivos do Zabbix Agent"
  file: path=/usr/local/etc/zabbix_agentd.conf.d      owner=zabbix group=zabbix mode=u+rw,g=rw,o=r recurse=yes
  file: path=/usr/local/etc/zabbix_agent.conf.d       owner=zabbix group=zabbix mode=u+rw,g=rw,o=r recurse=yes
  file: path=/usr/local/etc/zabbix_agent.conf         owner=zabbix group=zabbix mode=u+rw,go=r
  file: path=/usr/local/etc/zabbix_agentd.conf        owner=zabbix group=zabbix mode=u+rw,go=r
  tags: permissionamento

Adicionando a task permissionamento.yml na task default zabbix_agent/tasks/main.yml.

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml
- include: compilacao.yml
- include: permissionamento.yml

Passo 17 – Criando a task que irá ajustar o conf zabbix_agentd.conf

# vim zabbix_agent/tasks/conf.yml
---
- name: "Ajustando o zabbix_agentd.conf"
  lineinfile:
   dest: /usr/local/etc/zabbix_agentd.conf
   regexp: "{{ item.regexp }}"
   line: "{{ item.line }}"
  with_items:
  - { regexp: '# LogFileSize=1' , line: 'LogFileSize=1024' }
  - { regexp: '# DebugLevel=3'  , line: 'DebugLevel=3' }
  - { regexp: 'Server=127.0.0.1', line: 'Server={{zabbix_server}}' }
  - { regexp: 'ServerActive=127.0.0.1' , line: 'ServerActive={{zabbix_server}}' }
  - { regexp: 'Hostname=Zabbix server' , line: 'Hostname={{ansible_hostname}}' }
  tags: conf

Adicionando a task conf.yml na task default  zabbix_agent/tasks/main.yml. 

# vim zabbix_agent/tasks/main.yml
---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml
- include: compilacao.yml
- include: permissionamento.yml
- include: conf.yml

Importante:

Antes de criar a task debian.yml, será preciso instalar seguinte módulo: blockinfile.
Este módulo tem como função manipular arquivos. Com ele é possível alterar ou incluir palavras no início ou fim do arquivo.

Download do módulo.

# ansible-galaxy install yaegashi.blockinfile

Ajustando o site.yml. para carregar o módulo (blockinfile) que foi instalado.

# vim site.yml
- hosts: zabbix_agent
  roles:
  - yaegashi.blockinfile
  - zabbix_agent

https://github.com/yaegashi/ansible-role-blockinfile/issues/11
http://docs.ansible.com/ansible/blockinfile_module.html

Handlers:

Como já mencionado, os módulos são escritos para serem “idempotentes“, podendo serem retransmitidos quando ocorrer uma mudança. Por padrão um playbooks reconhece isso como um evento básico, que pode ser usando para responder uma mudança. Essas ações de ‘Notify‘ são acionados no final de cada bloco de cada task, e só será acionado uma vez, mesmo que notificado por várias tarefas diferentes.

Aqui está um exemplo de pare reiniciar dois serviços, quando houver uma alteração no arquivo.

Exemplo:

task:

---
- name: template configuration file
  template: src=template.j2 dest=/etc/foo.conf
  notify:
     - restart memcached
     - restart apache

handlers:

- handlers:
    - name: restart memcached
      service: name=memcached state=restarted
    - name: restart apache
      service: name=apache state=restarted

Passo 18 – Criando a task que irá ajustar o script de inicialização do zabbix-agent, e a chamada do evento de inicialização.
Obs: Debian.

# vim zabbix_agent/tasks/debian.yml 
---
- name: "Iniciando o Zabbix Agent"
  set_fact: zabbix_agent_service_name=zabbix-agent

- name: "Criando o script de inicializacao"
  template: src={{dir_dest}}/{{dir_zabbix}}/misc/init.d/debian/zabbix-agent dest=/etc/init.d/zabbix-agent owner=root group=root mode=0755

- name: "Ajustando o script de inicializacao zabbix-agent"
  blockinfile:
   dest: /etc/init.d/zabbix-agent
   insertbefore: "NAME=zabbix_agentd"
   content: |
    ### BEGIN INIT INFO
    # Provides:          zabbix-agent
    # Required-Start:    $local_fs $remote_fs
    # Required-Stop:
    # X-Start-Before:    rmnologin
    # Default-Start:     2 3 4 5
    # Default-Stop:
    # Short-Description: Provide limited super user privileges to specific users
    # Description: Provide limited super user privileges to specific users. 
    ### END INIT INFO

- name: "start"
  service:
   name: "{{zabbix_agent_service_name}}"
   state: running
   enabled: yes
  notify: restart zabbix agent

Criando o evento que será responsável por iniciar o zabbix_agent. Por boas práticas, este evento deverá ser criado no diretório handlers na task default main.yml.

# vim zabbix_agent/handlers/main.yml

– name: Nome dado ao evento.
service: Serviço que será iniciado, perceba que estou usando uma variável chamada:  zabbix_agent_service_name
zabbix_agent_service_name: Está variável foi definida na task debian.yml no módulo set_fact.
Obs:
Também será definida na task centos.yml que será criada mais abaixo.

---
# handlers file for zabbix_agent
- name: restart zabbix agent
  service: name={{zabbix_agent_service_name}} state=restarted

Adicionando a task debian.yml na task default  zabbix_agent/tasks/main.yml.
Pbs: Perceba que a tag start_debian foi adicionada na task default main.yml.

# vim zabbix_agent/tasks/main.yml

---
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml
- include: compilacao.yml
- include: permissionamento.yml
- include: conf.yml
- include: debian.yml
  when: ansible_os_family == 'Debian'
  tags: start_debian

Passo 19 – Criando a task que irá ajustar o script de inicialização do zabbix-agent, e a chamada do evento de inicialização.
Obs: CentOS.

# vim zabbix_agent/tasks/centos.yml
---
- name: "Iniciando o Zabbix Agent"
  set_fact: zabbix_agent_service_name=zabbix-agent


- name: "Criando o script de inicializacao"
  template: src={{dir_dest}}/{{dir_zabbix}}/misc/init.d/fedora/core/zabbix_agentd dest=/etc/init.d/zabbix-agent owner=root group=root mode=0755

- name: "start"
  service:
   name: "{{zabbix_agent_service_name}}"
   state: running
   enabled: yes
  notify: restart zabbix agent

Adicionando a task centos.yml na task default zabbix_agent/tasks/main.yml.
Pbs: Perceba que a tag start_centos foi adicionada na task default main.yml.

--
# tasks file for zabbix_agent
- include: download-zabbix.yml
- include: apt.yml
  when: ansible_os_family == 'Debian'
- include: yum.yml
  when: ansible_os_family == 'RedHat'
- include: untar.yml
- include: user.yml
- include: compilacao.yml
- include: permissionamento.yml
- include: conf.yml
- include: debian.yml
  when: ansible_os_family == 'Debian'
  tags: start_debian
- include: centos.yml
  when: ansible_os_family == 'RedHat'
  tags: start_centos

Passo 20 – Por fim, basta executar o playbook.

# ansible-playbook -i hosts site.yml

GitHub do projeto:
https://github.com/vandocouto/ansible-zabbix-2-4-7

>_Ansible – conceito, instalação e o primeiro projeto – 1.1
Tagged on:

One thought on “>_Ansible – conceito, instalação e o primeiro projeto – 1.1

Deixe uma resposta

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

%d blogueiros gostam disto: