Dans la version stable d'ansible, même si j'ai défini le profil utilisé par awscli dans module ec2, cela a échoué. Au fait, module_ec2_group fonctionne très bien. J'ai essayé la version de développement et cela a fonctionné, mais cela a bien fonctionné, mais cela a bien fonctionné, mais c'était [hacking / env-setup](https: / /github.com/ansible/ansible/blob/devel/hacking/env-setup) ajoute autant que possible des variables d'environnement et c'est un peu difficile à gérer, j'ai donc créé un environnement virtualenv et l'ai installé en utilisant setup.py .. L'environnement d'exécution est OS X Yosemite + MacPorts. Vous pouvez remplacer la commande virtualenv-2.7 par virtualenv.
virtualenv-2.7 env
source env/bin/activate
pip install --upgrade pip
pip install paramiko PyYAML Jinja2 httplib2
pip install boto awscli
git clone git://github.com/ansible/ansible.git --recursive
python setup.py install
cd ..
rehash
which ansible
C'est juste un passe-temps de mettre awscli à ce moment. Si vous sortez sur virtualenv avec quel ansible, c'est OK
/Users/hoge/dev/unkoproject/server/infra/env/bin/ansible
Ensuite, créez un profil avec awscli.
aws configure --profile toilet
Après cela, faites une utilisation appropriée de local_action et exécutez-le.
echo "localhost ansible_python_interpreter=`which python`" > hosts
vi unko.yml
ansible-playbook -i hosts unko.yml
unko.yml a le contenu suivant.
- name: Unko
hosts: 127.0.0.1
connection: local
tasks:
- name: Create Security Group
local_action:
module: ec2_group
name: unko_group
description: Security Group for Unko
region: ap-northeast-1
profile: toilet
rules:
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 443
to_port: 443
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 25
to_port: 25
cidr_ip: 0.0.0.0/0
- name: Unko Web Server Instance
local_action:
module: ec2
region: ap-northeast-1
keypair: ToiletKey
group: unko_group
instance_type: t2.micro
image: ami-936d9d93
count: 1
wait: yes
profile: toilet
register: ec2
- name: Add Web Server instance to host group
local_action: add_host hostname={{ item.public_ip }} groupname=unko
with_items: ec2.instances
- name: Add tag to instances
local_action: ec2_tag resource={{ item.id }} region=ap-northeast-1 state=present profile=toilet
with_items: ec2.instances
args:
tags:
Name: Unko
- name: Wait for SSH to become available
pause: minutes=1
J'aurais aimé avoir un peu plus de sens pour nommer.
Recommended Posts