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です。
リポジトリのコードはこちらです。
例を見て理解してください。
要件
このロールは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 (不安定)
(*) テスト未実施のため、これらのOSで問題が発生する可能性があります。
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
複数のOSターゲットがある場合で、RedHat/CentOS 6/7にのみEPELリポジトリをインストールしたい時は、私のロール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
モレキュールテストを実行
利用可能なシナリオ:
- 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
シナリオデフォルト
ステップバイステップ
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]
シナリオポッドマン
ステップバイステップ
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
さらに、仮想マシンを使用してテストしたい場合は、VagrantとVirtualBoxを使用した非常に便利なansible-playgroundプロジェクトがありますので、試してみてください!
ライセンス
このモジュールはGNU一般公衆ライセンスバージョン3の下でリリースされています。
作者情報
Ansible Role to Configure AWS Command Line Interface (awscli)
ansible-galaxy install christiangda.awscli_configure