Por: Adelmo da Silva – consultor de sistemas
- Criar usuário webadmin:
- Criar pastas /var/logs e /home/files-deploy:
- Atualizar o Ubuntu Server
- Instalar o Apache.
- Copiar ficheiros do site do diretório /home/site para a pasta padrão do Apache /var/www/html.
- Iniciar o Apache
- Habilitar o Apache
- Reiniciar o Apache.
Com base nessas etapas, o nosso playbook ficará assim:
—
– hosts: Webservers
become: yes
tasks:
– name: Criar usuário webadmin
user:
name: webadmin
state: present
shell: /bin/bash
home: /home/webadmin
create_home: yes
– name: Criar pastas /var/logs e /home/files-deploy
file:
path: “{{ item }}”
state: directory
owner: webadmin
group: webadmin
mode: 0755
with_items:
– /var/logs
– /home/files-deploy
– name: Atualizar o Ubuntu Server
apt:
update_cache: yes
upgrade: yes
– name: Instalar o Apache
apt:
name: apache2
state: present
– name: Copiar arquivos do site para a pasta padrão do Apache
copy:
src: /home/site/*
dest: /var/www/html
owner: webadmin
group: webadmin
– name: Iniciar o Apache
service:
name: apache2
state: started
enabled: yes
– name: Reiniciar o Apache
service:
name: apache2
state: restarted
Salvamos com o nome INSTALL-APACHE.YAML.
Todas as etapas se tornaram uma tarefa cada uma. Contudo, as tarefas são sequenciais e não possuem uma marcação ou tag para classificá-las. Vamos melhorar isso para que o nosso playbook se torne mais dinâmico.
TAGs – As etiquetas de tarefas do Ansible
TAGS em playbooks do Ansible são como etiquetas que você pode adicionar às tarefas, blocos, plays, roles e imports. Elas servem para controlar quais partes do playbook serão executadas separadamente quando você quiser.
Para usarmos as tags, devemos especificá-las no arquivo YAML do playbook. Para isso, devemos associar uma tag a uma ou mais tarefas, blocos inteiros de tarefas, um play, um role ou um import.
Da primeira vez executaríamos esta playbook desta forma:
ansible-playbook install-apache.yaml
Caso não ocorram erros, o playbook terminará e o site estará online.
Contudo, sabemos que nada dá certo na primeira tentativa.
Depois da implantação do site, recebemos uma nova demanda dos desenvolvedores para uma actualização dos ficheiros do site. Neste caso, precisamos:
- Copiar os novos ficheiros para a pasta do site;
- Reiniciar os serviços do Apache para validar a leitura dos novos ficheiros.
É nesse ponto onde entram as tags. Vamos alterar as nossas duas tarefas de Cópia e Restart de serviços para que recebam a tag “ficheirossite”, por exemplo.
– name: Copiar arquivos do site para a pasta padrão do Apache
copy:
src: /home/site/*
dest: /var/www/html
owner: webadmin
group: webadmin
tags:
– ficheirossite
– name: Reiniciar o Apache
service:
name: apache2
state: restarted
tags:
– ficheirossite
Neste ponto, estas duas tarefas estão etiquetadas com a TAG “ficheirossite”, indicando que ao executarmos o ansible-playbook referenciando esta tag, apenas as duas tarefas serão executadas. Mas, para isso vamos incrementar o nosso comando:
ansible-playbook install-apache.yaml –tags ficheirossite
Desta maneira, apenas as duas tarefas serão executadas dentro do playbook, evitando que todo o processo de instalação, actualização etc., sejam feitos, economizando tempo, recursos e banda de Internet. Eis a saída de um playbook com tags:
PLAY [Webservers] ***************************************************************************************************
TASK [Copiar arquivos do site para a pasta padrão do Apache] *********************************************************
changed: [server1]
changed: [server2]
TASK [Reiniciar o Apache] ********************************************************************************************
changed: [server1]
changed: [server2]
PLAY RECAP ***********************************************************************************************************
server1 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server2 : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Feito. Rodamos apenas as duas tarefas marcadas com a tag ficheirossite. Também podemos marcar cada tarefa com uma tag diferente. Por exemplo:
– name: Copiar arquivos do site para a pasta padrão do Apache
copy:
src: /home/site/*
dest: /var/www/html
owner: webadmin
group: webadmin
tags:
– ficheirossite
– name: Reiniciar o Apache
service:
name: apache2
state: restarted
tags:
– restartapache
Neste caso, deveremos rodar o comando:
ansible-playbook install-apache.yaml –tags ficheirossite,restartapache
Com isso, teremos a mesma saída que a de antes. Devemos colocar cada tag a ser executada separada por vírgula. Com isso, economizaremos um tempinho para saborear aquele cafezinho delicioso.
Até o próximo artigo, meus amigos.