23 de Fevereiro de 2024 - @Walmir Neto
Ontem mostrei como instalar e como funciona o Ansible ([Usando Ansible para instalar dependências no seu server](https://walmir.notion.site/Usando-Ansible-para-instalar-depend-ncias-no-seu-server-98c77645352e42e188b23bdb4517d008)), hoje vou aplicar no projeto ‣ onde faço meus testes… Sem delongas, hoje o passo a passo vai bem rapidão
Primeiro arquivo é o ansible/ansible.cfg
que serve para setar o arquivo de hosts
[defaults]
inventory = hosts
Como a gente disse que o nosso invetory
é o arquivo hosts
que nos dirá quais os servidores, só que vamos criar-los usando tofu
para isso vamos usar local_file
resource
Para isso precisamos criar o tofu/local_files.tf
resource "local_file" "ansible_inventory" {
filename = "../ansible/hosts"
content = templatefile("templates/ansible/hosts.tftpl", {
webservers = [aws_instance.demo_instance.public_ip]
})
}
Na linha 3 temos arquivo de template templates/ansible/hosts.tftpl
que também precisamos criar-lo
[webserver]
%{ for webserver in webservers ~}
${webserver}
%{ endfor ~}
[all]
[all:vars]
ansible_user=ubuntu
E já que o ansible/hosts
está sendo gerado e de bom tom colocar-lo no .gitignore
# .gitignore
!/coverage/.keep
+
+# Ansible
+#
+/ansible/hosts
Agora é só roda:
cd tofu
tofu validate # to validate if code is valid
tofu plan # to check if everything is ok
tofu apply -auto-approve # DON'T USE `-auto-approve` if you're not sure
Próximos passos é criar os comando que o ansible vai rodar na(s) máquina(s). O primeiro é o ansible/roles/update-system/tasks/main.yaml
que atualiza o ubuntu
# sudo apt update -y
- name: Update apt packages
apt:
update_cache: yes
force_apt_get: yes
cache_valid_time: 3600
tags:
- system
# sudo apt upgrade -y
- name: Upgrade all packages on servers
apt:
upgrade: dist
force_apt_get: yes
cache_valid_time: 3600
tags:
- system
# sudo apt autoclean
- name: Remove useless apt packages from the cache
apt:
autoclean: yes
tags:
- system
# sudo apt autoremove
- name: Remove dependencies that are no longer required
apt:
autoremove: yes
tags:
- system
O próximo é o de instalar o docker ansible/roles/install-docker/tasks/main.yaml
- name: Set up the repository
apt:
name:
- ca-certificates
- curl
- gnupg
- lsb-release
state: present
update_cache: yes
- name: Install apt key
apt_key:
url: <https://download.docker.com/linux/ubuntu/gpg>
state: present
- name: Add Docker Repository
apt_repository:
repo: deb <https://download.docker.com/linux/ubuntu> focal stable
state: present
- name: Install Docker Engine
apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
state: present
- name: install docker-compose
apt:
name: docker-compose
state: present