christiangda.awscli_configure

Rola Ansible: christiangda.awscli

Praca na gałęzi Master Praca na gałęzi Develop Rola Ansible

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ś:

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
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

Zainstaluj
ansible-galaxy install christiangda.awscli_configure
Licencja
gpl-3.0
Pobrania
135.3k