christiangda.awscli_configure

Rôle Ansible : christiangda.awscli

Workflow de la branche Master Workflow de la branche Develop Rôle Ansible

Ce rôle crée les fichiers nécessaires pour configurer l'interface de ligne de commande AWS (awscli).

Ce rôle est très basique, sa seule fonction est de transformer une variable définie au format yaml contenant les fichiers .aws/config et .aws/credentials en format .ini et de les placer au bon endroit.

La meilleure façon d'installer ce rôle est d'utiliser la commande ansible-galaxy install christiangda.awscli_configure, le dépôt Ansible Galaxy est christiangda.awscli_configure.

Le code du dépôt est https://github.com/christiangda/ansible-role-awscli-configure.

Consultez les exemples pour mieux comprendre.

Exigences

Ce rôle fonctionne sur les distributions RedHat, CentOS, Debian et Ubuntu.

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

(*) Non testé, vous pourriez rencontrer des problèmes avec ces systèmes d'exploitation.

Pour voir la matrice de compatibilité entre Python et Ansible, consultez le projet Travis-CI build matrix.

Variables de rôle

Variable Valeur par défaut
awscliconf_path "~/."
awscliconf_recursive_path_creation false
awscliconf_files_owner "root"
awscliconf_files_group "root"
awscliconf_files "" --> Vide

Plus de détails : Consultez le fichier defaults/main.yaml.

Dépendances

Ce rôle n'a pas de dépendances, mais il est important d'installer l'interface de ligne de commande AWS (awscli) pour que cela ait un sens. Mon rôle christiangda.awscli peut vous aider à installer l'interface de ligne de commande AWS (awscli).

Exemple de Playbook

RedHat/CentOS, Ubuntu et Debian

Si vous avez déjà installé l'interface de ligne de commande 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

Quand vous avez RedHat/CentOS 8 ou Debian/Ubuntu comme cible et que vous n'avez pas installé l'interface de ligne de commande AWS (awscli) et souhaitez utiliser mon rôle 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

Quand vous avez RedHat/CentOS 6/7 comme cible et que vous n'avez pas installé l'interface de ligne de commande AWS (awscli) et non plus le dépôt EPEL et que vous souhaitez utiliser mes rôles christiangda.epel_role, 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

Quand vous avez plusieurs cibles de systèmes d'exploitation et souhaitez installer le dépôt EPEL uniquement sur RedHat/CentOS 6/7 en utilisant mes rôles christiangda.epel_role, 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

Développement / Contribuer

Ce rôle est testé à l'aide de Molecule et a été développé en utilisant Python Virtual Environments.

Nous utilisons également les branches principales git :

  • master
  • develop

Si vous souhaitez contribuer à ce projet, voici ce que vous devez faire :

Références :

Préparer votre environnement

  • 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

Cloner le dépôt du rôle (à partir de votre fork) et créer un lien symbolique

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

Exécuter le test moléculaire

Scénarios 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

scénario par défaut

Étape par étape

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

ou

Tout d'un coup

molecule test [--scenario-name default]

scénario podman

Étape par étape

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

ou

Tout d'un coup

molecule test --scenario-name podman

De plus, si vous souhaitez le tester en utilisant des machines virtuelles, j'ai un très joli projet ansible-playground qui utilise Vagrant et VirtualBox, essayez-le !

Licence

Ce module est publié sous la licence publique générale GNU Version 3 :

Informations sur l'auteur

Installer
ansible-galaxy install christiangda.awscli_configure
Licence
gpl-3.0
Téléchargements
135.3k