Guilherme Silva 058cc047ef Carga inicial
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-18 11:50:34 +00:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00
2026-06-19 11:06:23 -03:00

Documentacao repositório iac-sei

Introducao geral

Este conjunto de arquivos Terraform provisiona uma arquitetura OCI para o ambiente SEI. A stack cria recursos de computacao, rede, balanceamento de carga, armazenamento compartilhado, logging, backup, WAF e seguranca por Vault. O desenho geral usa uma rede em camadas: um load balancer publico recebe o trafego HTTP/HTTPS/SOLR, encaminha as requisicoes para instancias privadas SEI, SIP e SOLR, e os servidores de aplicacao acessam servicos internos como banco MySQL, Memcached, JodServer e File Storage.

As instancias sao criadas com Oracle Linux 9, sem IP publico, distribuidas entre fault domains e inicializadas por arquivos cloud-init especificos por papel. O codigo tambem gera uma chave SSH master e uma senha administrativa MySQL, armazenando esses segredos no OCI Vault protegido por chave KMS criada no proprio Terraform.

Visao geral dos componentes

Componente Arquivos principais O que e provisionado
Provider e data sources providers.tf, data_sources.tf Provider OCI, imagem Oracle Linux 9 mais recente, availability domain, fault domains e configuracoes MySQL.
Compute server_instances_*.tf Instancias SEI, SIP, SOLR, Memcached e JodServer.
Rede e NSGs nsg-*.tf Network Security Groups e regras para load balancer, aplicacao, SOLR, Memcached, JodServer e banco.
Load balancer sei_public_load_balancer.tf Load balancer publico flexivel, backend sets, backends, listeners, hostnames e logs.
File Storage fss_server.tf, variables_sei_nfs.tf File system SEI, mount target, export set, export /dados e snapshot policy opcional.
Vault e senhas vault.tf, generation_keys.tf Vault, KMS key, chave SSH master, senha MySQL e secrets no OCI Vault.
Backup boot_volume_backups.tf Politica opcional de backup e volume group com boot volumes das instancias.
WAF sei_waf.tf Politica WAF opcional, Web App Firewall vinculado ao load balancer e log WAF.
Logging logging_group.tf, sei_public_load_balancer.tf, sei_waf.tf Grupo de logs e logs de acesso/erro do load balancer e do WAF.

Armazenamento de senhas e segredos no Vault

O codigo evidencia uma estrategia de centralizacao de segredos no OCI Vault:

Recurso Arquivo Funcao
oci_kms_vault.vault-sei vault.tf Cria o Vault sei-vault-${environment} no compartimento de seguranca.
oci_kms_key.sei-vault-keys vault.tf Cria uma chave KMS AES de 32 bytes usada para criptografar os secrets.
tls_private_key.master_ssh_key generation_keys.tf Gera uma chave SSH RSA 4096 bits usada como chave autorizada das instancias.
random_password.password_mysql_admin generation_keys.tf Gera senha MySQL de 16 caracteres com numero, maiuscula, minuscula e caractere especial.
oci_vault_secret.sei_oci_vault_secret_private_key generation_keys.tf Armazena a chave SSH privada como secret master-private-ssh-key.
oci_vault_secret.sei_oci_vault_secret_pulbic_key generation_keys.tf Armazena a chave SSH publica como secret master-public-ssh-key.
oci_vault_secret.sei_oci_vault_secret_mysql generation_keys.tf Armazena a senha MySQL gerada como secret master-mysql-password.

Todos os secrets gravados em oci_vault_secret usam content_type = "BASE64" e o conteudo e enviado por base64encode(...). A chave SSH publica tambem e usada diretamente no metadata.ssh_authorized_keys das instancias de compute.

Ponto de atencao: embora os secrets sejam armazenados no OCI Vault, valores gerados por recursos Terraform podem ficar registrados no Terraform state. O state deve ser protegido com controle de acesso, criptografia e backend adequado.

Arquivos Terraform

Arquivo Descricao
providers.tf Configura o provider OCI com tenancy, usuario, fingerprint, chave privada e regiao.
variables.tf Declara as variaveis principais da stack.
variables_sei_nfs.tf Declara variaveis especificas de NFS/FSS.
terraform.tfvars Define valores de exemplo/ambiente para as variaveis.
data_sources.tf Consulta imagem Oracle Linux 9, ADs, FDs e configuracoes MySQL.
server_instances_sei.tf Cria instancias SEI com cloud-init-sei.yaml.
server_instances_sip.tf Cria instancias SIP com cloud-init-sip.yaml.
server_instances_solr.tf Cria instancias SOLR com disco de boot customizado e cloud-init-solr.yaml.
server_instances_memcached.tf Cria instancias Memcached com cloud-init-memcached.yaml.
server_instances_jod.tf Cria instancias JodServer com cloud-init-jod.yaml.
sei_public_load_balancer.tf Cria load balancer publico, backends, listeners, hostnames e logs.
nsg-sei-lbs-nsg.tf Cria NSG do load balancer publico.
nsg-sei-servers-nsg.tf Cria NSG dos servidores SEI.
nsg-sip-servers-nsg.tf Cria NSG dos servidores SIP.
nsg-solr-servers-nsg.tf Cria NSG dos servidores SOLR.
nsg-memcached-servers-nsg.tf Cria NSG dos servidores Memcached.
nsg-jod-servers-nsg.tf Cria NSG dos servidores JodServer.
nsg-database-nsg.tf Cria NSG de banco de dados.
fss_server.tf Cria File Storage, mount target, export e snapshot policy opcional.
vault.tf Cria Vault e chave KMS.
generation_keys.tf Gera chave SSH e senha MySQL, salvando os valores em secrets no Vault.
boot_volume_backups.tf Cria politica opcional de backup dos boot volumes.
logging_group.tf Cria grupo de logs.
sei_waf.tf Cria WAF opcional e log de WAF.

Variaveis

Autenticacao e provider

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
tenancy_ocid Nao declarado "" OCID da tenancy OCI. Usado pelo provider e pelos data sources de identity.
user_ocid Nao declarado "" OCID do usuario OCI usado para autenticar o provider.
fingerprint Nao declarado "" Fingerprint da API key OCI.
private_key_path Nao declarado /home/opc/.oci/terraform_key.pem Caminho local da chave privada da API OCI.
region Nao declarado sa-saopaulo-1 Regiao OCI onde os recursos serao criados.

Ambiente

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
environment string hml Identificador do ambiente. E usado em nomes de instancias, vault, FSS, backup, WAF, logs e load balancer.

Compartimentos

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
ocid_compartment_app Nao declarado "" Compartimento para instancias, FSS, logging group, data source de imagens e backups.
ocid_compartment_database Nao declarado "" Compartimento previsto para banco de dados. Foi declarado, mas nao ha uso direto nos arquivos raiz atuais.
ocid_compartment_security Nao declarado "" Compartimento de seguranca usado para Vault, KMS key, secrets e logs do WAF.
ocid_compartment_networking Nao declarado "" Compartimento de rede usado por NSGs, load balancer, logs do load balancer e WAF.

Rede

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
ocid_vcn_3_tier Nao declarado "" OCID da VCN onde os NSGs sao criados.
ocid_subnet_app Nao declarado "" OCID da subnet privada de aplicacao usada pelas instancias e pelo mount target do FSS.
ocid_subnet_database Nao declarado "" OCID da subnet de banco. Foi declarado, mas as regras usam o CIDR cidr_subnet_database; nao ha uso direto deste OCID nos arquivos raiz atuais.
ocid_subnet_public Nao declarado "" OCID da subnet publica onde o load balancer e criado.

CIDRs

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
cidr_subnet_app Nao declarado 172.20.2.64/26 CIDR da subnet de aplicacao. Usado em regras NSG para acesso interno entre aplicacao, SOLR, Memcached, JodServer e banco.
cidr_subnet_database Nao declarado 172.20.2.128/26 CIDR da subnet de banco. Usado como destino para MySQL 3306 e MySQL HeatWave 33060.
cidr_subnet_web Nao declarado 172.20.2.0/26 CIDR da camada web/load balancer. Usado como origem para entrada em SEI, SIP e SOLR.
cidr_anywhere Nao declarado 0.0.0.0/0 CIDR aberto para internet. Usado no NSG do load balancer para HTTP 80 e HTTPS 443.

Instancias SEI

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
sei_amount_instances Nao declarado 1 Quantidade de instancias SEI criadas por oci_core_instance.sei-instance.
sei_prefix_hostname Nao declarado sei-server Prefixo do nome das instancias SEI.
sei_shape Nao declarado VM.Standard.E4.Flex Shape das instancias SEI. Tambem e usado para buscar a imagem Oracle Linux 9 mais recente.
sei_amount_memory Nao declarado 4 Memoria em GB das instancias SEI.
sei_amount_ocpus Nao declarado 1 OCPUs das instancias SEI.
sei_fqdn Nao declarado "" FQDN/hostname do SEI no load balancer.

Instancias SIP

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
sip_amount_instances Nao declarado 1 Quantidade de instancias SIP criadas por oci_core_instance.sip-instance.
sip_prefix_hostname Nao declarado sip-server Prefixo do nome das instancias SIP.
sip_shape Nao declarado VM.Standard.E4.Flex Shape das instancias SIP.
sip_amount_memory Nao declarado 4 Memoria em GB das instancias SIP.
sip_amount_ocpus Nao declarado 1 OCPUs das instancias SIP.
sip_fqdn Nao declarado "" FQDN/hostname do SIP no load balancer.

Instancias SOLR

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
solr_amount_instances Nao declarado 2 Quantidade de instancias SOLR criadas por oci_core_instance.solr-instance.
solr_prefix_hostname Nao declarado solr-server Prefixo do nome das instancias SOLR.
solr_shape Nao declarado VM.Standard.E4.Flex Shape das instancias SOLR.
solr_amount_memory Nao declarado 8 Memoria em GB das instancias SOLR.
solr_amount_ocpus Nao declarado 1 OCPUs das instancias SOLR.
solr_boot_disk_size Nao declarado 200 Tamanho do boot volume das instancias SOLR, em GB.
solr_fqdn Nao declarado "" FQDN/hostname do SOLR no load balancer.

Instancias Memcached

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
memcached_amount_instances Nao declarado 1 Quantidade de instancias Memcached criadas por oci_core_instance.memcached-instance.
memcached_prefix_hostname Nao declarado memcached-server Prefixo do nome das instancias Memcached.
memcached_shape Nao declarado VM.Standard.E4.Flex Shape das instancias Memcached.
memcached_amount_memory Nao declarado 2 Memoria em GB das instancias Memcached.
memcached_amount_ocpus Nao declarado 1 OCPUs das instancias Memcached.

Instancias JodServer

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
jod_amount_instances Nao declarado 1 Quantidade de instancias JodServer criadas por oci_core_instance.jod-instance.
jod_prefix_hostname Nao declarado jod-server Prefixo do nome das instancias JodServer.
jod_shape Nao declarado VM.Standard.E4.Flex Shape das instancias JodServer.
jod_amount_memory Nao declarado 2 Memoria em GB das instancias JodServer.
jod_amount_ocpus Nao declarado 1 OCPUs das instancias JodServer.

Load balancer

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
load_balancer_prefix_hostname Nao declarado sei-load-balancer Prefixo do nome do load balancer publico.
load_balancer_maximum_bandwidth_in_mbps Nao declarado 100 Banda maxima do load balancer flexivel, em Mbps.
load_balancer_minimum_bandwidth_in_mbps Nao declarado 10 Banda minima do load balancer flexivel, em Mbps.

FSS / NFS

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
fss_backup Nao declarado false em terraform.tfvars Habilita a politica de snapshot diario do File Storage. No codigo raiz e usado como booleano em var.fss_backup ? ... : ....
sei_nfs_name string nfs-sei Nome do FSS/NFS para o SEI. Declarado em variables_sei_nfs.tf; nao ha uso direto identificado nos arquivos raiz atuais.
sei_mount_target_ip_address string 10.191.228.100 IP planejado para o mount target. Declarado em variables_sei_nfs.tf; nao ha uso direto identificado nos arquivos raiz atuais.

WAF e backups

Variavel Tipo declarado Valor em terraform.tfvars / default Descricao
enable_waf Nao declarado false Habilita a criacao da politica WAF, Web App Firewall, associacao ao load balancer e log WAF. No codigo e usado como booleano.
enable_boot_volume_backup Nao declarado false Habilita a politica de backup dos boot volumes. No codigo e comparado como string: var.enable_boot_volume_backup == "true".

Regras de rede resumidas

NSG Direcao Origem/Destino Portas Objetivo
Load balancer publico Ingress cidr_anywhere 80, 443 Entrada publica HTTP/HTTPS.
Load balancer publico Ingress cidr_subnet_app 8983 Entrada SOLR a partir da subnet de aplicacao.
SEI servers Ingress cidr_subnet_web 80, 443, 8983 Entrada vinda da camada web/load balancer.
SEI servers Egress cidr_subnet_database 3306, 33060 Acesso MySQL/MySQL HeatWave.
SEI servers Egress cidr_subnet_app 8983, 11211, 8080 Acesso a SOLR, Memcached e JodServer.
SIP servers Ingress cidr_subnet_web 80, 443, 8983 Entrada vinda da camada web/load balancer.
SIP servers Egress cidr_subnet_database 3306, 33060 Acesso MySQL/MySQL HeatWave.
SIP servers Egress cidr_subnet_app 8983, 11211 Acesso a SOLR e Memcached.
SOLR servers Ingress cidr_subnet_web, cidr_subnet_app 8983 Trafego SOLR.
SOLR servers Egress cidr_subnet_app 11211 Acesso Memcached.
Memcached servers Ingress cidr_subnet_app 11211 Trafego Memcached.
JodServer Ingress cidr_subnet_app 8080 Trafego JodServer.
Database Ingress cidr_subnet_app 3306, 33060 Trafego MySQL/MySQL HeatWave.
Description
Repositório de código terraform para provisionamento de toda infraestrutura na OCI necessária para o sistema SEI!
Readme Apache-2.0 53 KiB
Languages
HCL 100%