cdriehuys.rds-postgres
cdriehuys.rds-postgres
Este rol te permite crear una base de datos PostgreSQL utilizando RDS de AWS.
Requisitos
Como este rol interactúa con AWS, se requiere que el paquete boto esté instalado. Las funciones de este rol dependen de que boto >= 2.26
esté instalado en el host donde se ejecuta el rol. También necesitamos psycopg2
para interactuar con la base de datos.
Variables del Rol
Este rol interactúa con AWS, por lo que debes establecer tus credenciales para usar el rol. Si las credenciales no se proporcionan como variables, Ansible intentará buscarlas en las variables de entorno como se describe aquí.
aws_access_key: tu-clave-de-acceso
aws_secret_key: tu-clave-secreta
aws_region: tu-región-aws
El rol utiliza algunas variables comunes de AWS para proporcionar nombres predeterminados para otros parámetros.
aws_application_name: mi-aplicación
aws_tags: {}
Los siguientes parámetros se utilizan al crear la instancia de la base de datos. Lo más probable es que desees cambiar estos parámetros ya que se establecen en los valores más bajos posibles por defecto.
db_instance_name: "{{ aws_application_name }}-db"
db_instance_size: 5
db_instance_type: db.t2.micro
db_instance_default_tags:
application: "{{ aws_application_name }}"
role: base de datos
db_instance_tags: "{{ db_instance_default_tags | combine(aws_tags) }}"
db_instance_subnet: predeterminado
# Credenciales para el usuario administrador
db_admin_username: dbadmin
db_admin_password: contraseña
Por defecto, la instancia de RDS se crea con un grupo de seguridad que permite acceso desde cualquier lugar durante la ejecución del rol. Después del rol, el grupo de seguridad no permite ningún acceso de forma predeterminada. Si las reglas deseadas no se conocen en tiempo de ejecución, guardamos una referencia al grupo de seguridad creado como db_security_group
.
db_instance_sg_name: "{{ aws_application_name }}-db-sg"
db_instance_sg_description: Grupo de seguridad para las bases de datos de '{{ aws_application_name }}'.
# Sobrescribe esto con tus reglas deseadas
db_instance_sg_rules: []
# Estas son las reglas que permiten el acceso cuando el rol está en ejecución
db_instance_sg_holes:
- proto: tcp
from_port: 5432
to_port: 5432
cidr_ip: 0.0.0.0/0
Cada instancia puede alojar múltiples bases de datos. Las bases de datos se especifican con un nombre y parámetros opcionales. Los usuarios asignados a cada base de datos tendrán todos los privilegios sobre dicha base de datos.
db_map: {}
# Un ejemplo de múltiples bases de datos con múltiples usuarios
db_map:
mydb:
users:
john: contraseñajohn
alice: contraseñaalice
otherdb:
users:
phil: contraseñaphil
Dependencias
N/A
Ejemplo de Playbook
Dado que el rol utiliza comandos local_action
, tiene más sentido
establecer el host en la máquina local.
- hosts: localhost
connection: local
gather_facts: no
roles:
- cdriehuys.rds-postgres
Licencia
MIT
Información del Autor
Chathan Driehuys cdriehuys@gmail.com
Role for provisioning a PostgreSQL database on RDS.
ansible-galaxy install cdriehuys.rds-postgres