awscli_configure

Ansible Роль: christiangda.awscli

Работа основного ветки Работа ветки разработки Ansible Роль

Эта роль создает необходимые файлы для конфигурации интерфейса командной строки AWS (awscli).

Эта роль очень простая, ее единственная функция – преобразовать переменную, определенную в формате yaml, с содержимым файлов .aws/config и .aws/credentials в формат .ini и поместить их в нужное вам место.

Лучший способ установить эту роль – использовать команду ansible-galaxy install christiangda.awscli_configure, репозиторий Ansible Galaxy – christiangda.awscli_configure.

Код репозитория: https://github.com/christiangda/ansible-role-awscli-configure.

Смотрите примеры, чтобы понять это.

Требования

Эта роль работает на дистрибутивах RedHat, CentOS, Debian и Ubuntu.

  • RedHat
    • 6 (*)
    • 7
    • 8
  • CentOS
    • 6 (*)
    • 7
    • 8
  • Ubuntu
    • 14.* (*)
    • 16.* (*)
    • 18.*
    • 19.*
  • Debian
    • jessie (8) (*)
    • stretch (9)
    • buster (10)
    • sid (нестабильная)

(*) Не тестировалось, возможно, вы столкнетесь с проблемами на этой ОС.

Чтобы увидеть матрицу совместимости Python и Ansible, смотрите проект Travis-CI матрица сборки.

Переменные роли

Переменная Значение по умолчанию
awscliconf_path "~/."
awscliconf_recursive_path_creation false
awscliconf_files_owner "root"
awscliconf_files_group "root"
awscliconf_files "" --> Пусто

Более подробная информация: Смотрите файл defaults/main.yaml.

Зависимости

Эта роль не имеет зависимостей, но важно, чтобы вы установили интерфейс командной строки AWS (awscli), чтобы это имело смысл. Моя роль christiangda.awscli может помочь вам установить интерфейс командной строки AWS (awscli).

Пример плейбука

RedHat/CentOS, Ubuntu и Debian

Если вы уже установили интерфейс командной строки 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

Если у вас целевая машина RedHat/CentOS 8 или Debian/Ubuntu, и вы не установили интерфейс командной строки AWS (awscli) и хотите использовать мою роль 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

Если у вас целевая машина RedHat/CentOS 6/7, и вы не установили интерфейс командной строки AWS (awscli) и репозиторий EPEL, и хотите использовать мои роли 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

Когда у вас несколько целевых ОС и вы хотите установить репозиторий EPEL только для RedHat/CentOS 6/7, используя мои роли 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

Разработка / Вклад

Эта роль тестируется с помощью Molecule и разрабатывается с использованием виртуальных окружений Python.

Также мы используем два основных git-ветки:

  • master
  • develop

Если вы хотите внести свой вклад в этот проект, сделайте следующее:

Ссылки:

Подготовьте свою среду

  • 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

Выполните тестирование с помощью Molecule

Доступные сценарии:

  • 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

сценарий default

Шаг за шагом

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

или

Все в одном

molecule test [--scenario-name default]

сценарий podman

Шаг за шагом

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

или

Все в одном

molecule test --scenario-name podman

Кроме того, если вы хотите протестировать это с помощью ВМ, у меня есть очень хороший проект ansible-playground, который использует Vagrant и VirtualBox. Попробуйте его!

Лицензия

Этот модуль выпущен под лицензией GNU General Public License Version 3:

Информация об авторе

Установить
ansible-galaxy install christiangda/ansible-role-awscli-configure
Лицензия
gpl-3.0
Загрузки
86184