Hello Guys,

I have hit a major blocker probably because I have little knowledge on how
to use special variables like hostvars and groupvars etc while using
dynamic inventory especially with AWS.

I had a playbook for creating vpc, networking stuff, creating of various
AWS services  like RDS, EC2 , ELB etc and later run various nginx,
tomcat,fail2ban etc roles to configure them. So I register some of the
variables and use set_facts on registered variables and get them later on
hostvars for example at the end of the playbook when I am adding nodes to
ELB for example. So it worked great etc.

This time around I had a constraint of having DBs, a mongo replicaset and
RDS all offline, So ansible controller was launched inside AWS. I could run
the same all-in-one playbook inside that new aws controller but I became
adept of re-usability. So I split the playbook into logical sub files and
only run the playbook that actually configures installs on nodes inside the
aws controller.

That said, since I am using ec2.py file for dynamic inventory, I would not
want to hard code anything line box private_dns_name for example  so I use
tag_Name_XXX to configure boxes with Name tags but have no clue how to get
the private ips of those nodes  in order to add them to the ELB.

for example:

- hosts: tag_Name_PersonalAppLiveD
  tasks:
  - name: get facts metadata
    action: ec2_facts
    register: app_facts_d

  - name: setting facts for  Personal AppLiveD for other playbooks component
    set_fact:
      app_facts_d: "{{ app_facts_d }}"  ## set facts so I can have info
about it in order to use below


- hosts: localhost
  connection: local
   - name: Putting Personal nodes under ELB
    ec2_elb:
      ec2_elbs: "{{ Personal_elb['name'] }}"
      region: "{{ Personal_vpc['vpc']['region'] }}"
      state: present
      wait: yes
      wait_timeout: 400
      instance_id: "{{ item }}"
    with_items:
   - "{{
hostvars['tag_Name_PersonalAppLiveB']['app_facts_b']['ansible_facts']['ansible_ec2_ami_id']
}}"
    - "{{
hostvars['tag_Name_PersonalAppLiveC']['app_facts_c']['ansible_facts']['ansible_ec2_ami_id']
}}"
    - "{{
hostvars['tag_Name_PersonalAppLiveD']['app_facts_d']['ansible_facts']['ansible_ec2_ami_id']
}}"



Full snippet is available at pastebin.com <http://pastebin.com/RE8ZKZv9>
but from this example, you would notice that I am treating tag name as host
which should not be the case (got this understanding on the IRC chat)
wanted to try use groupvars but I got stuck as I don't know how to use it
without actual inventory files.

Basically I would be grateful if someone could shed some light on how to
get facts on these hosts groups we use "tag_Name" for in the playbook so I
can access them inside the ec2_elb module.

Best Regards,

-- 

blog: http://www.mycodingpains.com
linkedin: http://gh.linkedin.com/pub/joseph-djomeda/14/5b6/64b

-- 
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/CAKDXoa%2B4ohwK8qmeNVnPJm%3D5Hhhz%2BwO_ys%3DFCDfvJbhVEwrPYA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to