christiangda.awscli_configure
Rôle Ansible : christiangda.awscli
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 :
- Fork du projet
- Préparer votre environnement
- Corriger le problème dans la branche
develop
- Exécuter
molecule test
- Créer une Pull Request vers la branche
develop
du projet officiel
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
Ansible Role to Configure AWS Command Line Interface (awscli)
ansible-galaxy install christiangda.awscli_configure