christiangda.awscli_configure

Rol de Ansible: christiangda.awscli

Flujo de trabajo de rama principal Flujo de trabajo de rama de desarrollo Rol de Ansible

Este rol crea los archivos necesarios para configurar la Interfaz de Línea de Comandos de AWS (awscli).

Este rol es muy básico; su única función es transformar una variable definida en formato yaml, que contiene el contenido de los archivos .aws/config y .aws/credentials, al formato de archivo .ini y colocarlos en el lugar que desees.

La mejor forma de instalar este rol es usando el comando ansible-galaxy install christiangda.awscli_configure. El repositorio de Ansible Galaxy es christiangda.awscli_configure.

El código del repositorio está en https://github.com/christiangda/ansible-role-awscli-configure.

Consulta los ejemplos para entenderlo mejor.

Requisitos

Este rol funciona en las distribuciones de RedHat, CentOS, Debian y Ubuntu

  • RedHat
    • 6 (*)
    • 7
    • 8
  • CentOS
    • 6 (*)
    • 7
    • 8
  • Ubuntu
    • 14.* (*)
    • 16.* (*)
    • 18.*
    • 19.*
  • Debian
    • jessie (8) (*)
    • stretch (9)
    • buster (10)
    • sid (inestable)

(*) Fuera de pruebas, es posible que encuentres problemas con este SO.

Para ver la matriz de compatibilidad de Python vs. Ansible, consulta el proyecto Matriz de construcción de Travis-CI.

Variables del rol

Variable Valor por defecto
awscliconf_path "~/."
awscliconf_recursive_path_creation false
awscliconf_files_owner "root"
awscliconf_files_group "root"
awscliconf_files "" --> Vacío

Más detalles: Consulta el archivo defaults/main.yaml.

Dependencias

Este rol no tiene dependencias, pero es importante que instales la Interfaz de Línea de Comandos de AWS (awscli) para que tenga sentido. Mi rol christiangda.awscli puede ayudarte a instalar la Interfaz de Línea de Comandos de AWS (awscli).

Ejemplo de Playbook

RedHat/CentOS, Ubuntu y Debian

Si ya has instalado la Interfaz de Línea de Comandos de AWS (awscli):

- hosts: redhat-8
    gather_facts: True
    roles:
      - role: christiangda.awscli_configure
        vars:
          awscliconf_path: '/home/christian.gonzalez'
          awscliconf_files_owner: 'christian.gonzalez'
          awscliconf_files_group: 'christian.gonzalez'
          awscliconf_files:
            credentials:
              - default:
                  aws_access_key_id: 'AKIAIOSFODNN7EXAMPLE'
                  aws_secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
            config:
              - default:
                  region: us-west-2
                  output: json
              - profile development:
                  role_arn: 'arn:aws:iam::123456789012:role/role-for-development'
                  mfa_serial: 'arn:aws:iam::11111111111:mfa/christian.gonzalez'
                  region: eu-west-1
                  source_profile: default

Cuando tengas RedHat/CentOS 8 o objetivo de Debian/Ubuntu y no tengas instalada la Interfaz de Línea de Comandos de AWS (awscli) y deseas usar mi rol christiangda.awscli:

- hosts: redhat-8
    gather_facts: True
    roles:
      - role: christiangda.awscli
      - role: christiangda.awscli_configure
        vars:
          awscliconf_files:
            credentials:
              - default:
                  aws_access_key_id: 'AKIAIOSFODNN7EXAMPLE'
                  aws_secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
            config:
              - default:
                  region: us-west-2
                  output: json
              - profile development:
                  role_arn: 'arn:aws:iam::123456789012:role/role-for-development'
                  mfa_serial: 'arn:aws:iam::11111111111:mfa/christian.gonzalez'
                  region: eu-west-1
                  source_profile: default

Cuando tengas un objetivo de RedHat/CentOS 6/7 y no tengas instalada la Interfaz de Línea de Comandos de AWS (awscli) ni el Repositorio EPEL, y deseas usar mis roles christiangda.epel_role y christiangda.awscli:

- hosts: redhat-7
    gather_facts: True
    roles:
      - role: christiangda.epel_repo
      - role: christiangda.awscli
      - role: christiangda.awscli_configure
        vars:
          awscliconf_files:
            credentials:
              - default:
                  aws_access_key_id: 'AKIAIOSFODNN7EXAMPLE'
                  aws_secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
            config:
              - default:
                  region: us-west-2
                  output: json
              - profile development:
                  role_arn: 'arn:aws:iam::123456789012:role/role-for-development'
                  mfa_serial: 'arn:aws:iam::11111111111:mfa/christian.gonzalez'
                  region: eu-west-1
                  source_profile: default

Cuando tengas múltiples objetivos de SO y deseas instalar el repositorio EPEL solo en RedHat/CentOS 6/7 usando mis roles christiangda.epel_role y christiangda.awscli:

- hosts: servers
    gather_facts: True
    roles:
    - role: christiangda.epel_repo
      when: >
        ansible_os_family == 'RedHat' and (
          ansible_distribution == 'CentOS' or
          ansible_distribution == 'RedHat'
        )
        and (
          ansible_distribution_major_version == '6' or
          ansible_distribution_major_version == '7'
        )
      changed_when: false
    - role: christiangda.awscli
    - role: christiangda.awscli_configure
      vars:
        awscliconf_files:
          credentials:
            - default:
                aws_access_key_id: 'AKIAIOSFODNN7EXAMPLE'
                aws_secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'

            - production-profile:
                aws_access_key_id: 'AKIAIOSFODNN7EXAMPLE'
                aws_secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'
          config:
            - default:
                region: us-west-2
                output: json
            - profile development:
                role_arn: arn:aws:iam::123456789012:role/role-name
                role_session_name: maria_garcia_role
                source_profile: production-profile
                aws_session_token: AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
                s3:
                  max_concurrent_requests: 20
                  max_queue_size: 10000
                  multipart_threshold: 64MB
                  multipart_chunksize: 16MB
                  max_bandwidth: 50MB/s
                  use_accelerate_endpoint: true
                  addressing_style: path
                api_versions:
                  ec2: '2015-03-01'
                  cloudfront: '2015-09-17'
                tcp_keepalive: false

Desarrollo / Contribuciones

Este rol se prueba usando Molecule y fue desarrollado utilizando Entornos Virtuales de Python.

Asimismo, utilizamos las ramas principales de git

  • master
  • develop

Si deseas contribuir a este proyecto, lo que debes hacer es:

Referencias:

Preparar tu entorno

  • Python 3
mkdir ansible-roles
cd ansible-roles/

python3 -m venv venv
source venv/bin/activate
pip install pip --upgrade
pip install ansible
pip install molecule
pip install 'molecule[docker]'
pip install 'molecule[podman]'
pip install 'molecule[lint]'
pip install molecule-vagrant
pip install python-vagrant
pip install selinux
pip install docker
pip install pytest
pip install pytest-mock
pip install pylint
pip install rope
pip install autopep8
pip install yamllint
pip install flake8
pip install ansible-lint

Clonar el repositorio del rol (desde tu fork) y crear un enlace simbólico

git clone https://github.com/christiangda/ansible-role-awscli-configure.git
ln -s ansible-role-awscli-configure christiangda.awscli_configure
cd christiangda.awscli_configure

Ejecutar la prueba de molecule

Escenarios disponibles:

  • default --> --driver-name docker
  • podman --> --driver-name podman
  • centos-8 --> --driver-name centos-8
  • centos-7 --> --driver-name centos-7
  • ubuntu-21.04 --> --driver-name ubuntu-21.04

escenario por defecto

Paso a paso:

molecule create [--scenario-name default]
molecule converge [--scenario-name default]
molecule verify [--scenario-name default]
molecule destroy [--scenario-name default]

o

Todo en uno:

molecule test [--scenario-name default]

escenario podman

Paso a paso:

molecule create --scenario-name podman
molecule converge --scenario-name podman
molecule verify --scenario-name podman
molecule destroy --scenario-name podman

o

Todo en uno:

molecule test --scenario-name podman

Además, si deseas probarlo usando VMs, tengo un muy buen proyecto de ansible-playground que utiliza Vagrant y VirtualBox, ¡pruébalo!

Licencia

Este módulo se publica bajo la Licencia Pública General GNU Versión 3:

Información del autor

Instalar
ansible-galaxy install christiangda.awscli_configure
Licencia
gpl-3.0
Descargas
135.3k