mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
b06d46f4d1
* Reduce stormssh searches based on host
Due to the stormssh searches in the whole config values, we need to reduce the search results based on the full matching of the hosts
* Removed whitespaces in the blank line
* Added changelog fragment and tests for the fix.
* Added newline at the end of the changelog fragment
* Added newline at the end of the tests
* Fixed bug with name in tests
* Changed assertion for the existing host
* Update changelogs/fragments/2568-ssh_config-reduce-stormssh-searches-based-on-host.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
* Adjusted tests
* New line at the end of the tests
Co-authored-by: Anton Nikolaev <anikolaev@apple.com>
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1a4af9bfc3
)
Co-authored-by: Anton Nikolaev <drenout@gmail.com>
221 lines
5.9 KiB
YAML
221 lines
5.9 KiB
YAML
# Test code for ssh_config module
|
|
# Copyright: (c) 2021, Abhijeet Kasurde (@Akasurde) <akasurde@redhat.com>
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
- name: Install required libs
|
|
pip:
|
|
name: stormssh
|
|
state: present
|
|
extra_args: "-c {{ remote_constraints }}"
|
|
|
|
- set_fact:
|
|
output_dir_test: '{{ output_dir }}/test_ssh_config'
|
|
|
|
- set_fact:
|
|
ssh_config_test: '{{ output_dir_test }}/ssh_config_test'
|
|
ssh_private_key: '{{ output_dir_test }}/fake_id_rsa'
|
|
|
|
- name: create a temporary directory
|
|
file:
|
|
path: "{{ output_dir_test }}"
|
|
state: directory
|
|
|
|
- name: Copy sample config file
|
|
copy:
|
|
src: 'files/ssh_config_test'
|
|
dest: '{{ ssh_config_test }}'
|
|
|
|
- name: Copy sample private key file
|
|
copy:
|
|
src: 'files/fake_id_rsa'
|
|
dest: '{{ ssh_private_key }}'
|
|
|
|
- name: Fail for required argument
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
ignore_errors: yes
|
|
register: host_required
|
|
|
|
- name: Check if ssh_config fails for required parameter host
|
|
assert:
|
|
that:
|
|
- not host_required.changed
|
|
|
|
- name: Add a host in check mode
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: host_add
|
|
check_mode: yes
|
|
|
|
- name: Check if changes are made in check mode
|
|
assert:
|
|
that:
|
|
- host_add.changed
|
|
- "'example.com' in host_add.hosts_added"
|
|
- host_add.hosts_changed is defined
|
|
- host_add.hosts_removed is defined
|
|
|
|
- name: Add a host
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: host_add
|
|
|
|
- name: Check if changes are made
|
|
assert:
|
|
that:
|
|
- host_add.changed
|
|
- "'example.com' in host_add.hosts_added"
|
|
- host_add.hosts_changed is defined
|
|
- host_add.hosts_removed is defined
|
|
|
|
- name: Add same host again for idempotency
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: host_add_again
|
|
|
|
- name: Check for idempotency
|
|
assert:
|
|
that:
|
|
- not host_add_again.changed
|
|
- host_add.hosts_changed is defined
|
|
- host_add.hosts_removed is defined
|
|
- host_add.hosts_added is defined
|
|
|
|
- name: Update host
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2224'
|
|
state: present
|
|
register: host_update
|
|
|
|
- name: Check for update operation
|
|
assert:
|
|
that:
|
|
- host_update.changed
|
|
- host_update.hosts_changed is defined
|
|
- "'example.com' in host_update.hosts_changed"
|
|
- host_update.hosts_removed is defined
|
|
- host_update.hosts_added is defined
|
|
- host_update.hosts_change_diff is defined
|
|
|
|
- name: Update host again
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2224'
|
|
state: present
|
|
register: host_update
|
|
|
|
- name: Check update operation for idempotency
|
|
assert:
|
|
that:
|
|
- not host_update.changed
|
|
- host_update.hosts_changed is defined
|
|
- host_update.hosts_removed is defined
|
|
- host_update.hosts_added is defined
|
|
- host_update.hosts_change_diff is defined
|
|
|
|
- name: Delete a host
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
state: absent
|
|
register: host_delete
|
|
|
|
- name: Check if changes are made
|
|
assert:
|
|
that:
|
|
- host_delete.changed
|
|
- "'example.com' in host_delete.hosts_removed"
|
|
- host_delete.hosts_changed is defined
|
|
- host_delete.hosts_added is defined
|
|
|
|
- name: Delete same host again for idempotency
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "example.com"
|
|
hostname: github.com
|
|
state: absent
|
|
register: host_delete_again
|
|
|
|
- name: Check for idempotency
|
|
assert:
|
|
that:
|
|
- not host_delete_again.changed
|
|
- host_delete_again.hosts_changed is defined
|
|
- host_delete_again.hosts_removed is defined
|
|
- host_delete_again.hosts_added is defined
|
|
|
|
- name: Check if user and ssh_config_file are mutually exclusive
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
user: root
|
|
host: "example.com"
|
|
hostname: github.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: mut_ex
|
|
ignore_errors: yes
|
|
|
|
- name: Check mutual exclusive test - user and ssh_config_file
|
|
assert:
|
|
that:
|
|
- not mut_ex.changed
|
|
- "'parameters are mutually exclusive' in mut_ex.msg"
|
|
|
|
- name: Add a full name host
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "full_name"
|
|
hostname: full_name.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: full_name
|
|
|
|
- name: Check if changes are made
|
|
assert:
|
|
that:
|
|
- full_name is changed
|
|
- full_name.hosts_added == ["full_name"]
|
|
- full_name.hosts_changed == []
|
|
- full_name.hosts_removed == []
|
|
|
|
- name: Add a host with name which is contained in full name host
|
|
community.general.ssh_config:
|
|
ssh_config_file: "{{ ssh_config_test }}"
|
|
host: "full"
|
|
hostname: full.com
|
|
identity_file: '{{ ssh_private_key }}'
|
|
port: '2223'
|
|
state: present
|
|
register: short_name
|
|
|
|
- name: Check that short name host is added and full name host is not updated
|
|
assert:
|
|
that:
|
|
- short_name is changed
|
|
- short_name.hosts_added == ["full"]
|
|
- short_name.hosts_changed == []
|
|
- short_name.hosts_removed == []
|