summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/gathering_facts/test_gathering_facts.yml
diff options
context:
space:
mode:
Diffstat (limited to 'test/integration/targets/gathering_facts/test_gathering_facts.yml')
-rw-r--r--test/integration/targets/gathering_facts/test_gathering_facts.yml536
1 files changed, 536 insertions, 0 deletions
diff --git a/test/integration/targets/gathering_facts/test_gathering_facts.yml b/test/integration/targets/gathering_facts/test_gathering_facts.yml
new file mode 100644
index 0000000..47027e8
--- /dev/null
+++ b/test/integration/targets/gathering_facts/test_gathering_facts.yml
@@ -0,0 +1,536 @@
+---
+- hosts: facthost7
+ tags: [ 'fact_negation' ]
+ connection: local
+ gather_subset: "!hardware"
+ gather_facts: no
+ tasks:
+ - name: setup with not hardware
+ setup:
+ gather_subset:
+ - "!hardware"
+ register: not_hardware_facts
+
+- name: min and network test for platform added
+ hosts: facthost21
+ tags: [ 'fact_network' ]
+ connection: local
+ gather_subset: ["!all", "network"]
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving network facts works and gets prereqs from platform and distribution
+ assert:
+ that:
+ - 'ansible_default_ipv4|default("UNDEF") != "UNDEF"'
+ - 'ansible_interfaces|default("UNDEF") != "UNDEF"'
+ # these are true for linux, but maybe not for other os
+ - 'ansible_system|default("UNDEF") != "UNDEF"'
+ - 'ansible_distribution|default("UNDEF") != "UNDEF"'
+ # we dont really require these but they are in the min set
+ # - 'ansible_virtualization_role|default("UNDEF") == "UNDEF"'
+ # - 'ansible_user_id|default("UNDEF") == "UNDEF"'
+ # - 'ansible_env|default("UNDEF") == "UNDEF"'
+ # - 'ansible_selinux|default("UNDEF") == "UNDEF"'
+ # - 'ansible_pkg_mgr|default("UNDEF") == "UNDEF"'
+
+- name: min and hardware test for platform added
+ hosts: facthost22
+ tags: [ 'fact_hardware' ]
+ connection: local
+ gather_subset: "hardware"
+ gather_facts: yes
+ tasks:
+ - name: debug stuff
+ debug:
+ var: hostvars['facthost22']
+ # we should also collect platform, but not distribution
+ - name: Test that retrieving hardware facts works and gets prereqs from platform and distribution
+ when: ansible_system|default("UNDEF") == "Linux"
+ assert:
+ # LinuxHardwareCollector requires 'platform' facts
+ that:
+ - 'ansible_memory_mb|default("UNDEF") != "UNDEF"'
+ - 'ansible_default_ipv4|default("UNDEF") == "UNDEF"'
+ - 'ansible_interfaces|default("UNDEF") == "UNDEF"'
+ # these are true for linux, but maybe not for other os
+ # hardware requires 'platform'
+ - 'ansible_system|default("UNDEF") != "UNDEF"'
+ - 'ansible_machine|default("UNDEF") != "UNDEF"'
+ # hardware does not require 'distribution' but it is min set
+ # - 'ansible_distribution|default("UNDEF") == "UNDEF"'
+ # we dont really require these but they are in the min set
+ # - 'ansible_virtualization_role|default("UNDEF") == "UNDEF"'
+ # - 'ansible_user_id|default("UNDEF") == "UNDEF"'
+ # - 'ansible_env|default("UNDEF") == "UNDEF"'
+ # - 'ansible_selinux|default("UNDEF") == "UNDEF"'
+ # - 'ansible_pkg_mgr|default("UNDEF") == "UNDEF"'
+
+- name: min and service_mgr test for platform added
+ hosts: facthost23
+ tags: [ 'fact_service_mgr' ]
+ connection: local
+ gather_subset: ["!all", "service_mgr"]
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving service_mgr facts works and gets prereqs from platform and distribution
+ assert:
+ that:
+ - 'ansible_service_mgr|default("UNDEF") != "UNDEF"'
+ - 'ansible_default_ipv4|default("UNDEF") == "UNDEF"'
+ - 'ansible_interfaces|default("UNDEF") == "UNDEF"'
+ # these are true for linux, but maybe not for other os
+ - 'ansible_system|default("UNDEF") != "UNDEF"'
+ - 'ansible_distribution|default("UNDEF") != "UNDEF"'
+ # we dont really require these but they are in the min set
+ # - 'ansible_virtualization_role|default("UNDEF") == "UNDEF"'
+ # - 'ansible_user_id|default("UNDEF") == "UNDEF"'
+ # - 'ansible_env|default("UNDEF") == "UNDEF"'
+ # - 'ansible_selinux|default("UNDEF") == "UNDEF"'
+ # - 'ansible_pkg_mgr|default("UNDEF") == "UNDEF"'
+
+- hosts: facthost0
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_subset: "all"
+ gather_facts: yes
+ tasks:
+ #- setup:
+ # register: facts
+ - name: Test that retrieving all facts works
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") != "UNDEF_MOUNT" or ansible_distribution == "MacOSX"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+- hosts: facthost1
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - name: Test that we can retrieve the loadavg fact
+ setup:
+ filter: "ansible_loadavg"
+
+ - name: Test the contents of the loadavg fact
+ assert:
+ that:
+ - 'ansible_loadavg|default("UNDEF_ENV") != "UNDEF_ENV"'
+ - '"1m" in ansible_loadavg and ansible_loadavg["1m"] is float'
+ - '"5m" in ansible_loadavg and ansible_loadavg["5m"] is float'
+ - '"15m" in ansible_loadavg and ansible_loadavg["15m"] is float'
+
+- hosts: facthost19
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - setup:
+ filter: "*env*"
+ # register: fact_results
+
+ - name: Test that retrieving all facts filtered to env works
+ assert:
+ that:
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+ - 'ansible_env|default("UNDEF_ENV") != "UNDEF_ENV"'
+
+- hosts: facthost24
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - setup:
+ filter:
+ - "*env*"
+ - "*virt*"
+
+ - name: Test that retrieving all facts filtered to env and virt works
+ assert:
+ that:
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+ - 'ansible_env|default("UNDEF_ENV") != "UNDEF_ENV"'
+
+- hosts: facthost25
+ tags: [ 'fact_min' ]
+ gather_facts: no
+ tasks:
+ - setup:
+ filter:
+ - "date_time"
+
+ - name: Test that retrieving all facts filtered to date_time even w/o using ansible_ prefix
+ assert:
+ that:
+ - 'ansible_facts["date_time"]|default("UNDEF_MOUNT") != "UNDEF_MOUNT"'
+ - 'ansible_date_time|default("UNDEF_MOUNT") != "UNDEF_MOUNT"'
+
+- hosts: facthost26
+ tags: [ 'fact_min' ]
+ gather_facts: no
+ tasks:
+ - setup:
+ filter:
+ - "ansible_date_time"
+
+ - name: Test that retrieving all facts filtered to date_time even using ansible_ prefix
+ assert:
+ that:
+ - 'ansible_facts["date_time"]|default("UNDEF_MOUNT") != "UNDEF_MOUNT"'
+ - 'ansible_date_time|default("UNDEF_MOUNT") != "UNDEF_MOUNT"'
+
+- hosts: facthost13
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - setup:
+ filter: "ansible_user_id"
+ # register: fact_results
+
+ - name: Test that retrieving all facts filtered to specific fact ansible_user_id works
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_USER") != "UNDEF_USER"'
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+ - 'ansible_env|default("UNDEF_ENV") == "UNDEF_ENV"'
+ - 'ansible_pkg_mgr|default("UNDEF_PKG_MGR") == "UNDEF_PKG_MGR"'
+
+- hosts: facthost11
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - setup:
+ filter: "*"
+ # register: fact_results
+
+ - name: Test that retrieving all facts filtered to splat
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") != "UNDEF_MOUNT" or ansible_distribution == "MacOSX"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+- hosts: facthost12
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_facts: no
+ tasks:
+ - setup:
+ filter: ""
+ # register: fact_results
+
+ - name: Test that retrieving all facts filtered to empty filter_spec works
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") != "UNDEF_MOUNT" or ansible_distribution == "MacOSX"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+- hosts: facthost1
+ tags: [ 'fact_min' ]
+ connection: local
+ gather_subset: "!all"
+ gather_facts: yes
+ tasks:
+ - name: Test that only retrieving minimal facts work
+ assert:
+ that:
+ # from the min set, which should still collect
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_env|default("UNDEF_ENV") != "UNDEF_ENV"'
+ # non min facts that are not collected
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+
+- hosts: facthost2
+ tags: [ 'fact_network' ]
+ connection: local
+ gather_subset: ["!all", "!min", "network"]
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving network facts work
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF") == "UNDEF"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF") == "UNDEF"'
+ - 'ansible_virtualization_role|default("UNDEF") == "UNDEF"'
+
+- hosts: facthost3
+ tags: [ 'fact_hardware' ]
+ connection: local
+ gather_subset: "hardware"
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving hardware facts work
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") != "UNDEF_MOUNT" or ansible_distribution == "MacOSX"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+
+- hosts: facthost4
+ tags: [ 'fact_virtual' ]
+ connection: local
+ gather_subset: "virtual"
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving virtualization facts work
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+- hosts: facthost5
+ tags: [ 'fact_comma_string' ]
+ connection: local
+ gather_subset: ["virtual", "network"]
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving virtualization and network as a string works
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+- hosts: facthost6
+ tags: [ 'fact_yaml_list' ]
+ connection: local
+ gather_subset:
+ - virtual
+ - network
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving virtualization and network as a string works
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") != "UNDEF_VIRT"'
+
+
+- hosts: facthost7
+ tags: [ 'fact_negation' ]
+ connection: local
+ gather_subset: "!hardware"
+ gather_facts: yes
+ tasks:
+ - name: Test that negation of fact subsets work
+ assert:
+ that:
+ # network, not collected since it is not in min
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ # not collecting virt, should be undef
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+ # mounts/devices are collected by hardware, so should be not collected and undef
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_devices|default("UNDEF_DEVICES") == "UNDEF_DEVICES"'
+ # from the min set, which should still collect
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_env|default("UNDEF_ENV") != "UNDEF_ENV"'
+
+- hosts: facthost8
+ tags: [ 'fact_mixed_negation_addition' ]
+ connection: local
+ gather_subset: ["!hardware", "network"]
+ gather_facts: yes
+ tasks:
+ - name: Test that negation and additional subsets work together
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+
+- hosts: facthost14
+ tags: [ 'fact_mixed_negation_addition_min' ]
+ connection: local
+ gather_subset: ["!all", "!min", "network"]
+ gather_facts: yes
+ tasks:
+ - name: Test that negation and additional subsets work together for min subset
+ assert:
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") == "UNDEF_MIN"'
+ - 'ansible_interfaces|default("UNDEF_NET") != "UNDEF_NET"'
+ - 'ansible_default_ipv4|default("UNDEF_DEFAULT_IPV4") != "UNDEF_DEFAULT_IPV4"'
+ - 'ansible_all_ipv4_addresses|default("UNDEF_ALL_IPV4") != "UNDEF_ALL_IPV4"'
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+ - 'ansible_env|default("UNDEF_ENV") == "UNDEF_ENV"'
+
+- hosts: facthost15
+ tags: [ 'fact_negate_all_min_add_pkg_mgr' ]
+ connection: local
+ gather_subset: ["!all", "!min", "pkg_mgr"]
+ gather_facts: yes
+ tasks:
+ - name: Test that negation and additional subsets work together for min subset
+ assert:
+ that:
+ # network, not collected since it is not in min
+ - 'ansible_interfaces|default("UNDEF_NET") == "UNDEF_NET"'
+ # not collecting virt, should be undef
+ - 'ansible_virtualization_role|default("UNDEF_VIRT") == "UNDEF_VIRT"'
+ # mounts/devices are collected by hardware, so should be not collected and undef
+ - 'ansible_mounts|default("UNDEF_MOUNT") == "UNDEF_MOUNT"'
+ - 'ansible_devices|default("UNDEF_DEVICES") == "UNDEF_DEVICES"'
+ # from the min set, which should not collect
+ - 'ansible_user_id|default("UNDEF_MIN") == "UNDEF_MIN"'
+ - 'ansible_env|default("UNDEF_ENV") == "UNDEF_ENV"'
+ # the pkg_mgr fact we requested explicitly
+ - 'ansible_pkg_mgr|default("UNDEF_PKG_MGR") != "UNDEF_PKG_MGR"'
+
+
+- hosts: facthost9
+ tags: [ 'fact_local']
+ connection: local
+ gather_facts: no
+ tasks:
+ - name: Create fact directories
+ become: true
+ with_items:
+ - /etc/ansible/facts.d
+ - /tmp/custom_facts.d
+ file:
+ state: directory
+ path: "{{ item }}"
+ mode: '0777'
+ - name: Deploy local facts
+ with_items:
+ - path: /etc/ansible/facts.d/testfact.fact
+ content: '{ "fact_dir": "default" }'
+ - path: /tmp/custom_facts.d/testfact.fact
+ content: '{ "fact_dir": "custom" }'
+ copy:
+ dest: "{{ item.path }}"
+ content: "{{ item.content }}"
+
+- hosts: facthost9
+ tags: [ 'fact_local']
+ connection: local
+ gather_facts: yes
+ tasks:
+ - name: Test reading facts from default fact_path
+ assert:
+ that:
+ - '"{{ ansible_local.testfact.fact_dir }}" == "default"'
+
+- hosts: facthost9
+ tags: [ 'fact_local']
+ connection: local
+ gather_facts: yes
+ fact_path: /tmp/custom_facts.d
+ tasks:
+ - name: Test reading facts from custom fact_path
+ assert:
+ that:
+ - '"{{ ansible_local.testfact.fact_dir }}" == "custom"'
+
+- hosts: facthost20
+ tags: [ 'fact_facter_ohai' ]
+ connection: local
+ gather_subset:
+ - facter
+ - ohai
+ gather_facts: yes
+ tasks:
+ - name: Test that retrieving facter and ohai doesnt fail
+ assert:
+ # not much to assert here, aside from not crashing, since test images dont have
+ # facter/ohai
+ that:
+ - 'ansible_user_id|default("UNDEF_MIN") != "UNDEF_MIN"'
+
+- hosts: facthost9
+ tags: [ 'fact_file_utils' ]
+ connection: local
+ gather_facts: false
+ tasks:
+ - block:
+ - name: Ensure get_file_content works when strip=False
+ file_utils:
+ test: strip
+
+ - assert:
+ that:
+ - ansible_facts.get('etc_passwd_newlines', 0) + 1 == ansible_facts.get('etc_passwd_newlines_unstripped', 0)
+
+ - name: Make an empty file
+ file:
+ path: "{{ output_dir }}/empty_file"
+ state: touch
+
+ - name: Ensure get_file_content gives default when file is empty
+ file_utils:
+ test: default
+ touch_file: "{{ output_dir }}/empty_file"
+
+ - assert:
+ that:
+ - ansible_facts.get('touch_default') == 'i am a default'
+
+ - copy:
+ dest: "{{ output_dir }}/1charsep"
+ content: "foo:bar:baz:buzz:"
+
+ - copy:
+ dest: "{{ output_dir }}/2charsep"
+ content: "foo::bar::baz::buzz::"
+
+ - name: Ensure get_file_lines works as expected with specified 1-char line_sep
+ file_utils:
+ test: line_sep
+ line_sep_file: "{{ output_dir }}/1charsep"
+ line_sep_sep: ":"
+
+ - assert:
+ that:
+ - ansible_facts.get('line_sep') == ['foo', 'bar', 'baz', 'buzz']
+
+ - name: Ensure get_file_lines works as expected with specified 1-char line_sep
+ file_utils:
+ test: line_sep
+ line_sep_file: "{{ output_dir }}/2charsep"
+ line_sep_sep: "::"
+
+ - assert:
+ that:
+ - ansible_facts.get('line_sep') == ['foo', 'bar', 'baz', 'buzz', '']
+
+ - name: Ensure get_mount_size fails gracefully
+ file_utils:
+ test: invalid_mountpoint
+
+ - assert:
+ that:
+ - ansible_facts['invalid_mountpoint']|length == 0
+
+ always:
+ - name: Remove test files
+ file:
+ path: "{{ item }}"
+ state: absent
+ with_items:
+ - "{{ output_dir }}/empty_file"
+ - "{{ output_dir }}/1charsep"
+ - "{{ output_dir }}/2charsep"