Hi,

I am trying to figure out how to use wait_for to start to detect ssh on a 
VPC host that needs to use 2 tunnels to be reached.  I cannot use the IP 
address as it collides with my local network.  DNS also doesn't work but my 
tunnels work fine.  I'm using SOCKs because I use a browser to access the 
VPC too.

Here is my setup in pictograph:

Dev -> bastion.Prod -> Bastion.AWS -> VPC/internal

There is ONLY ssh available via Dev & bastion.Prod, hence SOCKs tunnel1 for 
the rest of *.example.com hosts.  Bastion.AWS can only be reached via Prod 
via SSH hence a 2nd SOCKS tunnel.  Bastion.AWS can only reach VPC via ssh. 
 10.0.0.0/24 is the bastion subnet. 10.0.1.0/24 is the internal subnet. 
 I'm launching instances into VPC/10.0.1.0

I use Host namespaces in .ssh/config (which are generally NOT dns 
resolvable from Dev) to decide the tunnel to use.
 
I can only reach bastion.example.com directly and by it's resolvable dns 
name - the only dns resolvable name.

My tunnel works as follows:

Host *.example.com 
        ProxyCommand nc -x localhost:1080 %h %p
Host ec2
        ServerAliveInterval 50
        DynamicForward localhost:1090
        User ec2-user
        ProxyCommand nc -x localhost:1080 54.165.xx.yy 22

Host ip-10-0-1-*.ec2.internal 
        ProxyCommand nc -x localhost:1090 %h %p 
        User ubuntu 
        IdentityFile /home/me/.ssh/soc-proto-internal.pem
# bastion
Host ip-10-0-0-*.ec2.internal
        ProxyCommand nc -x localhost:1090 %h %p
        User ec2-user
        IdentityFile /home/fortescu/.ssh/soc-proto-useast1.pem



tunnel1:

dev # ssh -vvv -D 1080 -N -q  [email protected]

OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

tunnel2:

dev # ssh ec2

Amazon Linux version 2015.03 is available.

[ec2-user@ip-10-0-0-188 ~]$ 

Now, from Dev the following works fine:
dev # ssh ip-10.0.1.32

Last login: Tue Jun  2 19:15:07 2015 from ip-10-0-0-188.ec2.internal

ubuntu@ip-10-0-1-32:~$ 

So how can I get this to work with wait_for?!  The 'private_dns_name' emits 
and is in the tmp wait_for python script so it's got the right form.  I can 
even grab the that same address while waiting on wait_for and ssh into it!
Here's the relevant ansible play:


   - name: Launch Opscenter instances

      ec2:

         key_name: "{{ key_name }}"

         group_id: "{{ security_group }}"

         instance_type: "{{ instance_type }}"

         image: "{{ image }}"

         wait: true

         region: "{{ region }}"

         vpc_subnet_id: "{{ subnet_id }}"

         assign_public_ip: no

         ebs_optimized: no

         instance_tags:

           Name: "cassandra_opscenter"

           dbtype: cassandra


      register: ec2


    - name: Logging 

      debug: msg="{{ item }}"

      with_items: ec2.instances


    - name: Add new instance to host group

      add_host: hostname={{ item['private_dns_name'] }} ansible_ssh_host={{ 
item['private_dns_name'] }} groups=launched,opscenter_nodes

      with_items: ec2.instances


    - name: Wait for SSH to come up

      local_action: wait_for port=22 host="{{ item['private_dns_name'] }}" 
search_regex=OpenSSH delay=10

      with_items: ec2.instances
I know I must be missing something obvious but it seems like wait_for is 
stubborning trying to use DNS (which will fail) instead of .ssh/config.

Am I chasing a unicorn here?  Can this be made to work?

Any and all advice deeply appreciated.

Chris

-- 
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/bef08c76-7742-49cb-816e-14dd1e5b1794%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to