awscli_configure
Ansible Роль: christiangda.awscli
Эта роль создает необходимые файлы для конфигурации интерфейса командной строки 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
Если вы хотите внести свой вклад в этот проект, сделайте следующее:
- Сделайте форк проекта
- Подготовьте свою среду
- Исправьте проблему в ветке
develop
- Выполните
molecule test
- Создайте запрос на изменение в официальную ветку
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 Role to Configure AWS Command Line Interface (awscli)
ansible-galaxy install christiangda/ansible-role-awscli-configure