Bom dia Vitor. Obrigado pela pronta resposta.
Consegui resolver o problema, inserindo o vpc_security_group_ids no aws_instance.
Porém, agora tenho outra questão :/
Quando inicio o playbook com Ansible, a task de instalação do Python3 e do virtualenv não finaliza. Entrando via ssh direto na máquina, eu atualizo com update/upgrad o apt e apt-get, mas quando tento instalar manualmente, os pacotes não são encontrados.
Segue abaixo meus códigos apenas no dev, pois do produção são os mesmos.
infra/variables.tf
# main.tf
variable "regiao_aws" {
type = string
}
# instancia.tf
variable "ami_id" {
type = string
}
variable "instancia" {
type = string
}
variable "chave" {
type = string
}
variable "tamanho_volume" {
type = number
}
variable "nome_maquina" {
type = string
}
# grupo_segur.tf
variable "nome_grupo_seg" {
type = string
}
variable "ipv4_ip" {
type = string
}
variable "ipv6_ip" {
type = string
}
infra/main.tf
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.16"
}
}
required_version = ">= 1.2.0"
}
provider "aws" {
region = var.regiao_aws
}
infra/instancia.tf
resource "aws_instance" "app_server" {
ami = var.ami_id
instance_type = var.instancia
key_name = var.chave
ebs_block_device {
device_name = "/dev/sda1"
volume_size = var.tamanho_volume
}
tags = {
Name = var.nome_maquina
}
vpc_security_group_ids = [ aws_security_group.geral.id]
}
resource "aws_key_pair" "chaveSSH" {
key_name = var.chave
public_key = file("${var.chave}.pub")
}
output "IP_publico" {
value = aws_instance.app_server.public_ip
}
infra/host.yml
[terraform-ansible]
44.210.243.110
infra/grupo-segur.tf
resource "aws_security_group" "geral" {
name = var.nome_grupo_seg
description = "Grupo de Seguranca"
ingress{
cidr_blocks = [ var.ipv4_ip ]
ipv6_cidr_blocks = [ var.ipv6_ip ]
from_port = 0
to_port = 0
protocol = "-1"
}
egress{
cidr_blocks = [ var.ipv4_ip ]
ipv6_cidr_blocks = [ var.ipv6_ip ]
from_port = 0
to_port = 0
protocol = "-1"
}
tags = {
Name = var.nome_grupo_seg
}
}
env/dev/playbook.yml
- hosts: terraform-ansible
tasks:
- name: Instalando o Python3, virtual env
apt:
pkg:
- python3
- virtualenv
update_cache: yes
become: yes # executar como sudo
- name: Instalando dependências com pip (Django e Django Rest)
pip:
virtualenv: /home/ubuntu/tcc/venv
name:
- django
- djangorestframework
- name: Verificando se o projeto já existe
stat:
path: /home/ubuntu/tcc/setup_3/settings.py
register: projeto
- name: Iniciando o projeto Django
shell: ". /home/ubuntu/tcc/venv/bin/activate; django-admin startproject setup_3 /home/ubuntu/tcc/"
when: not projeto.stat.exists
- name: Alterando hosting do settigns
lineinfile:
path: /home/ubuntu/tcc/setup_3/settings.py
regexp: "ALLOWED_HOSTS"
line: "ALLOWED_HOSTS = ['*']"
backrefs: yes
env/dev/main.tf
module "aws-dev" {
source = "../../infra"
# main.tf
regiao_aws = "us-east-1"
# instancia.tf
ami_id = "ami-08c40ec9ead489470"
instancia = "t2.micro"
chave = "iac-dev"
tamanho_volume = 10
nome_maquina = "maq-dev"
# grupo_segur.tf
nome_grupo_seg = "grupo-seg-dev"
ipv4_ip = "0.0.0.0/0"
ipv6_ip = "::/0"
}
output "IP" {
value = module.aws-dev.IP_publico
}
Obrigado.