User Tools

Site Tools


wikiv1:ansible_module

Gerenciar Módulos no Ansible

Módulos ansible.builtin.apt_key/ansible.builtin.apt_repository/apt

docker.yaml
---
- hosts: local
  tasks:
   - name: Adiciona chave GPG para o repositório oficial do Docker
     ansible.builtin.apt_key:
       url: https://download.docker.com/linux/ubuntu/gpg
       state: present
     register: apt_key_add
   - name: Adiciona repositório do Docker
     when: apt_key_add is succeeded
     ansible.builtin.apt_repository:
       repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
       state: present
     register: add_repo_docker
   - name: Instala o Docker
     when: add_repo_docker is succeeded
     apt:
       name: docker-ce
       state: present
       update_cache: true
$ sudo ansible-playbook --syntax-check docker.yml
$ sudo ansible-playbook docker.yml

Módulos apt/copy/service

nginx.yaml
- hosts: balancer
  pre_tasks:
  - name: Instala dependências
    dnf:
      name: epel-release
      state: present
  tasks:
  - name: Instala servidor Nginx
    dnf:
       name: nginx
       state: present
    register: nginx_installed
    notify:
      - Start Nginx
  - name: Define o arquivo de configuracao do servidor Nginx
    when: nginx_installed is succeeded
    copy:
      src: /home/suporte/modulos/files/nginx/nginx.conf
      dest: /etc/nginx/nginx.conf
      owner: root
      group: root
      mode: 0644
    notify:
      - Restart Nginx
  post_tasks:
  - name: Testa a instalação
    uri:
      url: http://172.16.0.200

  handlers:
   - name: Start Nginx
     service: name=nginx state=started enabled=yes
   - name: Restart Nginx
     service: name=nginx state=restarted
  • pre_tasks: Tarefa de pré-requisitos de verificação, antes de realizar a tarefa principal.
  • post_tasks: Tarefa de pós-validação, após realizar a tarefa principal. Exemplo: Testar acesso ao servidor nginx.

Handlers

Handlers executará uma determinada ação quando uma tarefa termina com um estado alterado. Handlers são muito poderosos e úteis, uma vez que não são executados cada vez que eles são chamados. Em vez disso, a ação necessária pelo handler será executado apenas uma vez no fim do PlayBook.

$ sudo ansible-playbook --syntax-check nginx.yml
$ sudo ansible-playbook nginx.yml
  • Caso seja concluída a tarefa de instalar o pacote nginx, notifique (notify) o Handler Start Nginx;
  • Caso seja concluída a tarefa de configurar o arquivo nginx.conf, notifique (notify) o Handler Restart Nginx.

–start-at-task Permite começar a executar seu playbook a partir de uma tarefa específica, sendo muito útil para realizar depurações.

Como exemplo, vamos aplicar o playbook do nginx, iniciando pelo final, onde testamos o acesso a página:

$ sudo ansible-playbook nginx.yml --start-at-task="Testa a instalação"

–step Permite executar um playbook de modo interativo. Como exemplo vamos aplicar o playbook do nginx:

$ sudo ansible-playbook nginx.yml --ste

include_tasks Permite incluir uma coleção de playbooks em um único arquivo. O objetivo desse módulo é:

  • Incluir uma task de instalação de pacotes para suporte a PHP no Apache em Distribuições Ubuntu e Centos;
  • Incluir uma task para criar o arquivo index.php, e assim testar o suporte PHP em Distribuição Ubuntu e Centos;
  • Incluir handlers para reiniciar o serviço do Apache em Distribuição Ubuntu e Centos.

loop Permite executar uma tarefa várias vezes.

apache.yaml
---
- hosts: webservers
  tasks:
   - name: Inclui task de instalação do Apache
     include_tasks: 3.1-install-apache.yaml
   - name: Inclui task de configuração do Apache
     include_tasks: 3.2-configure-apache.yaml

  handlers:
    - name: Restart Apache
      when: ansible_os_family == "Debian"
      ansible.builtin.service:
        name: apache2
        state: restarted

    - name: Restart Httpd
      when: ansible_os_family == "RedHat"
      ansible.builtin.service:
        name: httpd
        state: restarted
        enabled: yes
install-apache.yaml
---
- name: Instala pacotes para suporte a PHP no Apache em Distribuições Debian/Ubuntu
  when: ansible_os_family == "Debian"
  apt:
    name: "{{ item }}"
    state: present
    update_cache: true
  loop:
    - apache2
    - php7.4
    - php7.4-mysql
  register: php_packages_ubuntu_installed
  notify:
    - Restart Apache
- name: Instala pacotes para suporte a PHP no Apache em Distribuições RedHat/CentOS
  when: ansible_os_family == "RedHat"
  dnf:
    name: "{{ item }}"
    state: present
  loop:
    - epel-release
    - httpd
    - php
    - php-mysqlnd
  register: php_packages_centos_installed
  notify:
    - Restart Httpd
$ cat 3.2-configure-apache.yaml
---
- name: Remove o arquivo index.html
  when:
    - ansible_os_family == "Debian"
    - php_packages_ubuntu_installed is succeeded
  file:
    path: /var/www/html/index.html
    state: absent
- name: Define o arquivo de configuração para testar suporte PHP em Distribuições Debian/Ubuntu
  when:
    - ansible_os_family == "Debian"
    - php_packages_ubuntu_installed is succeeded
  copy:
    src: /home/suporte/modulos/files/web/index.php
    dest: /var/www/html/index.php
    owner: www-data
    group: www-data
    mode: 0644
- name: Define o arquivo de configuração para testar o suporte PHP em Distribuições RedHat/CentOS
  when:
    - ansible_os_family == "RedHat"
    - php_packages_centos_installed is succeeded
  copy:
    src: /home/suporte/modulos/files/web/index.php
    dest: /var/www/html/index.php
    owner: apache
    group: apache
    mode: 0644
$ sudo ansible-playbook --syntax-check apache.yml
$ sudo ansible-playbook apache.yml
wikiv1/ansible_module.txt · Last modified: by 127.0.0.1