title: Ansible not gathering facts on tags
body: <p>I'm habituated to use <code>--tags</code> when I'm using <code>ansible-playbook</code> to filter what tasks will be executed.
  I recently switched from Ansible 2.7 to 2.9 (huge gap, eh ?).</p>
  <p>I was surprised ansible did not gathering facts exclusively when I'm using <code>--tags</code>. And I saw multiple similar cases closed in GitHub like <a href="https://github.com/ansible/ansible/issues/58867" rel="nofollow noreferrer">this one</a> or <a href="https://github.com/ansible/ansible/issues/48314" rel="nofollow noreferrer">this one</a>. It seems affects ansible since 2.8 version, but shown as resolved. Is anybody can confirm this behavior ? It seems happening from 2.8.</p>
  <p><strong>ANSIBLE VERSION</strong> :</p>
  <pre><code>ansible --version
  
  ansible 2.9.9.post0
    config file = None
    configured module search path = [u'/opt/ansible/ansible/library']
    ansible python module location = /opt/ansible/ansible/lib/ansible
    executable location = /opt/ansible/ansible/bin/ansible
    python version = 2.7.6 (default, Nov 13 2018, 12:45:42) [GCC 4.8.4]
  </code></pre>
  <p><strong>ANSIBLE CONFIG</strong> :</p>
  <pre><code>ansible-config dump --only-changed
  
  DEFAULT_MODULE_PATH(env: ANSIBLE_LIBRARY) = [u'/opt/ansible/ansible/library']
  </code></pre>
  <p><strong>STEPS TO REPRODUCE</strong> :</p>
  <p>playbook test.yml :</p>
  <pre><code>- name: First test
    hosts: localhost
    connection: local
    gather_facts: yes
    roles:
      - { role: test, tags: test }
    tags: first
  
  - name: Second test
    hosts: localhost
    connection: local
    gather_facts: yes
    roles:
      - { role: test, tags: test }
    tags: second
  </code></pre>
  <p>role : roles/test/tasks/main.yml</p>
  <pre><code>- debug:
      msg: System {{ inventory_hostname }} has uuid {{ ansible_product_uuid }}
  </code></pre>
  <h2><strong>Results</strong> :</h2>
  <pre><code>ansible-playbook test.yml --check
  </code></pre>
  <p>= No errors.</p>
  <hr />
  <pre><code>ansible-playbook test.yml --check --tags &quot;test&quot;
  </code></pre>
  <p>= failed: 1</p>
  <blockquote>
  <p>&quot;The task includes an option with an undefined variable. The error was: 'ansible_product_uuid' is undefined [...]&quot;</p>
  </blockquote>
  <p>And I can see on the output that facts are not gathered.</p>