# STDOUT: ---v---v---v---v---v--- ansible-playbook [core 2.17.2] config file = /etc/ansible/ansible.cfg configured module search path = ['/home/jenkins/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /opt/ansible-2.17/lib/python3.11/site-packages/ansible ansible collection location = /WORKDIR/git-weekly-ci4atxb1kq/.collection executable location = /opt/ansible-2.17/bin/ansible-playbook python version = 3.11.5 (main, Sep 7 2023, 00:00:00) [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)] (/opt/ansible-2.17/bin/python) jinja version = 3.1.4 libyaml = True Using /etc/ansible/ansible.cfg as config file Skipping callback 'debug', as we already have a stdout callback. Skipping callback 'default', as we already have a stdout callback. Skipping callback 'minimal', as we already have a stdout callback. Skipping callback 'oneline', as we already have a stdout callback. PLAYBOOK: tests_dns_ip_email.yml *********************************************** 2 plays in /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml PLAY [Issue certificate with dns, ip and email in SAN] ************************* TASK [Gathering Facts] ********************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:2 Saturday 10 August 2024 12:44:06 +0000 (0:00:00.021) 0:00:00.021 ******* ok: [sut] TASK [fedora.linux_system_roles.certificate : Set version specific variables] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:2 Saturday 10 August 2024 12:44:08 +0000 (0:00:01.917) 0:00:01.938 ******* included: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml for sut TASK [fedora.linux_system_roles.certificate : Ensure ansible_facts used by role] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:2 Saturday 10 August 2024 12:44:08 +0000 (0:00:00.011) 0:00:01.950 ******* skipping: [sut] => { "changed": false, "false_condition": "__certificate_required_facts | difference(ansible_facts.keys() | list) | length > 0", "skip_reason": "Conditional result was False" } TASK [fedora.linux_system_roles.certificate : Check if system is ostree] ******* task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:10 Saturday 10 August 2024 12:44:08 +0000 (0:00:00.011) 0:00:01.962 ******* ok: [sut] => { "changed": false, "stat": { "exists": false } } TASK [fedora.linux_system_roles.certificate : Set flag to indicate system is ostree] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:15 Saturday 10 August 2024 12:44:08 +0000 (0:00:00.237) 0:00:02.200 ******* ok: [sut] => { "ansible_facts": { "__certificate_is_ostree": false }, "changed": false } TASK [fedora.linux_system_roles.certificate : Set platform/version specific variables] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:19 Saturday 10 August 2024 12:44:08 +0000 (0:00:00.013) 0:00:02.213 ******* skipping: [sut] => (item=RedHat.yml) => { "ansible_loop_var": "item", "changed": false, "false_condition": "__vars_file is file", "item": "RedHat.yml", "skip_reason": "Conditional result was False" } skipping: [sut] => (item=CentOS.yml) => { "ansible_loop_var": "item", "changed": false, "false_condition": "__vars_file is file", "item": "CentOS.yml", "skip_reason": "Conditional result was False" } ok: [sut] => (item=CentOS_10.yml) => { "ansible_facts": { "__certificate_certmonger_packages": [ "certmonger", "python3-packaging" ] }, "ansible_included_var_files": [ "/WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/vars/CentOS_10.yml" ], "ansible_loop_var": "item", "changed": false, "item": "CentOS_10.yml" } ok: [sut] => (item=CentOS_10.yml) => { "ansible_facts": { "__certificate_certmonger_packages": [ "certmonger", "python3-packaging" ] }, "ansible_included_var_files": [ "/WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/vars/CentOS_10.yml" ], "ansible_loop_var": "item", "changed": false, "item": "CentOS_10.yml" } TASK [fedora.linux_system_roles.certificate : Ensure certificate role dependencies are installed] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:5 Saturday 10 August 2024 12:44:08 +0000 (0:00:00.024) 0:00:02.237 ******* changed: [sut] => { "changed": true, "rc": 0, "results": [ "Installed: python3-cffi-1.16.0-5.el10.x86_64", "Installed: python3-cryptography-41.0.7-2.el10.x86_64", "Installed: python3-ply-3.11-24.el10.noarch", "Installed: python3-pycparser-2.20-15.el10.noarch", "Installed: python3-pyasn1-0.5.1-4.el10.noarch" ] } lsrpackages: python3-cryptography python3-dbus python3-pyasn1 TASK [fedora.linux_system_roles.certificate : Ensure provider packages are installed] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:23 Saturday 10 August 2024 12:44:11 +0000 (0:00:02.379) 0:00:04.617 ******* changed: [sut] => (item=certmonger) => { "__certificate_provider": "certmonger", "ansible_loop_var": "__certificate_provider", "changed": true, "rc": 0, "results": [ "Installed: nss-softokn-3.101.0-6.el10.x86_64", "Installed: nss-softokn-freebl-3.101.0-6.el10.x86_64", "Installed: dbus-tools-1:1.14.10-4.el10.x86_64", "Installed: nss-sysinit-3.101.0-6.el10.x86_64", "Installed: certmonger-0.79.20-2.el10.x86_64", "Installed: nss-util-3.101.0-6.el10.x86_64", "Installed: python3-packaging-23.2-5.el10.noarch", "Installed: nspr-4.35.0-27.el10.x86_64", "Installed: nss-3.101.0-6.el10.x86_64" ] } lsrpackages: certmonger python3-packaging TASK [fedora.linux_system_roles.certificate : Ensure pre-scripts hooks directory exists] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:35 Saturday 10 August 2024 12:44:14 +0000 (0:00:03.264) 0:00:07.881 ******* changed: [sut] => (item=certmonger) => { "__certificate_provider": "certmonger", "ansible_loop_var": "__certificate_provider", "changed": true, "gid": 0, "group": "root", "mode": "0700", "owner": "root", "path": "/etc/certmonger//pre-scripts", "secontext": "unconfined_u:object_r:etc_t:s0", "size": 6, "state": "directory", "uid": 0 } TASK [fedora.linux_system_roles.certificate : Ensure post-scripts hooks directory exists] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:61 Saturday 10 August 2024 12:44:14 +0000 (0:00:00.285) 0:00:08.166 ******* changed: [sut] => (item=certmonger) => { "__certificate_provider": "certmonger", "ansible_loop_var": "__certificate_provider", "changed": true, "gid": 0, "group": "root", "mode": "0700", "owner": "root", "path": "/etc/certmonger//post-scripts", "secontext": "unconfined_u:object_r:etc_t:s0", "size": 6, "state": "directory", "uid": 0 } TASK [fedora.linux_system_roles.certificate : Ensure provider service is running] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:90 Saturday 10 August 2024 12:44:14 +0000 (0:00:00.211) 0:00:08.378 ******* changed: [sut] => (item=certmonger) => { "__certificate_provider": "certmonger", "ansible_loop_var": "__certificate_provider", "changed": true, "enabled": true, "name": "certmonger", "state": "started", "status": { "AccessSELinuxContext": "system_u:object_r:certmonger_unit_file_t:s0", "ActiveEnterTimestampMonotonic": "0", "ActiveExitTimestampMonotonic": "0", "ActiveState": "inactive", "After": "systemd-journald.socket system.slice sysinit.target basic.target dbus.socket network.target dbus-broker.service syslog.target", "AllowIsolate": "no", "AssertResult": "no", "AssertTimestampMonotonic": "0", "Before": "shutdown.target", "BlockIOAccounting": "no", "BlockIOWeight": "[not set]", "BusName": "org.fedorahosted.certmonger", "CPUAccounting": "yes", "CPUAffinityFromNUMA": "no", "CPUQuotaPerSecUSec": "infinity", "CPUQuotaPeriodUSec": "infinity", "CPUSchedulingPolicy": "0", "CPUSchedulingPriority": "0", "CPUSchedulingResetOnFork": "no", "CPUShares": "[not set]", "CPUUsageNSec": "[not set]", "CPUWeight": "[not set]", "CacheDirectoryMode": "0755", "CanFreeze": "yes", "CanIsolate": "no", "CanReload": "no", "CanStart": "yes", "CanStop": "yes", "CapabilityBoundingSet": "cap_chown cap_dac_override cap_dac_read_search cap_fowner cap_fsetid cap_kill cap_setgid cap_setuid cap_setpcap cap_linux_immutable cap_net_bind_service cap_net_broadcast cap_net_admin cap_net_raw cap_ipc_lock cap_ipc_owner cap_sys_module cap_sys_rawio cap_sys_chroot cap_sys_ptrace cap_sys_pacct cap_sys_admin cap_sys_boot cap_sys_nice cap_sys_resource cap_sys_time cap_sys_tty_config cap_mknod cap_lease cap_audit_write cap_audit_control cap_setfcap cap_mac_override cap_mac_admin cap_syslog cap_wake_alarm cap_block_suspend cap_audit_read cap_perfmon cap_bpf cap_checkpoint_restore", "CleanResult": "success", "CollectMode": "inactive", "ConditionResult": "no", "ConditionTimestampMonotonic": "0", "ConfigurationDirectoryMode": "0755", "Conflicts": "shutdown.target", "ControlGroupId": "0", "ControlPID": "0", "CoredumpFilter": "0x33", "CoredumpReceive": "no", "DefaultDependencies": "yes", "DefaultMemoryLow": "0", "DefaultMemoryMin": "0", "DefaultStartupMemoryLow": "0", "Delegate": "no", "Description": "Certificate monitoring and PKI enrollment", "DevicePolicy": "auto", "DynamicUser": "no", "EffectiveMemoryHigh": "3700928512", "EffectiveMemoryMax": "3700928512", "EffectiveTasksMax": "22402", "EnvironmentFiles": "/etc/sysconfig/certmonger (ignore_errors=yes)", "ExecMainCode": "0", "ExecMainExitTimestampMonotonic": "0", "ExecMainHandoffTimestampMonotonic": "0", "ExecMainPID": "0", "ExecMainStartTimestampMonotonic": "0", "ExecMainStatus": "0", "ExecStart": "{ path=/usr/sbin/certmonger ; argv[]=/usr/sbin/certmonger -S -p /run/certmonger.pid -n $OPTS ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "ExecStartEx": "{ path=/usr/sbin/certmonger ; argv[]=/usr/sbin/certmonger -S -p /run/certmonger.pid -n $OPTS ; flags= ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }", "ExitType": "main", "ExtensionImagePolicy": "root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent", "FailureAction": "none", "FileDescriptorStoreMax": "0", "FileDescriptorStorePreserve": "restart", "FinalKillSignal": "9", "FragmentPath": "/usr/lib/systemd/system/certmonger.service", "FreezerState": "running", "GID": "[not set]", "GuessMainPID": "yes", "IOAccounting": "no", "IOReadBytes": "[not set]", "IOReadOperations": "[not set]", "IOSchedulingClass": "2", "IOSchedulingPriority": "4", "IOWeight": "[not set]", "IOWriteBytes": "[not set]", "IOWriteOperations": "[not set]", "IPAccounting": "no", "IPEgressBytes": "[no data]", "IPEgressPackets": "[no data]", "IPIngressBytes": "[no data]", "IPIngressPackets": "[no data]", "Id": "certmonger.service", "IgnoreOnIsolate": "no", "IgnoreSIGPIPE": "yes", "InactiveEnterTimestampMonotonic": "0", "InactiveExitTimestampMonotonic": "0", "JobRunningTimeoutUSec": "infinity", "JobTimeoutAction": "none", "JobTimeoutUSec": "infinity", "KeyringMode": "private", "KillMode": "control-group", "KillSignal": "15", "LimitAS": "infinity", "LimitASSoft": "infinity", "LimitCORE": "infinity", "LimitCORESoft": "infinity", "LimitCPU": "infinity", "LimitCPUSoft": "infinity", "LimitDATA": "infinity", "LimitDATASoft": "infinity", "LimitFSIZE": "infinity", "LimitFSIZESoft": "infinity", "LimitLOCKS": "infinity", "LimitLOCKSSoft": "infinity", "LimitMEMLOCK": "8388608", "LimitMEMLOCKSoft": "8388608", "LimitMSGQUEUE": "819200", "LimitMSGQUEUESoft": "819200", "LimitNICE": "0", "LimitNICESoft": "0", "LimitNOFILE": "524288", "LimitNOFILESoft": "1024", "LimitNPROC": "14001", "LimitNPROCSoft": "14001", "LimitRSS": "infinity", "LimitRSSSoft": "infinity", "LimitRTPRIO": "0", "LimitRTPRIOSoft": "0", "LimitRTTIME": "infinity", "LimitRTTIMESoft": "infinity", "LimitSIGPENDING": "14001", "LimitSIGPENDINGSoft": "14001", "LimitSTACK": "infinity", "LimitSTACKSoft": "8388608", "LoadState": "loaded", "LockPersonality": "no", "LogLevelMax": "-1", "LogRateLimitBurst": "0", "LogRateLimitIntervalUSec": "0", "LogsDirectoryMode": "0755", "MainPID": "0", "ManagedOOMMemoryPressure": "auto", "ManagedOOMMemoryPressureLimit": "0", "ManagedOOMPreference": "none", "ManagedOOMSwap": "auto", "MemoryAccounting": "yes", "MemoryAvailable": "3317075968", "MemoryCurrent": "[not set]", "MemoryDenyWriteExecute": "no", "MemoryHigh": "infinity", "MemoryKSM": "no", "MemoryLimit": "infinity", "MemoryLow": "0", "MemoryMax": "infinity", "MemoryMin": "0", "MemoryPeak": "[not set]", "MemoryPressureThresholdUSec": "200ms", "MemoryPressureWatch": "auto", "MemorySwapCurrent": "[not set]", "MemorySwapMax": "infinity", "MemorySwapPeak": "[not set]", "MemoryZSwapCurrent": "[not set]", "MemoryZSwapMax": "infinity", "MemoryZSwapWriteback": "yes", "MountAPIVFS": "no", "MountImagePolicy": "root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent", "NFileDescriptorStore": "0", "NRestarts": "0", "NUMAPolicy": "n/a", "Names": "certmonger.service", "NeedDaemonReload": "no", "Nice": "0", "NoNewPrivileges": "no", "NonBlocking": "no", "NotifyAccess": "none", "OOMPolicy": "stop", "OOMScoreAdjust": "0", "OnFailureJobMode": "replace", "OnSuccessJobMode": "fail", "PIDFile": "/run/certmonger.pid", "PartOf": "dbus-broker.service", "Perpetual": "no", "PrivateDevices": "no", "PrivateIPC": "no", "PrivateMounts": "no", "PrivateNetwork": "no", "PrivateTmp": "no", "PrivateUsers": "no", "ProcSubset": "all", "ProtectClock": "no", "ProtectControlGroups": "no", "ProtectHome": "no", "ProtectHostname": "no", "ProtectKernelLogs": "no", "ProtectKernelModules": "no", "ProtectKernelTunables": "no", "ProtectProc": "default", "ProtectSystem": "no", "RefuseManualStart": "no", "RefuseManualStop": "no", "ReloadResult": "success", "ReloadSignal": "1", "RemainAfterExit": "no", "RemoveIPC": "no", "Requires": "sysinit.target dbus.socket system.slice", "Restart": "no", "RestartKillSignal": "15", "RestartMaxDelayUSec": "infinity", "RestartMode": "normal", "RestartSteps": "0", "RestartUSec": "100ms", "RestartUSecNext": "100ms", "RestrictNamespaces": "no", "RestrictRealtime": "no", "RestrictSUIDSGID": "no", "Result": "success", "RootDirectoryStartOnly": "no", "RootEphemeral": "no", "RootImagePolicy": "root=verity+signed+encrypted+unprotected+absent:usr=verity+signed+encrypted+unprotected+absent:home=encrypted+unprotected+absent:srv=encrypted+unprotected+absent:tmp=encrypted+unprotected+absent:var=encrypted+unprotected+absent", "RuntimeDirectoryMode": "0755", "RuntimeDirectoryPreserve": "no", "RuntimeMaxUSec": "infinity", "RuntimeRandomizedExtraUSec": "0", "SameProcessGroup": "no", "SecureBits": "0", "SendSIGHUP": "no", "SendSIGKILL": "yes", "SetLoginEnvironment": "no", "Slice": "system.slice", "StandardError": "inherit", "StandardInput": "null", "StandardOutput": "journal", "StartLimitAction": "none", "StartLimitBurst": "5", "StartLimitIntervalUSec": "10s", "StartupBlockIOWeight": "[not set]", "StartupCPUShares": "[not set]", "StartupCPUWeight": "[not set]", "StartupIOWeight": "[not set]", "StartupMemoryHigh": "infinity", "StartupMemoryLow": "0", "StartupMemoryMax": "infinity", "StartupMemorySwapMax": "infinity", "StartupMemoryZSwapMax": "infinity", "StateChangeTimestampMonotonic": "0", "StateDirectoryMode": "0755", "StatusErrno": "0", "StopWhenUnneeded": "no", "SubState": "dead", "SuccessAction": "none", "SurviveFinalKillSignal": "no", "SyslogFacility": "3", "SyslogLevel": "6", "SyslogLevelPrefix": "yes", "SyslogPriority": "30", "SystemCallErrorNumber": "2147483646", "TTYReset": "no", "TTYVHangup": "no", "TTYVTDisallocate": "no", "TasksAccounting": "yes", "TasksCurrent": "[not set]", "TasksMax": "22402", "TimeoutAbortUSec": "1min 30s", "TimeoutCleanUSec": "infinity", "TimeoutStartFailureMode": "terminate", "TimeoutStartUSec": "1min 30s", "TimeoutStopFailureMode": "terminate", "TimeoutStopUSec": "1min 30s", "TimerSlackNSec": "50000", "Transient": "no", "Type": "dbus", "UID": "[not set]", "UMask": "0022", "UnitFilePreset": "disabled", "UnitFileState": "disabled", "UtmpMode": "init", "WatchdogSignal": "6", "WatchdogTimestampMonotonic": "0", "WatchdogUSec": "infinity" } } TASK [fedora.linux_system_roles.certificate : Ensure certificate requests] ***** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:101 Saturday 10 August 2024 12:44:15 +0000 (0:00:00.740) 0:00:09.118 ******* changed: [sut] => (item={'name': 'mycert_dns_ip_email', 'common_name': 'My Certificate with SAN', 'dns': ['sub1.example.com', 'www.example.com', 'sub2.example.com', 'sub3.example.com'], 'ip': ['192.0.2.12', '198.51.100.65', '2001:db8::2:1'], 'email': ['sysadmin@example.com', 'support@example.com'], 'ca': 'self-sign'}) => { "ansible_loop_var": "item", "changed": true, "item": { "ca": "self-sign", "common_name": "My Certificate with SAN", "dns": [ "sub1.example.com", "www.example.com", "sub2.example.com", "sub3.example.com" ], "email": [ "sysadmin@example.com", "support@example.com" ], "ip": [ "192.0.2.12", "198.51.100.65", "2001:db8::2:1" ], "name": "mycert_dns_ip_email" } } MSG: Certificate requested (new). TASK [fedora.linux_system_roles.certificate : Slurp the contents of the files] *** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:152 Saturday 10 August 2024 12:44:16 +0000 (0:00:00.649) 0:00:09.768 ******* skipping: [sut] => (item=['cert', {'name': 'mycert_dns_ip_email', 'common_name': 'My Certificate with SAN', 'dns': ['sub1.example.com', 'www.example.com', 'sub2.example.com', 'sub3.example.com'], 'ip': ['192.0.2.12', '198.51.100.65', '2001:db8::2:1'], 'email': ['sysadmin@example.com', 'support@example.com'], 'ca': 'self-sign'}]) => { "ansible_loop_var": "item", "changed": false, "false_condition": "certificate_test_mode | d(false)", "item": [ "cert", { "ca": "self-sign", "common_name": "My Certificate with SAN", "dns": [ "sub1.example.com", "www.example.com", "sub2.example.com", "sub3.example.com" ], "email": [ "sysadmin@example.com", "support@example.com" ], "ip": [ "192.0.2.12", "198.51.100.65", "2001:db8::2:1" ], "name": "mycert_dns_ip_email" } ], "skip_reason": "Conditional result was False" } skipping: [sut] => (item=['key', {'name': 'mycert_dns_ip_email', 'common_name': 'My Certificate with SAN', 'dns': ['sub1.example.com', 'www.example.com', 'sub2.example.com', 'sub3.example.com'], 'ip': ['192.0.2.12', '198.51.100.65', '2001:db8::2:1'], 'email': ['sysadmin@example.com', 'support@example.com'], 'ca': 'self-sign'}]) => { "ansible_loop_var": "item", "changed": false, "false_condition": "certificate_test_mode | d(false)", "item": [ "key", { "ca": "self-sign", "common_name": "My Certificate with SAN", "dns": [ "sub1.example.com", "www.example.com", "sub2.example.com", "sub3.example.com" ], "email": [ "sysadmin@example.com", "support@example.com" ], "ip": [ "192.0.2.12", "198.51.100.65", "2001:db8::2:1" ], "name": "mycert_dns_ip_email" } ], "skip_reason": "Conditional result was False" } skipping: [sut] => (item=['ca', {'name': 'mycert_dns_ip_email', 'common_name': 'My Certificate with SAN', 'dns': ['sub1.example.com', 'www.example.com', 'sub2.example.com', 'sub3.example.com'], 'ip': ['192.0.2.12', '198.51.100.65', '2001:db8::2:1'], 'email': ['sysadmin@example.com', 'support@example.com'], 'ca': 'self-sign'}]) => { "ansible_loop_var": "item", "changed": false, "false_condition": "certificate_test_mode | d(false)", "item": [ "ca", { "ca": "self-sign", "common_name": "My Certificate with SAN", "dns": [ "sub1.example.com", "www.example.com", "sub2.example.com", "sub3.example.com" ], "email": [ "sysadmin@example.com", "support@example.com" ], "ip": [ "192.0.2.12", "198.51.100.65", "2001:db8::2:1" ], "name": "mycert_dns_ip_email" } ], "skip_reason": "Conditional result was False" } skipping: [sut] => { "changed": false } MSG: All items skipped TASK [fedora.linux_system_roles.certificate : Create return data] ************** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:160 Saturday 10 August 2024 12:44:16 +0000 (0:00:00.019) 0:00:09.788 ******* skipping: [sut] => { "changed": false, "false_condition": "certificate_test_mode | d(false)", "skip_reason": "Conditional result was False" } TASK [fedora.linux_system_roles.certificate : Stop tracking certificates] ****** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:176 Saturday 10 August 2024 12:44:16 +0000 (0:00:00.011) 0:00:09.799 ******* skipping: [sut] => { "changed": false, "false_condition": "certificate_test_mode | d(false)", "skip_reason": "Conditional result was False" } TASK [fedora.linux_system_roles.certificate : Remove files] ******************** task path: /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:181 Saturday 10 August 2024 12:44:16 +0000 (0:00:00.012) 0:00:09.811 ******* skipping: [sut] => { "changed": false, "false_condition": "certificate_test_mode | d(false)", "skip_reason": "Conditional result was False" } PLAY [Verify certificate] ****************************************************** TASK [Gathering Facts] ********************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:24 Saturday 10 August 2024 12:44:16 +0000 (0:00:00.023) 0:00:09.834 ******* ok: [sut] TASK [Verify each certificate] ************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:54 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.707) 0:00:10.542 ******* included: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml for sut => (item={'path': '/etc/pki/tls/certs/mycert_dns_ip_email.crt', 'key_path': '/etc/pki/tls/private/mycert_dns_ip_email.key', 'subject': [{'name': 'commonName', 'oid': '2.5.4.3', 'value': 'My Certificate with SAN'}], 'subject_alt_name': [{'name': 'DNS', 'value': 'sub1.example.com'}, {'name': 'DNS', 'value': 'www.example.com'}, {'name': 'DNS', 'value': 'sub2.example.com'}, {'name': 'DNS', 'value': 'sub3.example.com'}, {'name': 'email', 'value': 'sysadmin@example.com'}, {'name': 'email', 'value': 'support@example.com'}, {'name': 'IP Address', 'value': '192.0.2.12'}, {'name': 'IP Address', 'value': '198.51.100.65'}, {'name': 'IP Address', 'value': '2001:db8::2:1'}]}) TASK [Set virtualenv_path] ***************************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:2 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.017) 0:00:10.559 ******* ok: [sut] => { "ansible_facts": { "__virtualenv_path": "/tmp/certificate-tests-venv" }, "changed": false } TASK [Check if system is ostree] *********************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:9 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.007) 0:00:10.567 ******* skipping: [sut] => { "changed": false, "false_condition": "not __certificate_is_ostree is defined", "skip_reason": "Conditional result was False" } TASK [Set flag to indicate system is ostree] *********************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:14 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.010) 0:00:10.578 ******* skipping: [sut] => { "changed": false, "false_condition": "not __certificate_is_ostree is defined", "skip_reason": "Conditional result was False" } TASK [Ensure python3 is installed] ********************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:18 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.010) 0:00:10.588 ******* skipping: [sut] => { "changed": false, "false_condition": "ansible_distribution_major_version == \"7\"", "skip_reason": "Conditional result was False" } TASK [Ensure python3 is installed] ********************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:28 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.007) 0:00:10.596 ******* ok: [sut] => { "changed": false, "rc": 0, "results": [] } MSG: Nothing to do lsrpackages: python3-cryptography python3-pyasn1 TASK [Retrieve certificate file stats] ***************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:38 Saturday 10 August 2024 12:44:17 +0000 (0:00:00.698) 0:00:11.294 ******* ok: [sut] => { "changed": false, "stat": { "atime": 1723293856.1998637, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 8, "charset": "us-ascii", "checksum": "5a52b2165aacc0248ded7c98a463677bc336d7a8", "ctime": 1723293856.1978636, "dev": 51714, "device_type": 0, "executable": false, "exists": true, "gid": 0, "gr_name": "root", "inode": 6364285, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": false, "isreg": true, "issock": false, "isuid": false, "mimetype": "text/plain", "mode": "0600", "mtime": 1723293856.1978636, "nlink": 1, "path": "/etc/pki/tls/certs/mycert_dns_ip_email.crt", "pw_name": "root", "readable": true, "rgrp": false, "roth": false, "rusr": true, "size": 1484, "uid": 0, "version": "3823754649", "wgrp": false, "woth": false, "writeable": true, "wusr": true, "xgrp": false, "xoth": false, "xusr": false } } TASK [Verify if certificate file exists] *************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:43 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.202) 0:00:11.496 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify certificate file owner and group] ********************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:49 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.012) 0:00:11.508 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify certificate permissions] ****************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:59 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.017) 0:00:11.525 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Retrieve key file stats] ************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:65 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.014) 0:00:11.539 ******* ok: [sut] => { "changed": false, "stat": { "atime": 1723293856.1318638, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 8, "charset": "us-ascii", "checksum": "d468f641207d39be47e05029fd5e7efebee8be3f", "ctime": 1723293856.1978636, "dev": 51714, "device_type": 0, "executable": false, "exists": true, "gid": 0, "gr_name": "root", "inode": 4829208, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": false, "isreg": true, "issock": false, "isuid": false, "mimetype": "text/plain", "mode": "0600", "mtime": 1723293856.1978636, "nlink": 1, "path": "/etc/pki/tls/private/mycert_dns_ip_email.key", "pw_name": "root", "readable": true, "rgrp": false, "roth": false, "rusr": true, "size": 1704, "uid": 0, "version": "3623014494", "wgrp": false, "woth": false, "writeable": true, "wusr": true, "xgrp": false, "xoth": false, "xusr": false } } TASK [Verify if key file exists] *********************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:70 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.202) 0:00:11.741 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify key file owner and group] ***************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:76 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.010) 0:00:11.752 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Parse certificate] ******************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:86 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.015) 0:00:11.768 ******* ok: [sut] => { "certificate": { "extensions": { "authorityKeyIdentifier": { "critical": false, "value": "F7:C1:7B:3E:55:B7:2A:10:81:40:2F:9A:48:DF:FB:2B:15:2E:04:6B" }, "basicConstraints": { "critical": true, "value": { "ca": false } }, "extendedKeyUsage": { "critical": false, "value": [ { "name": "id-kp-serverAuth", "oid": "1.3.6.1.5.5.7.3.1" }, { "name": "id-kp-clientAuth", "oid": "1.3.6.1.5.5.7.3.2" } ] }, "keyUsage": { "critical": false, "value": [ "digital_signature", "key_encipherment" ] }, "subjectAltName": { "critical": false, "value": [ { "name": "DNS", "value": "sub1.example.com" }, { "name": "DNS", "value": "www.example.com" }, { "name": "DNS", "value": "sub2.example.com" }, { "name": "DNS", "value": "sub3.example.com" }, { "name": "email", "value": "sysadmin@example.com" }, { "name": "email", "value": "support@example.com" }, { "name": "IP Address", "value": "192.0.2.12" }, { "name": "IP Address", "value": "198.51.100.65" }, { "name": "IP Address", "value": "2001:db8::2:1" } ] }, "subjectKeyIdentifier": { "critical": false, "value": "75:1A:E2:07:40:8E:AA:50:DB:26:56:F5:40:BF:03:5D:28:D9:F8:79" } }, "key_size": 2048, "signature_algorithm": { "algorithm": "sha256WithRSAEncryption", "signature": "85:86:5B:49:2F:0F:42:C7:E3:9B:9D:9F:6D:70:79:72:91:F1:75:D3:AC:51:73:74:E0:BD:A3:D1:55:69:66:F1:AC:CF:81:3A:CE:06:EC:F4:40:2D:74:E1:C7:CE:74:79:76:0B:68:78:43:6D:40:24:E6:C1:50:35:AD:45:F5:6B:7B:0E:24:7C:52:FF:78:26:EF:B9:8D:E5:17:0F:FF:85:6D:8E:99:E6:88:32:A0:03:31:DC:8B:83:CF:CF:9E:44:9D:1F:9E:77:96:5D:D9:C5:E3:18:B5:B1:BD:8B:06:FB:D6:9E:24:4D:4D:F6:9E:96:70:90:08:06:64:50:CF:A0:A3:7D:43:5A:81:75:4F:D5:FE:16:B2:78:B6:8C:93:6D:E5:0F:69:6C:58:4F:AF:4A:B5:40:98:A7:18:4D:2E:79:8B:88:4A:61:B2:65:2E:B4:33:48:B8:44:A6:9F:DD:D8:27:41:9F:D1:69:0C:26:F4:7D:95:A1:01:93:1D:7D:E0:25:A6:E8:81:6B:5B:2B:FF:54:95:62:5C:B8:F4:D8:1E:24:2F:75:E7:7E:53:84:74:0B:EF:12:70:F3:DE:F9:A8:B0:83:37:57:B2:D2:4E:C8:56:21:CC:BE:21:16:BC:9F:23:95:A8:AB:B6:62:2C:6E:AB:49:3D:35:86:4F:2E:19" }, "subject": [ { "name": "commonName", "oid": "2.5.4.3", "value": "My Certificate with SAN" } ], "validity": { "not_valid_after": "20250810124415Z", "not_valid_before": "20240810124416Z" } }, "changed": false } TASK [Load certificate YAML to cert_issued variable] *************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:92 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.294) 0:00:12.062 ******* ok: [sut] => { "ansible_facts": { "cert_issued": { "extensions": { "authorityKeyIdentifier": { "critical": false, "value": "F7:C1:7B:3E:55:B7:2A:10:81:40:2F:9A:48:DF:FB:2B:15:2E:04:6B" }, "basicConstraints": { "critical": true, "value": { "ca": false } }, "extendedKeyUsage": { "critical": false, "value": [ { "name": "id-kp-serverAuth", "oid": "1.3.6.1.5.5.7.3.1" }, { "name": "id-kp-clientAuth", "oid": "1.3.6.1.5.5.7.3.2" } ] }, "keyUsage": { "critical": false, "value": [ "digital_signature", "key_encipherment" ] }, "subjectAltName": { "critical": false, "value": [ { "name": "DNS", "value": "sub1.example.com" }, { "name": "DNS", "value": "www.example.com" }, { "name": "DNS", "value": "sub2.example.com" }, { "name": "DNS", "value": "sub3.example.com" }, { "name": "email", "value": "sysadmin@example.com" }, { "name": "email", "value": "support@example.com" }, { "name": "IP Address", "value": "192.0.2.12" }, { "name": "IP Address", "value": "198.51.100.65" }, { "name": "IP Address", "value": "2001:db8::2:1" } ] }, "subjectKeyIdentifier": { "critical": false, "value": "75:1A:E2:07:40:8E:AA:50:DB:26:56:F5:40:BF:03:5D:28:D9:F8:79" } }, "key_size": 2048, "signature_algorithm": { "algorithm": "sha256WithRSAEncryption", "signature": "85:86:5B:49:2F:0F:42:C7:E3:9B:9D:9F:6D:70:79:72:91:F1:75:D3:AC:51:73:74:E0:BD:A3:D1:55:69:66:F1:AC:CF:81:3A:CE:06:EC:F4:40:2D:74:E1:C7:CE:74:79:76:0B:68:78:43:6D:40:24:E6:C1:50:35:AD:45:F5:6B:7B:0E:24:7C:52:FF:78:26:EF:B9:8D:E5:17:0F:FF:85:6D:8E:99:E6:88:32:A0:03:31:DC:8B:83:CF:CF:9E:44:9D:1F:9E:77:96:5D:D9:C5:E3:18:B5:B1:BD:8B:06:FB:D6:9E:24:4D:4D:F6:9E:96:70:90:08:06:64:50:CF:A0:A3:7D:43:5A:81:75:4F:D5:FE:16:B2:78:B6:8C:93:6D:E5:0F:69:6C:58:4F:AF:4A:B5:40:98:A7:18:4D:2E:79:8B:88:4A:61:B2:65:2E:B4:33:48:B8:44:A6:9F:DD:D8:27:41:9F:D1:69:0C:26:F4:7D:95:A1:01:93:1D:7D:E0:25:A6:E8:81:6B:5B:2B:FF:54:95:62:5C:B8:F4:D8:1E:24:2F:75:E7:7E:53:84:74:0B:EF:12:70:F3:DE:F9:A8:B0:83:37:57:B2:D2:4E:C8:56:21:CC:BE:21:16:BC:9F:23:95:A8:AB:B6:62:2C:6E:AB:49:3D:35:86:4F:2E:19" }, "subject": [ { "name": "commonName", "oid": "2.5.4.3", "value": "My Certificate with SAN" } ], "validity": { "not_valid_after": "20250810124415Z", "not_valid_before": "20240810124416Z" } } }, "changed": false } TASK [Verify certificate subject] ********************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:96 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.011) 0:00:12.074 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify certificate SAN] ************************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:104 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.015) 0:00:12.089 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify key size] ********************************************************* task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:112 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.011) 0:00:12.101 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify certificate Key Usage] ******************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:119 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.017) 0:00:12.119 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Verify certificate Extended Key Usage] *********************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:130 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.017) 0:00:12.136 ******* ok: [sut] => { "changed": false } MSG: All assertions passed TASK [Retrieve auto-renew flag] ************************************************ task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:143 Saturday 10 August 2024 12:44:18 +0000 (0:00:00.017) 0:00:12.153 ******* ok: [sut] => { "changed": false, "cmd": "set -euo pipefail; getcert list -f /etc/pki/tls/certs/mycert_dns_ip_email.crt | grep 'auto-renew' | sed 's/^\\s\\+auto-renew: //g'", "delta": "0:00:00.033849", "end": "2024-08-10 12:44:18.984619", "rc": 0, "start": "2024-08-10 12:44:18.950770" } STDOUT: yes TASK [Verify certificate auto-renew flag] ************************************** task path: /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:152 Saturday 10 August 2024 12:44:19 +0000 (0:00:00.279) 0:00:12.433 ******* ok: [sut] => { "changed": false } MSG: All assertions passed PLAY RECAP ********************************************************************* sut : ok=31 changed=6 unreachable=0 failed=0 skipped=8 rescued=0 ignored=0 Saturday 10 August 2024 12:44:19 +0000 (0:00:00.020) 0:00:12.453 ******* =============================================================================== fedora.linux_system_roles.certificate : Ensure provider packages are installed --- 3.26s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:23 fedora.linux_system_roles.certificate : Ensure certificate role dependencies are installed --- 2.38s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:5 Gathering Facts --------------------------------------------------------- 1.92s /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:2 ----------------- fedora.linux_system_roles.certificate : Ensure provider service is running --- 0.74s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:90 Gathering Facts --------------------------------------------------------- 0.71s /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:24 ---------------- Ensure python3 is installed --------------------------------------------- 0.70s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:28 fedora.linux_system_roles.certificate : Ensure certificate requests ----- 0.65s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:101 Parse certificate ------------------------------------------------------- 0.29s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:86 fedora.linux_system_roles.certificate : Ensure pre-scripts hooks directory exists --- 0.29s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:35 Retrieve auto-renew flag ------------------------------------------------ 0.28s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:143 fedora.linux_system_roles.certificate : Check if system is ostree ------- 0.24s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:10 fedora.linux_system_roles.certificate : Ensure post-scripts hooks directory exists --- 0.21s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:61 Retrieve certificate file stats ----------------------------------------- 0.20s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:38 Retrieve key file stats ------------------------------------------------- 0.20s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:65 fedora.linux_system_roles.certificate : Set platform/version specific variables --- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/set_vars.yml:19 fedora.linux_system_roles.certificate : Remove files -------------------- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:181 Verify certificate auto-renew flag -------------------------------------- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:152 fedora.linux_system_roles.certificate : Slurp the contents of the files --- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/.collection/ansible_collections/fedora/linux_system_roles/roles/certificate/tasks/main.yml:152 Verify each certificate ------------------------------------------------- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/tests/tests_dns_ip_email.yml:54 ---------------- Verify key size --------------------------------------------------------- 0.02s /WORKDIR/git-weekly-ci4atxb1kq/tests/tasks/assert_certificate_parameters.yml:112 ---^---^---^---^---^--- # STDERR: ---v---v---v---v---v--- [DEPRECATION WARNING]: ANSIBLE_COLLECTIONS_PATHS option, does not fit var naming standard, use the singular form ANSIBLE_COLLECTIONS_PATH instead. This feature will be removed from ansible-core in version 2.19. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. [WARNING]: Platform linux on host sut is using the discovered Python interpreter at /usr/bin/python3.12, but future installation of another Python interpreter could change the meaning of that path. See https://docs.ansible.com/ansible- core/2.17/reference_appendices/interpreter_discovery.html for more information. ---^---^---^---^---^---