# EC2 dynamic inventory: SSH rules

**URL:** <https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416>\
**Category:** Ansible Project\
**Created:** [August 29, 2016, 9:33pm UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416 "2016-08-29T21:33:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Soren\_Olegnowicz](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@Soren\_Olegnowicz](https://forum.ansible.com/u/Soren_Olegnowicz)\
**Post date:** [August 29, 2016, 9:33pm UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/1 "2016-08-29T21:33:50Z")

</div>

Hey guys I need to connect to my ec2 instances in various ways using the ec2.ini provided. Right now my I can only get my ec2.ini to connect to my instances via their private or public IP alone, but I need to connect to some instances via their private IP and some via their public. Any suggestions for introducing logic to accomplish this?

---

<div class="post-metadata">

**Author:** ![Hagai\_Kariti](https://avatars.discourse-cdn.com/v4/letter/h/4491bb/32.png) [@Hagai\_Kariti](https://forum.ansible.com/u/Hagai_Kariti)\
**Post date:** [August 30, 2016, 9:21am UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/2 "2016-08-30T09:21:06Z")

</div>

You can set destination\_variable to public\_dns\_name in ec2.ini (I think this is the default). Amazon’s DNS servers resolve the public DNS name to the private IP when you’re inside AWS and to the public IP when you’re outside.

Does that help?

---

<div class="post-metadata">

**Author:** ![Soren\_Olegnowicz](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@Soren\_Olegnowicz](https://forum.ansible.com/u/Soren_Olegnowicz)\
**Post date:** [August 31, 2016, 2:09pm UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/3 "2016-08-31T14:09:45Z")

</div>

Unfortunately, this setting does not help. Perhaps I need to run Ansible from within Amazon instead of locally?

---

<div class="post-metadata">

**Author:** ![Hagai\_Kariti](https://avatars.discourse-cdn.com/v4/letter/h/4491bb/32.png) [@Hagai\_Kariti](https://forum.ansible.com/u/Hagai_Kariti)\
**Post date:** [August 31, 2016, 4:18pm UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/4 "2016-08-31T16:18:58Z")

</div>

Can you elaborate on what doesn’t work vs what you want?

---

<div class="post-metadata">

**Author:** ![Soren\_Olegnowicz](https://avatars.discourse-cdn.com/v4/letter/s/8491ac/32.png) [@Soren\_Olegnowicz](https://forum.ansible.com/u/Soren_Olegnowicz)\
**Post date:** [August 31, 2016, 8:22pm UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/5 "2016-08-31T20:22:36Z")

</div>

Sure!

Currently I run: " ansible all -m ping -i ec2.py "

With:

```auto
destination_variable = public_dns_name

```

---

<div class="post-metadata">

**Author:** ![Hagai\_Kariti](https://avatars.discourse-cdn.com/v4/letter/h/4491bb/32.png) [@Hagai\_Kariti](https://forum.ansible.com/u/Hagai_Kariti)\
**Post date:** [September 1, 2016, 6:30am UTC](https://forum.ansible.com/t/ec2-dynamic-inventory-ssh-rules/22416/6 "2016-09-01T06:30:31Z")

</div>

You can try setting it to public\_dns\_name. It should resolve to the private IP when you’re inside the vpc, and to the public IP when your outside.
