jcdarwin.ec2
ansible-role-ec2
Ansibleのロールで、Ansible Galaxyから利用可能で、EC2のUbuntuイメージを作成します。
以下の内容を変更することをお勧めします:
defaults/main.yml
インストール
EC2インスタンスを作成するためにboto
が必要です。
# pipを使ってbotoをインストール
pip install boto
# botoで使用するAWSの認証情報を保存
echo -e "[Credentials]\naws_access_key_id = REDACTED\naws_secret_access_key = REDACTED" > ~/.boto
次のようなrequirements.yml
を想定します:
# GitHubからロールをインストール
- name: ansible-role-ec2
src: https://github.com/jcdarwin/ansible-role-ec2
requirements.yml
ファイルを使用してロールをローカルにインストールできます:
# GitHubからロールをインストール
- name: ansible-role-ec2
src: https://github.com/jcdarwin/ansible-role-ec2
path: roles/
ロールをインストール:
ansible-galaxy install -r requirements.yml -p ./roles
必要条件
特にありません。
ロール変数
利用可能な変数は以下に示しています。デフォルト値はdefaults/main.yml
内にあります:
site:
name: demo
environment: development
ansible_role_ec2:
instance_type: m3.large
security_group: "{{ site.environment }}-{{ site.name }}"
# https://cloud-images.ubuntu.com/locator/ec2/から取得
image: ami-bf86aedc # ubunutu 16.04 (ap-southeast-2)
image_user: ubuntu
region: ap-southeast-2
#image: ami-ba4ea4da # amazon linux (us-west-2)
#image_user: ec2-user
#region: us-west-2
keypair: aws
private_key: ~/.ssh/aws.pem
count: 1
依存関係
特にありません。
例のプレイブック
私たちのhosts
ファイルは、ansibleロールの実行中に埋め込まれ、次のようになります:
[local]
127.0.0.1 ansible_python_interpreter=/usr/local/bin/python
[demo]
52.63.226.70 ansible_user=ubuntu ansible_private_key_file=~/.ssh/aws.pem
main.yml
でプレイブックを含めます。
プレイブックの実行:
# hostsファイルがvagrantリポジトリによって生成されていると仮定しています
ansible all -m ping -i ansible/hosts -l all
ansible-playbook -l all create.yml -i ansible/hosts --tags create
その後、キー・ペアを使用してssh接続できるはずです -- IPアドレスはansibleロールによって./ansible/hosts
ファイルに追加されます:
# 実際のIPはansible/hostsに見つけることができます
ssh -i ~/.ssh/aws.pem ubuntu@52.63.226.70
EC2インスタンスの使用が終わったら、それを削除できます:
ansible-playbook -l all destroy.yml -i ansible/hosts --tags destroy
ライセンス
MIT