christiangda.awscli_configure
Rola Ansible: christiangda.awscli
Ta rola tworzy niezbędne pliki do konfiguracji interfejsu wiersza poleceń AWS (awscli).
Jest to bardzo podstawowa rola, która ma na celu przekształcenie zmiennych zdefiniowanych w formacie yaml
, które zawierają treść plików .aws/config
i .aws/credentials
, do formatu plików .ini
, a następnie umieszczenie ich w wybranym miejscu.
Najlepszym sposobem na zainstalowanie tej roli jest użycie polecenia ansible-galaxy install christiangda.awscli_configure
, repozytorium Ansible Galaxy to christiangda.awscli_configure.
Kod repozytorium dostępny jest pod adresem https://github.com/christiangda/ansible-role-awscli-configure.
Zobacz przykłady, aby lepiej to zrozumieć.
Wymagania
Ta rola działa na dystrybucjach RedHat, CentOS, Debian i Ubuntu.
- RedHat
- 6 (*)
- 7
- 8
- CentOS
- 6 (*)
- 7
- 8
- Ubuntu
- 14.* (*)
- 16.* (*)
- 18.*
- 19.*
- Debian
- jessie (8) (*)
- stretch (9)
- buster (10)
- sid (niestabilna)
(*) Brak testów, więc mogą wystąpić problemy z tymi systemami.
Aby zobaczyć macierz zgodności Pythona i Ansible, zapoznaj się z projektem macierz budowy Travis-CI.
Zmienne roli
Zmienna | Wartość domyślna |
---|---|
awscliconf_path | "~/." |
awscliconf_recursive_path_creation | false |
awscliconf_files_owner | "root" |
awscliconf_files_group | "root" |
awscliconf_files | "" --> Pusty |
Więcej szczegółów: Zobacz plik defaults/main.yaml
Zależności
Ta rola nie ma żadnych zależności, ale ważne jest, aby zainstalować interfejs wiersza poleceń AWS (awscli), aby to miało sens. Moja rola christiangda.awscli może pomóc w instalacji interfejsu wiersza poleceń AWS (awscli).
Przykładowy Playbook
RedHat/CentOS, Ubuntu i Debian
Jeśli już zainstalowałeś interfejs wiersza poleceń 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
Jeśli masz RedHat/CentOS 8 lub Debian/Ubuntu jako cel i nie zainstalowałeś interfejsu wiersza poleceń AWS (awscli), a chcesz użyć mojej roli 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
Jeśli masz RedHat/CentOS 6/7 jako cel i nie masz zainstalowanego interfejsu wiersza poleceń AWS (awscli) ani repozytorium EPEL, a chcesz użyć moich ról christiangda.epel_role oraz 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
Jeśli masz wiele celów systemowych i chcesz zainstalować repozytorium EPEL tylko w RedHat/CentOS 6/7, używając moich ról christiangda.epel_role oraz 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
Rozwój / Wkład
Ta rola jest testowana za pomocą Molecule i została opracowana z użyciem Wirtualnych Środowisk Pythona.
Używamy głównych gałęzi git:
- master
- develop
Jeśli chcesz przyczynić się do tego projektu, powinieneś:
- Forkować projekt
- Przygotować swoje środowisko
- Naprawić problem w gałęzi
develop
- Wykonać
molecule test
- Utworzyć Pull Request do oficjalnej gałęzi
develop
projektu
Odniesienia:
Przygotowanie środowiska
- 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
Klonuj repozytorium roli (Z twojego forka) i utwórz link symboliczny
git clone https://github.com/christiangda/ansible-role-awscli-configure.git
ln -s ansible-role-awscli-configure christiangda.awscli_configure
cd christiangda.awscli_configure
Wykonaj test molecule
Dostępne scenariusze:
- 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
scenariusz default
Krok po kroku
molecule create [--scenario-name default]
molecule converge [--scenario-name default]
molecule verify [--scenario-name default]
molecule destroy [--scenario-name default]
lub
Wszystko w jednym
molecule test [--scenario-name default]
scenariusz podman
Krok po kroku
molecule create --scenario-name podman
molecule converge --scenario-name podman
molecule verify --scenario-name podman
molecule destroy --scenario-name podman
lub
Wszystko w jednym
molecule test --scenario-name podman
Dodatkowo, jeśli chcesz przetestować to używając maszyn wirtualnych, polecam bardzo fajny projekt ansible-playground, który wykorzystuje Vagrant i VirtualBox, spróbuj!
Licencja
Ten moduł jest wydany na mocy Licencji Publicznej GNU w wersji 3:
Informacje o autorze
Ansible Role to Configure AWS Command Line Interface (awscli)
ansible-galaxy install christiangda.awscli_configure