I am launching one-off ec2 instance for development purposes and in the 
main playbook I am launching an EC2 instance then assigning an elastic IP. 
Once all of that is done I am configuring the server via a role. I am able 
to capture the elastic IP via register but how do I call it from the role? 
Or more specifically how can I call it in a configuration template from 
within the role that is applied?

Here's an example:

launch-server.yml:

- name: Launch ec2 instance
  hosts: localhost
  gather_facts: False
  vars:
    key_name: ssh-key
    instance_type: t2.medium
    group_id: sg-f834234
    image: ami-b234234
    region: us-east-1
    vpc_subnet_id: subnet-65wer234
  tasks:

    - name: Launch instance
      local_action: ec2 key_name={{ key_name }} group_id={{ group_id }} 
instance_type={{ instance_type }} image={{ image }} wait=true region={{ 
region }} vpc_subnet_id={{ vpc_subnet_id }} 
instance_tags='{"Name":"ec2-instance"}'
      register: ec2

    - name: allocate a new elastic IP without associating it to anything
      action: ec2_eip region=us-east-1
      register: eiptest

    - name: output the IP
      debug: msg="Allocated IP is {{ eiptest.public_ip }}" <--- this prints 
the elastic IP to the screen.

    - name: Add new instance to host group
      local_action: add_host hostname={{ item.private_ip }} 
groupname=launched
      with_items: ec2.instances

    - name: Wait for SSH to come up
      local_action: wait_for host={{ item.private_ip }} port=22 delay=60 
timeout=320 state=started
      with_items: ec2.instances

- name: Configure instance
  hosts: launched
  sudo: True
  gather_facts: True
  roles:
    - myrole

In the template from within the role it doesn't know about 
eiptest.public_ip so it fails and reading the docs it seems that var will 
be destroyed at the end of the play that calls the role. If I run ansible 
hostname -m setup I don't see any entries for the elastic IP assigned to 
the instance.

I've tried a number of things and read through the docs but not having much 
luck. I would like to keep the roles separate from the plays that launch 
the instances if at all possible.

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/bc9971ae-88d0-4d96-8378-82aad1cf913d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to