Ansible社内ではAWSが普通に使われているため、常々基礎からきちんと学びたいと考えていました。改訂版」の社内勉強会が開催されることになりました。単行本この商品を含むブログを見るこれはちょうどよい機会だと思い、書籍をひと通り読んでみました。書籍では、オンプレでやってたことをAWSで実現するにはどうすればよいかなど、AWSのインフラまわりの基礎的なところが書かれており、とてもためになりました。手動でAWS環境を構築したため、このまま何もしないと忘れそうでした。Python(Boto3)がありました。これを使ってPythonスクリプトとして残しておけば忘れないだろうと考えました。Pythonなお、Boto3ではなくAnsibleでも構築できそうでしたが、今回はBoto3の使い方に慣れようと思い、AWSまわり:Boto3EC2インスタンスの設定:Ansibleとして、写経してみることにしました。2.3.2.0現在では、Boto3・AnsibleともにPython3で動くようです。書籍では、AWSアカウントについては特に触れられていませんでした。2017のセッション「不安で夜眠れないAWSアカウント管理者に送る処方箋という名のハンズオン」に従い、IAMユーザーを作成・使用することにしました。米国東部(バージニア北部)アジアパシフィック(東京)としました。今回はawscliを使わず、Boto3だけで環境を準備します。Startに従って、環境ファイルを用意します。aws_access_key_idとaws_secret_access_keyを設定します。Developers.IO今回は試しにデフォルト以外のprofile(my-profile)を使うことにしてみました。YOUR_SECRET~/.aws/configこちらにはデフォルトリージョンを設定します。READMEにはus-east-1と記載されています。使うのが良さそうでした。サービス[default]region=ap-northeast-1ただ、自分の書き方が悪いせいか、上記のように書いてもデフォルトリージョンとして設定されなかったため、Boto3を使うところでリージョンを指定しています。region_name='ap-northeast-1')のようにして、アクセスキーなどを持ったclientとresourceを取得し、それを使って操作します。サービスの名前空間を使えば良さそうでした。Ansibleまわり途中でEC2の設定をするため、Ansibleまわりの準備もしておきます。Developers.IOssh_configHostNameのxxx.xxx.xxx.xxxは、EC2を立てた時にパブリックIPアドレスへと差し替えます。/dev/nullansible.cnfFオプションのファイル(ssh_config)は、プルパスでなくても問題ありませんでした。ssh_configInventoryファイル(hosts)ここに記述するホスト名は、ssh_configのHostの値と一致させます。今回はwebserverとなります。ch4_apache.ymlのようにして、EC2インスタンスに対して実行します。今回写経したコードを載せておきます。だいたいのものはClientとResourceServiceのどちらでも操作できました。戻り値がClientは、dictResourceServiceは、各オブジェクトだったので、ResourceServiceの方が扱いやすいのかなと感じました。enabled=yesChapter6Chapter6ではプライベートサブネットにEC2インスタンスを立てます。その方法はパブリックサブネットと同様なため、ここでは差分のみ記載します。SubnetId=subnet_id,)NATゲートウェイがavailableになるまで待つNATゲートウェイを作成した直後はまだavailableになっていないため、availableになるまで待ちます。手元では約2分ほどかかりました。NatGatewayIds=[nat_gateway_id])メインのルートテーブルのIDを取得するNATゲートウェイのエントリを追加するため、メインのルートテーブルのIDを取得します。Ansibleで実装しました。(boto3_ansible/clear_all.py)。流れとしては、作成したのとは逆順で削除していく形となります。Boto3Ansibleをはじめる人に。Developers.IOソースコードGitHubに上げました。ふれる機会がありました。(19)リンクGitHubSpeakerDeckはてなブログをはじめよう!thinkAmiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。