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