title: How can I structure my playbook to make more sense?
body: <p>Currently, I have the following playbook:</p>
  
  <pre><code>- hosts: "{{env}}_{{product}}"
    name: "tools"
    sudo: yes
    vars_prompt:
      product: "Which product would you like to deploy [all|proxy|query|rest]?"
      env: "Which environment should we deploy to [dev|qa|test|prod]?"
    roles:
      - { role: proxy, when: "product == 'all' or product == 'proxy'" }
      - { role: query, when: "product == 'all' or product == 'query'" }
      - { role: rest, when: "product == 'all' or product == 'rest'" }
  </code></pre>
  
  <p>All of my groups are stored in a single <code>./inventory/all</code> file, e.g.,:</p>
  
  <pre><code># -----------------------------------------------------------------------------------
  # --------------
  # ###  DEV  ### 
  # --------------
  # -----------------------------------------------------------------------------------
  
  [dev_all:children]
  dev_redis
  dev_query
  dev_rest
  dev_proxy
  
  [dev_redis]
  .hosts
  
  [dev_query]
  .hosts
  
  [dev_rest]
  .hosts
  
  [dev_proxy:children]
  dev_proxy-dc1
  dev_proxy-dc2
  dev_proxy-dc3
  
  [dev_proxy-dc1]
  .hosts
  
  [dev_proxy-dc2]
  .hosts
  
  [dev_proxy-dc3]
  .hosts
  
  
  # -----------------------------------------------------------------------------------
  # --------------
  # ###  PROD  ### 
  # --------------
  # -----------------------------------------------------------------------------------
  
  [prod_all:children]
  prod_redis
  prod_query
  prod_rest
  prod_proxy
  
  
  [prod_redis]
  .hosts
  
  [prod_query]
  .hosts
  
  [prod_rest]
  .hosts
  
  [prod_proxy:children]
  prod_proxy-dc1
  prod_proxy-dc2
  prod_proxy-dc3
  
  [prod_proxy-dc1]
  .hosts
  
  [prod_proxy-dc2]
  .hosts
  
  [prod_proxy-dc3]
  .hosts
  </code></pre>
  
  <p>I can't help but feel like I'm making this overly complex though. I'm trying to avoid requiring people to pass in tags or inventory files. But now I'm not sure what the best way to go about allowing deploys for things like <code>redis</code> hosts, which aren't really what we would consider a "product", but still requires it's own group since it's hosted on it's own set of hosts. I could just add it to the current list, <code>[all|proxy|query|rest|redis]</code>, but... it seems like there should be a way to specify <code>redis</code> <em>and</em> another <code>product</code>, but at the same time not requiring both... I don't know how though.</p>
  
  <p>I wanted to have something where you could say </p>
  
  <blockquote>
    <p>"I want to deploy <code>proxy</code> to <code>dev</code>, and let's update <code>redis</code> while we're at it" </p>
  </blockquote>
  
  <p>-- is this possible with my current setup?</p>