この記事は公開されてから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も確認できました。
最後にマネージメントコンソールからも作成できているか確認します。
マネコンからも作成を確認できました。
これで今回のブログの内容は以上になります。
4.感想
AnsibleからAWSのリソースを作成するのは少し大変でしたが良い経験になりました。
次回もよろしくお願いします。
5.参照
ansible – amazon.aws.ec2_vpc_net
https://docs.ansible.com/ansible/latest/collections/amazon/aws/ec2_vpc_net_module.html