title: Problem with Ansible EC2 dynamic inventory
body: <p>I am trying to use ansible dynamic inventory.</p>
  
  <p>I am getting the results when I run, </p>
  
  <pre><code> $ ./ec2.py --list
   ...
   ...
  
     "ec2": [
       "xx.xx.xx.xx"
    ]
   }
  </code></pre>
  
  <p>But when I try to run it with ansible command, it does not run successfully.</p>
  
  <pre><code>$ ansible -i ec2.py -e "ansible_ssh_port=3003" -m ping
  
  Usage: ansible &lt;host-pattern&gt; [options]
  
  Define and run a single task 'playbook' against a set of hosts
  
  Options:
    -a MODULE_ARGS, --args=MODULE_ARGS
                          module arguments
    --ask-vault-pass      ask for vault password
    -B SECONDS, --background=SECONDS
                          run asynchronously, failing after X seconds
                          (default=N/A)
    -C, --check           don't make any changes; instead, try to predict some
                          of the changes that may occur
    -D, --diff            when changing (small) files and templates, show the
                          differences in those files; works great with --check
    -e EXTRA_VARS, --extra-vars=EXTRA_VARS
                          set additional variables as key=value or YAML/JSON, if
                          filename prepend with @
    -f FORKS, --forks=FORKS
                          specify number of parallel processes to use
                          (default=5)
    -h, --help            show this help message and exit
    -i INVENTORY, --inventory=INVENTORY, --inventory-file=INVENTORY
                          specify inventory host path or comma separated host
                          list. --inventory-file is deprecated
    -l SUBSET, --limit=SUBSET
                          further limit selected hosts to an additional pattern
    --list-hosts          outputs a list of matching hosts; does not execute
                          anything else
    -m MODULE_NAME, --module-name=MODULE_NAME
                          module name to execute (default=command)
    -M MODULE_PATH, --module-path=MODULE_PATH
                          prepend colon-separated path(s) to module library (def
                          ault=['/Users/luvpreetsingh/.ansible/plugins/modules',
                          '/usr/share/ansible/plugins/modules'])
    -o, --one-line        condense output
    --playbook-dir=BASEDIR
                          Since this tool does not use playbooks, use this as a
                          subsitute playbook directory.This sets the relative
                          path for many features including roles/ group_vars/
                          etc.
    -P POLL_INTERVAL, --poll=POLL_INTERVAL
                          set the poll interval if using -B (default=15)
    --syntax-check        perform a syntax check on the playbook, but do not
                          execute it
    -t TREE, --tree=TREE  log output to this directory
    --vault-id=VAULT_IDS  the vault identity to use
    --vault-password-file=VAULT_PASSWORD_FILES
                          vault password file
    -v, --verbose         verbose mode (-vvv for more, -vvvv to enable
                          connection debugging)
    --version             show program's version number and exit
  
    Connection Options:
      control as whom and how to connect to hosts
  
      -k, --ask-pass      ask for connection password
      --private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE
                          use this file to authenticate the connection
      -u REMOTE_USER, --user=REMOTE_USER
                          connect as this user (default=None)
      -c CONNECTION, --connection=CONNECTION
                          connection type to use (default=smart)
      -T TIMEOUT, --timeout=TIMEOUT
                          override the connection timeout in seconds
                          (default=10)
      --ssh-common-args=SSH_COMMON_ARGS
                          specify common arguments to pass to sftp/scp/ssh (e.g.
                          ProxyCommand)
      --sftp-extra-args=SFTP_EXTRA_ARGS
                          specify extra arguments to pass to sftp only (e.g. -f,
                          -l)
      --scp-extra-args=SCP_EXTRA_ARGS
                          specify extra arguments to pass to scp only (e.g. -l)
      --ssh-extra-args=SSH_EXTRA_ARGS
                          specify extra arguments to pass to ssh only (e.g. -R)
  
    Privilege Escalation Options:
      control how and which user you become as on target hosts
  
      -s, --sudo          run operations with sudo (nopasswd) (deprecated, use
                          become)
      -U SUDO_USER, --sudo-user=SUDO_USER
                          desired sudo user (default=root) (deprecated, use
                          become)
      -S, --su            run operations with su (deprecated, use become)
      -R SU_USER, --su-user=SU_USER
                          run operations with su as this user (default=None)
                          (deprecated, use become)
      -b, --become        run operations with become (does not imply password
                          prompting)
      --become-method=BECOME_METHOD
                          privilege escalation method to use (default=sudo),
                          valid choices: [ sudo | su | pbrun | pfexec | doas |
                          dzdo | ksu | runas | pmrun | enable ]
      --become-user=BECOME_USER
                          run operations as this user (default=root)
      --ask-sudo-pass     ask for sudo password (deprecated, use become)
      --ask-su-pass       ask for su password (deprecated, use become)
      -K, --ask-become-pass
                          ask for privilege escalation password
  
  Some modules do not make sense in Ad-Hoc (include, meta, etc)
  ERROR! Missing target hosts
  </code></pre>
  
  <p>I get this long statement with the error of missing target hosts.</p>
  
  <p>Then, when I run by specifying the region, it does not give any error but does not return any instances.</p>
  
  <pre><code>$ ansible -i ec2.py us-west-2 -e "ansible_ssh_port=3003" -m ping
   [WARNING]: Could not match supplied host pattern, ignoring: us-west-2
  
   [WARNING]: No hosts matched, nothing to do
  </code></pre>
  
  <p>Firstly, why is it not running? what am I doing wrong?</p>
  
  <p>Secondly, why do the error changes when I specify the region? Is specifying region mandatory? shouldn't it pick the region from <code>ec2.ini</code>?</p>