Ansibleを利用してAWSリソースを作成する方法


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆様こんにちは。
今回はAnsibleを利用してAWSリソース(VPC)を作成する方法をご紹介したいと思います。

1.前提条件

こちらで作成したAnsibleインストール済みのインスタンスを利用します
・前回とは違い、インスタンスは外部に接続できる体で話を進めます。

2.AWSリソースを作成する前に必要な準備

Ansibileを利用しAWSリソースを作成するためには追加でBoto3とAWSCLIのインストールが必要です。
以下のコマンドを使用してそれぞれインストールしてください。

Boto3インストール

pip3 install boto3

AWSCLIインストール

pip3 install awscli

またAWSCLIインストール後、以下のコマンド使用して認証情報を設定します。

aws configure

下記のように入力を求められるので、設定してください。

AWS Access Key ID [None]: [IAMユーザーのアクセスキーID]
AWS Secret Access Key [None]: IMAユーザーのシークレットアクセスキー]
Default region name [None]: [利用するリージョン名]
Default output format [None]: [利用する出力形式]

playbook実行の際、上記で設定したIAMユーザが指定したリージョンにAnsibleでAWSリソースを作成するようになります。

これで必要な準備は完了です。

3.AnsibleからAWSリソースの作成

まずTeraTermを利用しAnsibleをインストールしたインスタンスにSSHで接続します。

接続したら検証用ディレクトリに移動します、今回もこちらのディレクトリで作業します。

cd ansible-test

移動出来たら前回使用したインベントリファイルを以下のコマンドで編集します。

vi hosts

以下の内容に変更します。

[localhost]
127.0.0.1 ansible_python_interpreter=/usr/bin/python3

AnsibleでAWSリソースを作成する際、インベントリファイルはローカルホストを指定します。
ansible_python_interpreterで使用するpythonのinterpreterのパスを指定しています。

次にテスト用VPCの作成を実行するplaybookを以下のコマンドで作成します。

vi testplaybook2.yml

以下の内容で保存します。

- hosts: localhost
  connection: local
  tasks:
    - name: create testvpc
      amazon.aws.ec2_vpc_net:
        name: testvpc
        cidr_block: 10.0.0.0/16
      register: testvpc

    - debug:
        msg: "{{ testvpc.vpc.id }}"

tasksの内容は以下になります。

  • name:tasksの名前を設定しています
  • amazon.aws.ec2_vpc_net:VPCの名前とCIDRを定義しています
  • register:実行結果を保存する変数名を設定しています
  • debug:変数からVPCのIDを出力するように設定しています

playbookの作成ができたら、以下のコマンドで実際に実行してみましょう。

ansible-playbook -i hosts testplaybook2.yml

出力

PLAY [localhost] *********************************************************************************************

TASK [Gathering Facts] ************************************************************************************
ok: [127.0.0.1]

TASK [create testvpc] *************************************************************************************
changed: [127.0.0.1]

TASK [debug] **********************************************************************************************
ok: [127.0.0.1] => {
    "msg": "vpc-0c1f9e6b151d88466"
}

PLAY RECAP ************************************************************************************************
127.0.0.1                  : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

実行を確認でき、作成したVPCのIDも確認できました。

最後にマネージメントコンソールからも作成できているか確認します。
file

マネコンからも作成を確認できました。

これで今回のブログの内容は以上になります。

4.感想

AnsibleからAWSのリソースを作成するのは少し大変でしたが良い経験になりました。
次回もよろしくお願いします。

5.参照

ansible – amazon.aws.ec2_vpc_net
https://docs.ansible.com/ansible/latest/collections/amazon/aws/ec2_vpc_net_module.html

Last modified: 2022-06-17

Author