Table of Contents
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
