2020/06/12
Ansibieはナンセンス!
Terraformで書きましょう!
ーーーーーーーーーーーーー
構成管理ツールAnsibleを使って、以下を作成します。
- IAM Role
- IAM Policy
後述する「事前準備」が完了しましたら、
以下のコマンドで、いつでも同様の環境が作れるようになります。
実行コマンド
$ ansible-playbook -i hosts/[環境名] aws-iam.yml
実行には、aws profileの設定が必要になります。
AWSアカウント情報をパラメータファイルに記載し実行することも可能ですが、
セキュリティ面を考慮し、aws profileを使用しました。
まだ設定されていない方は、以下の公式ドキュメントを参考に設定を行ってください。
事前準備
以下が必要になります。
足りないのもは、インストールしてください。
- boto
- python >= 2.6
- Jinja2
次に、以下のファイルを作成しましょう。
Playbookファイル
このファイルでは、実行するTaskを定義します。
コマンドを実行すると、上からTaskが順に実行されます。
---
- hosts: localhost
connection: local
gather_facts: False
become: False
tasks:
- name: "IAM Roles"
iam:
iam_type: role
name: "{{ item.name }}"
state: present
profile: "{{ profile }}"
with_items: "{{ iam_role }}"
- name: "IAM Policy"
iam_policy:
iam_type: role
iam_name: "{{ item.0.name }}"
policy_name: "{{ item.1 }}"
policy_json: "{{ lookup('template','policy/' + item.1 + '.json', convert_data=False) }}"
state: present
profile: "{{ profile }}"
with_subelements:
- "{{ iam_role }}"
- policy
IAM Policyファイル
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
ここに許可するアクションを記載
],
"Resource": [
許可先のAWSリソースを記載
]
}
]
}
パラメータファイル
構築する際の設定パラメータをこのファイルに集約します。
構築したい環境に合わせて、パラメータを記載してください。
なお、ファイルの配置先は、環境名に合わせて配置してください。
環境別にフォルダを分けて、パラメータファイルを作成することで、
開発/検証/本番 環境など、各環境に応じて動的に構築可能となります。
---
# Common
env: [環境名]
profile: [プロファイル名]
region: [リージョン]
# IAM Roles
#
iam_role:
- name: [IAM Role名]
policy:
- [Policy名]
・
・
・
- name:
・
・
・
おわりに
今回は、構成管理ツールAnsibleを使いましたが、
AWSのCloud formationでも、同様のことができます。
ただ、Ansibleの場合、システム内構築(SSH、OSユーザーなど)なども定義することができ、
おすすめのツールです。
Ansibleの良いところは、
事前にTaskさえ定義しておけば、後はプロジェクトや環境に合わせて設定パラメータを用意するだけ。
簡単に基盤構築ができてしまうところです。
AWS Consoleから手作業で構築するより、
Ansibleで構築した方が、圧倒的に工数を短縮することができます。
お仕事で、AWSの基盤構築されてる方は、是非、Ansibleを活用してみてください。