# TEST ANSIBLE COMMANDS/MODULES IN SECONDS -- BY RUNNING:
# ansible-playbook -i ansible_hosts test.yml --connection=local

- hosts: all
  become: yes    # Optional privilege escalation

  #vars_files:
  #  - roles/0-init/defaults/main.yml
  #  - vars/default_vars.yml
  #  - vars/{{ ansible_local.local_facts.os_ver }}.yml
  #  - /etc/iiab/local_vars.yml
  #  - /etc/iiab/iiab_state.yml

  #roles:
  #  - { role: 0-init }

  tasks:

  #- include_role:
  #    name: 0-init

  - debug:
      msg: "{{ 'changeme' | password_hash('sha512') }}"
      # msg: "{{ 'changeme' | password_hash('yescrypt') }}"    # crypt.crypt STILL doesn't support 'yescrypt' algorithm ?

  #- pause:

  - name: DOUBLE UP to escape single quotes... '"''"' e.g. iiab.ini descriptions for azuracast, captiveportal, mosquitto, munin, nodejs, osm-vector-maps, sshd
    debug:
      msg: '"''"'    # FAILS: '"\'"'

  - name: BACKSLASH to escape double quotes... "'\"'" e.g. cups/tasks/install.yml
    debug:
      msg: "'\"'"    # FAILS: "'""'"

  - name: a shows "VARIABLE IS NOT DEFINED!" -- whereas b (w/o whitespace) AND c (with space) AND d (with tab, STRICTLY DISALLOWED IN YAML BY ansible-core 2.11.6) showed null (without quotes!) -- whereas e (singlequotes) and f (doublequotes) show "" empty string
    set_fact:
      #a:	# Tabs NO LONGER ALLOWED, in strict YAML: https://stackoverflow.com/a/19976827
      b:
      c: # Space
      d: ''
      e: ""
      f: "3.10"      # zero preserved b/c AnsibleUnicode (i.e. string)
      g: +03.10      # plus sign & zeros dropped b/c float

  - debug:
      var: a                 # "VARIABLE IS NOT DEFINED!"
  - debug:
      var: a | type_debug    # AnsibleUndefined
  - debug:
      var: b                 # null
  - debug:
      var: b | type_debug    # NoneType
  - debug:
      var: c                 # null
  - debug:
      var: c | type_debug    # NoneType
  - debug:
      var: d                 # ""
  - debug:
      var: d | type_debug    # AnsibleUnicode
  - debug:
      var: e                 # ""
  - debug:
      var: e | type_debug    # AnsibleUnicode
  - debug:
      var: f                 # "3.10"
  - debug:
      var: f | type_debug    # AnsibleUnicode
  - debug:
      var: g                 # 3.1
  - debug:
      var: g | type_debug    # float

  - debug:
      var: ansible_local.local_facts    # SEE: /opt/iiab/iiab/scripts/local_facts.fact
  - debug:
      var: ansible_local.local_facts.os_ver

  # Since Ansible 2.7, avoid ansible_distribution: https://github.com/iiab/iiab/pull/3237
  # https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html#commonly-used-facts

  - debug:
      var: ansible_facts['distribution']                  # ansible_facts.distribution ?
  - debug:
      var: ansible_facts['os_family']                     # ansible_facts.os_family ?
  - debug:
      var: ansible_facts['distribution_major_version']    # ansible_facts.distribution_major_version ?
  - debug:
      var: ansible_architecture
  - debug:
      var: ansible_machine

  - command: dpkg --print-architecture
    register: cmd
  - debug:
      msg: "'dpkg --print-architecture' output: {{ cmd.stdout }}"

  - command: dpkg --print-foreign-architectures
    register: cmd
  - debug:
      msg: "'dpkg --print-foreign-architectures' output: {{ cmd.stdout }}"

  # TEST ANSIBLE COMMANDS/MODULES HERE!

