christiangda.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です。

リポジトリのコードはこちらです。

例を見て理解してください。

要件

このロールは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_rolechristiangda.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_rolechristiangda.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

モレキュールテストを実行

利用可能なシナリオ:

  • 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-galaxy install christiangda.awscli_configure
ライセンス
gpl-3.0
ダウンロード
135.3k