christiangda.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.awscli_configure