2021-01-28 07:26:48 +01:00
|
|
|
# Test code for ssh_config module
|
2022-08-05 13:17:19 +02:00
|
|
|
# Copyright (c) 2021, Abhijeet Kasurde (@Akasurde) <akasurde@redhat.com>
|
|
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
2021-01-28 07:26:48 +01:00
|
|
|
|
|
|
|
- name: Install required libs
|
|
|
|
pip:
|
2023-01-22 18:16:50 +01:00
|
|
|
name:
|
|
|
|
- stormssh
|
|
|
|
- 'paramiko<3.0.0'
|
2021-01-28 07:26:48 +01:00
|
|
|
state: present
|
2021-02-09 07:47:08 +01:00
|
|
|
extra_args: "-c {{ remote_constraints }}"
|
2021-01-28 07:26:48 +01:00
|
|
|
|
|
|
|
- set_fact:
|
2021-09-09 07:31:44 +02:00
|
|
|
output_test_dir: '{{ remote_tmp_dir }}/test_ssh_config'
|
2021-01-28 07:26:48 +01:00
|
|
|
|
|
|
|
- set_fact:
|
2021-09-09 07:31:44 +02:00
|
|
|
ssh_config_test: '{{ output_test_dir }}/ssh_config_test'
|
|
|
|
ssh_private_key: '{{ output_test_dir }}/fake_id_rsa'
|
2021-01-28 07:26:48 +01:00
|
|
|
|
|
|
|
- name: create a temporary directory
|
|
|
|
file:
|
2021-09-09 07:31:44 +02:00
|
|
|
path: "{{ output_test_dir }}"
|
2021-01-28 07:26:48 +01:00
|
|
|
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"
|
2021-06-05 14:53:02 +02:00
|
|
|
|
|
|
|
- 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 == []
|
2021-10-14 21:24:23 +02:00
|
|
|
|
|
|
|
- name: Include integration tests for additional options (e.g. proxycommand)
|
|
|
|
include: 'options.yml'
|