diff --git a/data/publiccloud/pcw/sshd_config b/data/publiccloud/pcw/sshd_config new file mode 100644 index 000000000000..6dc0f7145e8a --- /dev/null +++ b/data/publiccloud/pcw/sshd_config @@ -0,0 +1,3 @@ +PubkeyAuthentication yes +PermitRootLogin yes +AuthorizedKeysFile .ssh/authorized_keys diff --git a/lib/network_utils.pm b/lib/network_utils.pm index c8035893ace0..c760daf40623 100644 --- a/lib/network_utils.pm +++ b/lib/network_utils.pm @@ -40,7 +40,8 @@ sub setup_static_network { $args{silent} //= 0; configure_static_dns(get_host_resolv_conf(), silent => $args{silent}); assert_script_run('echo default ' . $args{gw} . ' - - > /etc/sysconfig/network/routes'); - my $iface = iface(); + $args{iface} //= iface(); + my $iface = $args{iface}; assert_script_run qq(echo -e "\\nSTARTMODE='auto'\\nBOOTPROTO='static'\\nIPADDR='$args{ip}'">/etc/sysconfig/network/ifcfg-$iface); assert_script_run 'rcnetwork restart'; assert_script_run 'ip addr'; diff --git a/tests/publiccloud/ansible_client.pm b/tests/publiccloud/ansible_client.pm new file mode 100644 index 000000000000..78a72dd46d48 --- /dev/null +++ b/tests/publiccloud/ansible_client.pm @@ -0,0 +1,37 @@ +use base "consoletest"; +use serial_terminal 'select_serial_terminal'; +use strict; +use warnings; +use testapi; +use mmapi; +use utils qw(zypper_call); +use network_utils qw(setup_static_network); +use lockapi; + +sub run { + my ($self, $args) = @_; + select_serial_terminal; + + record_info('system', script_output('cat /etc/os-release')); + setup_static_network(ip => '10.0.2.15/15', gw => '10.0.2.2', iface => 'eth0'); + assert_script_run('echo "10.0.2.20 microos" >> /etc/hosts'); + zypper_call('in -y iputils git'); + + assert_script_run('mkdir /root/.ssh'); + assert_script_run('curl -f -v ' . autoinst_url . '/data/slenkins/ssh/id_rsa > /root/.ssh/id_rsa'); + assert_script_run('chmod 600 /root/.ssh/id_rsa'); + + my $children = get_children(); + my $child_id = (keys %$children)[0]; + mutex_wait('target_is_ready', $child_id); + + # Testing target is accessible + assert_script_run('ping -c 1 microos'); + assert_script_run('ssh -v -o StrictHostKeyChecking=accept-new -o KexAlgorithms=ecdh-sha2-nistp521 root@microos hostname'); + + mutex_create 'job_completed'; + + wait_for_children; +} + +1; diff --git a/tests/publiccloud/ansible_target.pm b/tests/publiccloud/ansible_target.pm new file mode 100644 index 000000000000..1e1b4e7e603d --- /dev/null +++ b/tests/publiccloud/ansible_target.pm @@ -0,0 +1,48 @@ +use base "consoletest"; +use serial_terminal 'select_serial_terminal'; +use transactional qw(process_reboot); +use strict; +use warnings; +use testapi; +use lockapi; +use mm_network qw(setup_static_mm_network); + +sub run { + my ($self, $args) = @_; + select_serial_terminal; + record_info('system', script_output('cat /etc/os-release')); + record_info('device', script_output('nmcli -t device')); + + my $static_ip = '10.0.2.20/15'; + # my $device = 'ens4'; + + # assert_script_run('nmcli con add type ethernet con-name "static-ip" ifname ens4 ipv4.method manual ipv4.addresses 10.0.2.20/15 gw4 10.0.2.2'); + # assert_script_run('nmcli con mod static-ip ipv4.dns "10.136.53.53,10.136.53.54,10.100.2.10"'); + + # configure_static_ip(ip => $static_ip, ); + # configure_default_gateway(device => $device) + setup_static_mm_network(ip => $static_ip); + + assert_script_run('nmcli con up static-ip ifname ens4'); + record_info('ip', script_output('ip a')); + script_run('ping -c 1 10.0.2.15'); + script_run('ping -c 1 download.suse.de'); + + assert_script_run('curl -f -v ' . autoinst_url . '/data/slenkins/ssh/authorized_keys >> /root/.ssh/authorized_keys'); + assert_script_run('curl -f -v ' . autoinst_url . '/data/publiccloud/pcw/sshd_config >/etc/ssh/sshd_config'); + + assert_script_run('zypper ar http://download.suse.de/ibs/SUSE:/CA/openSUSE_Tumbleweed/ SUSE_CA'); + assert_script_run('zypper --gpg-auto-import-keys ref'); + assert_script_run('transactional-update -n -c pkg install ca-certificates-suse htop iftop iotop atop telnet nmap jq git rsync wget parted tcpdump screen sqlite3 fortune iputils nginx dehydrated dehydrated-nginx podman podman-cni-config cockpit cockpit-podman toolbox python3-selinux'); + process_reboot(trigger => 1); + + script_run('systemctl restart sshd'); + sleep 10; + assert_script_run('systemctl status sshd'); + mutex_create 'target_is_ready'; + + assert_script_run('ping -c 1 10.0.2.15'); + mutex_wait 'job_completed'; +} + +1;