From 74b468b949169c8b3793fa58ec29765f5af8947a Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Wed, 19 Jul 2023 16:41:21 -0700 Subject: [PATCH] Add Samba AD tests This adds a Samba AD server test, and client enrolment tests via sssd, Cockpit and kickstart. Requires the matching createhdds commit to add the kickstart to the disk_ks image. Signed-off-by: Adam Williamson --- .../cockpit/join_complete-ad-20230722.json | 22 ++++ needles/cockpit/join_complete-ad-20230722.png | Bin 0 -> 161286 bytes templates-updates.fif.json | 21 ++++ templates.fif.json | 113 ++++++++++++++++-- tests/domain_client.pm | 63 ++++++++++ tests/freeipa_client.pm | 48 -------- tests/freeipa_password_change.pm | 6 +- tests/realmd_join_cockpit.pm | 25 ++-- tests/realmd_join_sssd.pm | 26 ++-- tests/role_deploy_domain_controller.pm | 2 +- tests/samba_domain_controller.pm | 88 ++++++++++++++ tests/samba_domain_controller_check.pm | 44 +++++++ 12 files changed, 373 insertions(+), 85 deletions(-) create mode 100644 needles/cockpit/join_complete-ad-20230722.json create mode 100644 needles/cockpit/join_complete-ad-20230722.png create mode 100644 tests/domain_client.pm delete mode 100644 tests/freeipa_client.pm create mode 100644 tests/samba_domain_controller.pm create mode 100644 tests/samba_domain_controller_check.pm diff --git a/needles/cockpit/join_complete-ad-20230722.json b/needles/cockpit/join_complete-ad-20230722.json new file mode 100644 index 00000000..3fbff2a8 --- /dev/null +++ b/needles/cockpit/join_complete-ad-20230722.json @@ -0,0 +1,22 @@ +{ + "area": [ + { + "ypos": 528, + "xpos": 690, + "type": "match", + "width": 217, + "height": 14 + }, + { + "type": "match", + "height": 13, + "width": 48, + "xpos": 587, + "ypos": 527 + } + ], + "properties": [], + "tags": [ + "cockpit_join_complete" + ] +} \ No newline at end of file diff --git a/needles/cockpit/join_complete-ad-20230722.png b/needles/cockpit/join_complete-ad-20230722.png new file mode 100644 index 0000000000000000000000000000000000000000..90c562db872976c225cec91bd5bb6c11e8d9b79b GIT binary patch literal 161286 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 To2YCM_}`@qlIIhJRUiBx?N4`7 literal 0 HcmV?d00001 diff --git a/templates-updates.fif.json b/templates-updates.fif.json index 49c83102..8a519aae 100644 --- a/templates-updates.fif.json +++ b/templates-updates.fif.json @@ -474,6 +474,13 @@ "fedora-updates-server-x86_64-*-64bit": 5 } }, + "realmd_join_cockpit_ad": { + "profiles": { + "fedora-updates-server-aarch64-*-aarch64": 5, + "fedora-updates-server-ppc64le-*-ppc64le": 5, + "fedora-updates-server-x86_64-*-64bit": 5 + } + }, "realmd_join_sssd": { "profiles": { "fedora-updates-server-aarch64-*-aarch64": 5, @@ -481,6 +488,13 @@ "fedora-updates-server-x86_64-*-64bit": 5 } }, + "realmd_join_sssd_ad": { + "profiles": { + "fedora-updates-server-aarch64-*-aarch64": 5, + "fedora-updates-server-ppc64le-*-ppc64le": 5, + "fedora-updates-server-x86_64-*-64bit": 5 + } + }, "rpmostree_overlay": { "profiles": { "fedora-updates-silverblue-dvd_ostree-iso-x86_64-*-64bit": 5 @@ -569,6 +583,13 @@ "fedora-updates-server-x86_64-*-64bit": 5 } }, + "server_samba_domain_controller": { + "profiles": { + "fedora-updates-server-aarch64-*-aarch64": 5, + "fedora-updates-server-ppc64le-*-ppc64le": 5, + "fedora-updates-server-x86_64-*-64bit": 5 + } + }, "support_server": { "profiles": { "fedora-updates-everything-boot-iso-x86_64-*-64bit": 5 diff --git a/templates.fif.json b/templates.fif.json index 4e4f8319..c9535e24 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -1713,7 +1713,7 @@ }, "settings": { "GRUB": "inst.ks=hd:vdb1:/root-user-crypted-net.ks", - "HDD_2": "disk_ks_6.img", + "HDD_2": "disk_ks_7.img", "KICKSTART": "1", "NUMDISKS": "2", "ROOT_PASSWORD": "111111", @@ -2360,13 +2360,37 @@ "BOOTFROM": "c", "NICTYPE": "tap", "PARALLEL_WITH": "server_role_deploy_domain_controller", - "POSTINSTALL": "realmd_join_cockpit freeipa_webui freeipa_password_change freeipa_client", + "POSTINSTALL": "realmd_join_cockpit freeipa_webui freeipa_password_change domain_client", "POST_STATIC": "172.16.2.102 client002.test.openqa.fedoraproject.org", "ROOT_PASSWORD": "weakpassword", "USER_LOGIN": "false", "WORKER_CLASS": "tap" } }, + "realmd_join_cockpit_ad": { + "profiles": { + "fedora-Server-dvd-iso-aarch64-*-aarch64": 30, + "fedora-Server-dvd-iso-ppc64le-*-ppc64le": 30, + "fedora-Server-dvd-iso-x86_64-*-64bit": 30 + }, + "settings": { + "+HDD_1": "disk_%MACHINE%_cockpit.qcow2", + "+START_AFTER_TEST": "server_cockpit_default", + "BOOTFROM": "c", + "NICTYPE": "tap", + "PARALLEL_WITH": "server_samba_domain_controller", + "POSTINSTALL": "realmd_join_cockpit domain_client", + "POST_STATIC": "172.16.2.132 adclient002.samdom.openqa.fedoraproject.org", + "REALMD_ADMIN_USER": "administrator", + "REALMD_ADMIN_PASSWORD": "129ho3eau47#qm9to9s^", + "REALMD_DNS_SERVER_HOST": "ad001.samdom.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_IP": "172.16.2.130", + "REALMD_DOMAIN": "samdom.openqa.fedoraproject.org", + "ROOT_PASSWORD": "weakpassword", + "USER_LOGIN": "false", + "WORKER_CLASS": "tap" + } + }, "realmd_join_sssd": { "profiles": { "fedora-Server-dvd-iso-aarch64-*-aarch64": 20, @@ -2378,7 +2402,7 @@ "HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2", "NICTYPE": "tap", "PARALLEL_WITH": "server_role_deploy_domain_controller", - "POSTINSTALL": "realmd_join_sssd freeipa_client", + "POSTINSTALL": "realmd_join_sssd domain_client", "POST_STATIC": "172.16.2.103 client003.test.openqa.fedoraproject.org", "ROOT_PASSWORD": "weakpassword", "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%", @@ -2386,6 +2410,30 @@ "WORKER_CLASS": "tap" } }, + "realmd_join_sssd_ad": { + "profiles": { + "fedora-Server-dvd-iso-aarch64-*-aarch64": 20, + "fedora-Server-dvd-iso-ppc64le-*-ppc64le": 20, + "fedora-Server-dvd-iso-x86_64-*-64bit": 20 + }, + "settings": { + "BOOTFROM": "c", + "HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2", + "NICTYPE": "tap", + "PARALLEL_WITH": "server_samba_domain_controller", + "POSTINSTALL": "realmd_join_sssd domain_client", + "POST_STATIC": "172.16.2.131 adclient001.samdom.openqa.fedoraproject.org", + "REALMD_ADMIN_USER": "administrator", + "REALMD_ADMIN_PASSWORD": "129ho3eau47#qm9to9s^", + "REALMD_DNS_SERVER_HOST": "ad001.samdom.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_IP": "172.16.2.130", + "REALMD_DOMAIN": "samdom.openqa.fedoraproject.org", + "ROOT_PASSWORD": "weakpassword", + "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%", + "USER_LOGIN": "false", + "WORKER_CLASS": "tap" + } + }, "release_identification": { "profiles": { "fedora-CoreOS-colive-iso-x86_64-*-64bit": 50, @@ -2547,12 +2595,14 @@ }, "settings": { "BOOTFROM": "c", - "FREEIPA_REPLICA_CLIENT": "1", "HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2", "NICTYPE": "tap", "PARALLEL_WITH": "server_freeipa_replication_replica", - "POSTINSTALL": "realmd_join_sssd freeipa_client", + "POSTINSTALL": "realmd_join_sssd domain_client", "POST_STATIC": "172.16.2.108 client005.test.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_HOST": "ipa003.test.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_IP": "172.16.2.107", + "REALMD_SERVER_MUTEX": "domain_replica_ready", "ROOT_PASSWORD": "weakpassword", "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%", "USER_LOGIN": "false", @@ -2594,6 +2644,8 @@ "PARALLEL_WITH": "server_freeipa_replication_master", "POSTINSTALL": "realmd_join_sssd", "POST_STATIC": "172.16.2.107 ipa003.test.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_HOST": "ipa002.test.openqa.fedoraproject.org", + "REALMD_DNS_SERVER_IP": "172.16.2.106", "ROOT_PASSWORD": "weakpassword", "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%", "USER_LOGIN": "false", @@ -2608,13 +2660,35 @@ }, "settings": { "GRUB": "inst.ks=hd:vdb1:/freeipaclient.ks", - "HDD_2": "disk_ks_6.img", - "INSTALL_UNLOCK": "freeipa_ready", + "HDD_2": "disk_ks_7.img", + "INSTALL_UNLOCK": "domain_server_ready", "KICKSTART": "1", "NICTYPE": "tap", "NUMDISKS": "2", "PARALLEL_WITH": "server_role_deploy_domain_controller", - "POSTINSTALL": "freeipa_client", + "POSTINSTALL": "domain_client", + "ROOT_PASSWORD": "anaconda", + "USER_LOGIN": "false", + "WORKER_CLASS": "tap" + } + }, + "server_realmd_join_kickstart_ad": { + "profiles": { + "fedora-Server-dvd-iso-aarch64-*-aarch64": 20, + "fedora-Server-dvd-iso-ppc64le-*-ppc64le": 20, + "fedora-Server-dvd-iso-x86_64-*-64bit": 20 + }, + "settings": { + "GRUB": "inst.ks=hd:vdb1:/adclient.ks", + "HDD_2": "disk_ks_7.img", + "INSTALL_UNLOCK": "domain_server_ready", + "KICKSTART": "1", + "NICTYPE": "tap", + "NUMDISKS": "2", + "PARALLEL_WITH": "server_samba_domain_controller", + "POSTINSTALL": "domain_client", + "REALMD_ADMIN_USER": "administrator", + "REALMD_DOMAIN": "samdom.openqa.fedoraproject.org", "ROOT_PASSWORD": "anaconda", "USER_LOGIN": "false", "WORKER_CLASS": "tap" @@ -2696,6 +2770,25 @@ "WORKER_CLASS": "tap" } }, + "server_samba_domain_controller": { + "profiles": { + "fedora-Server-dvd-iso-aarch64-*-aarch64": 20, + "fedora-Server-dvd-iso-ppc64le-*-ppc64le": 20, + "fedora-Server-dvd-iso-x86_64-*-64bit": 20 + }, + "settings": { + "BOOTFROM": "c", + "HDD_1": "disk_%FLAVOR%_%MACHINE%.qcow2", + "NICTYPE": "tap", + "PARALLEL_CANCEL_WHOLE_CLUSTER": "0", + "POSTINSTALL": "samba_domain_controller samba_domain_controller_check", + "POST_STATIC": "172.16.2.130 ad001.samdom.openqa.fedoraproject.org", + "ROOT_PASSWORD": "weakpassword", + "START_AFTER_TEST": "%DEPLOY_UPLOAD_TEST%", + "USER_LOGIN": "false", + "WORKER_CLASS": "tap" + } + }, "support_server": { "profiles": { "fedora-Server-dvd-iso-aarch64-*-aarch64": 10, @@ -2839,7 +2932,7 @@ "BOOTFROM": "c", "NICTYPE": "tap", "PARALLEL_WITH": "upgrade_2_server_domain_controller", - "POSTINSTALL": "_setup_browser freeipa_webui freeipa_password_change freeipa_client", + "POSTINSTALL": "_setup_browser freeipa_webui freeipa_password_change domain_client", "POST_STATIC": "172.16.2.103 client003.test.openqa.fedoraproject.org", "PREUPGRADE": "realmd_join_sssd", "ROOT_PASSWORD": "weakpassword", @@ -2975,7 +3068,7 @@ "MAX_JOB_TIME": "10800", "NICTYPE": "tap", "PARALLEL_WITH": "upgrade_server_domain_controller", - "POSTINSTALL": "_setup_browser freeipa_webui freeipa_password_change freeipa_client", + "POSTINSTALL": "_setup_browser freeipa_webui freeipa_password_change domain_client", "POST_STATIC": "172.16.2.103 client003.test.openqa.fedoraproject.org", "PREUPGRADE": "realmd_join_sssd", "ROOT_PASSWORD": "weakpassword", diff --git a/tests/domain_client.pm b/tests/domain_client.pm new file mode 100644 index 00000000..97e51ac2 --- /dev/null +++ b/tests/domain_client.pm @@ -0,0 +1,63 @@ +use base "installedtest"; +use strict; +use testapi; +use utils; + +sub run { + my $self = shift; + my $admin = get_var("REALMD_ADMIN_USER", "admin"); + my $domain = get_var("REALMD_DOMAIN", "test.openqa.fedoraproject.org"); + my $udomain = uc($domain); + my $qdomain = quotemeta($domain); + my $qudomain = uc($qdomain); + # switch to tty1 (we're usually there already, but just in case + # we're carrying on from a failed freeipa_webui that didn't fail + # at tty1) + send_key "ctrl-alt-f1"; + wait_still_screen 1; + # check domain is listed in 'realm list' + validate_script_output 'realm list', sub { $_ =~ m/domain-name: $qdomain.*configured: kerberos-member/s }; + # check we can resolve domain accounts + assert_script_run "getent passwd $admin\@$udomain"; + # check keytab entries + # on AD clients, this isn't automatically installed + assert_script_run "dnf -y install krb5-workstation", 180; + my $hostname = script_output 'hostname'; + my $qhost = quotemeta($hostname); + validate_script_output 'klist -k', sub { $_ =~ m/$qhost\@$qudomain/ }; + # check we can kinit with the host principal + if ($domain =~ m/samdom/) { + my $shorthost = uc((split(/\./, $hostname))[0]); + assert_script_run "kinit -k $shorthost\\\$\@$udomain"; + } + else { + assert_script_run "kinit -k host/$hostname\@$udomain"; + } + # Set a longer timeout for login(1) to workaround RHBZ #1661273 + assert_script_run 'echo "LOGIN_TIMEOUT 180" >> /etc/login.defs'; + # switch to tty2 for login tests + send_key "ctrl-alt-f2"; + # try and login as test1, should work + console_login(user => "test1\@$domain", password => 'batterystaple'); + type_string "exit\n"; + unless ($domain =~ m/samdom/) { + # try and login as test2, should fail. we cannot use console_login + # as it takes 10 seconds to complete when login fails, and + # "permission denied" message doesn't last that long + sleep 2; + assert_screen "text_console_login"; + type_string "test2\@$udomain\n"; + assert_screen "console_password_required"; + type_string "batterystaple\n"; + assert_screen "login_permission_denied"; + } +} + + +sub test_flags { + return {fatal => 1}; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/freeipa_client.pm b/tests/freeipa_client.pm deleted file mode 100644 index 3273b529..00000000 --- a/tests/freeipa_client.pm +++ /dev/null @@ -1,48 +0,0 @@ -use base "installedtest"; -use strict; -use testapi; -use utils; - -sub run { - my $self = shift; - # switch to tty1 (we're usually there already, but just in case - # we're carrying on from a failed freeipa_webui that didn't fail - # at tty1) - send_key "ctrl-alt-f1"; - wait_still_screen 1; - # check domain is listed in 'realm list' - validate_script_output 'realm list', sub { $_ =~ m/domain-name: test\.openqa\.fedoraproject\.org.*configured: kerberos-member/s }; - # check we can see the admin user in getent - assert_script_run 'getent passwd admin@TEST.OPENQA.FEDORAPROJECT.ORG'; - # check keytab entries - my $hostname = script_output 'hostname'; - my $qhost = quotemeta($hostname); - validate_script_output 'klist -k', sub { $_ =~ m/$qhost\@TEST\.OPENQA\.FEDORAPROJECT\.ORG/ }; - # check we can kinit with the host principal - assert_script_run "kinit -k host/$hostname\@TEST.OPENQA.FEDORAPROJECT.ORG"; - # Set a longer timeout for login(1) to workaround RHBZ #1661273 - assert_script_run 'echo "LOGIN_TIMEOUT 180" >> /etc/login.defs'; - # switch to tty2 for login tests - send_key "ctrl-alt-f2"; - # try and login as test1, should work - console_login(user => 'test1@TEST.OPENQA.FEDORAPROJECT.ORG', password => 'batterystaple'); - type_string "exit\n"; - # try and login as test2, should fail. we cannot use console_login - # as it takes 10 seconds to complete when login fails, and - # "permission denied" message doesn't last that long - sleep 2; - assert_screen "text_console_login"; - type_string "test2\@TEST.OPENQA.FEDORAPROJECT.ORG\n"; - assert_screen "console_password_required"; - type_string "batterystaple\n"; - assert_screen "login_permission_denied"; -} - - -sub test_flags { - return {fatal => 1}; -} - -1; - -# vim: set sw=4 et: diff --git a/tests/freeipa_password_change.pm b/tests/freeipa_password_change.pm index 4d9d1631..ef32c73e 100644 --- a/tests/freeipa_password_change.pm +++ b/tests/freeipa_password_change.pm @@ -40,14 +40,14 @@ sub run { # check we can kinit with changed password assert_script_run 'printf "loremipsum" | kinit test3'; # change password via CLI (back to batterystaple, as that's what - # freeipa_client test expects) + # domain_client test expects) assert_script_run 'dnf -y install freeipa-admintools'; assert_script_run 'printf "batterystaple\nbatterystaple" | ipa user-mod test3 --password'; # check we can kinit again assert_script_run 'printf "batterystaple" | kinit test3'; - # clear kerberos ticket for freeipa_client test + # clear kerberos ticket for domain_client test assert_script_run 'kdestroy -A'; - # we just stay here - freeipa_client will pick right up + # we just stay here - domain_client will pick right up } sub test_flags { diff --git a/tests/realmd_join_cockpit.pm b/tests/realmd_join_cockpit.pm index a49e6829..d35daaee 100644 --- a/tests/realmd_join_cockpit.pm +++ b/tests/realmd_join_cockpit.pm @@ -8,18 +8,27 @@ use cockpit; sub run { my $self = shift; - # use FreeIPA server as DNS server - assert_script_run "printf 'search test.openqa.fedoraproject.org\nnameserver 172.16.2.100' > /etc/resolv.conf"; + # use appropriate server IP, hostname, mutex and admin password + # Several tests use the 'regular' FreeIPA server, so the values + # for that are the defaults; other tests use a replica server, or + # the AD server, so they specify this in their vars. + my $server = get_var("REALMD_DNS_SERVER_HOST", 'ipa001.test.openqa.fedoraproject.org'); + my $server_ip = get_var("REALMD_DNS_SERVER_IP", '172.16.2.100'); + my $server_mutex = get_var("REALMD_SERVER_MUTEX", 'domain_server_ready'); + my $admin_pw = get_var("REALMD_ADMIN_PASSWORD", 'monkeys123'); + my $admin_user = get_var("REALMD_ADMIN_USER", 'admin'); + my $domain = get_var("REALMD_DOMAIN", "test.openqa.fedoraproject.org"); + assert_script_run "printf '$domain\nnameserver $server_ip' > /etc/resolv.conf"; # this gets us the name of the first connection in the list, # which should be what we want my $connection = script_output "nmcli --fields NAME con show | head -2 | tail -1"; - assert_script_run "nmcli con mod '$connection' ipv4.dns '172.16.2.100'"; + assert_script_run "nmcli con mod '$connection' ipv4.dns '$server_ip'"; assert_script_run "nmcli con down '$connection'"; assert_script_run "nmcli con up '$connection'"; # wait for the server to be ready (do it now just to make sure name # resolution is working before we proceed) - mutex_lock "freeipa_ready"; - mutex_unlock "freeipa_ready"; + mutex_lock "domain_server_ready"; + mutex_unlock "domain_server_ready"; # do repo setup repo_setup(); # set sssd debugging level higher (useful for debugging failures) @@ -52,12 +61,12 @@ sub run { # ...but two tabs in both places on earlier versions $tabs = "\t\t" if ($cockpitver < 255); type_string($tabs, 4); - type_string("ipa001.test.openqa.fedoraproject.org", 4); + type_string($server, 4); type_string($tabs, 4); - type_string("admin", 4); + type_string($admin_user, 4); send_key "tab"; sleep 3; - type_string("monkeys123", 4); + type_string($admin_pw, 4); sleep 3; assert_and_click "cockpit_join_button"; # join involves package installs, so it may take some time diff --git a/tests/realmd_join_sssd.pm b/tests/realmd_join_sssd.pm index cf8f4ed8..f79c121d 100644 --- a/tests/realmd_join_sssd.pm +++ b/tests/realmd_join_sssd.pm @@ -8,19 +8,15 @@ use utils; sub run { my $self = shift; - # use FreeIPA server or replica as DNS server - my $server = 'ipa001.test.openqa.fedoraproject.org'; - my $server_ip = '172.16.2.100'; - my $server_mutex = 'freeipa_ready'; - if (get_var("FREEIPA_REPLICA")) { - $server = 'ipa002.test.openqa.fedoraproject.org'; - $server_ip = '172.16.2.106'; - } - if (get_var("FREEIPA_REPLICA_CLIENT")) { - $server = 'ipa003.test.openqa.fedoraproject.org'; - $server_ip = '172.16.2.107'; - $server_mutex = 'replica_ready'; - } + # use appropriate server IP, hostname, mutex and admin password + # Several tests use the 'regular' FreeIPA server, so the values + # for that are the defaults; other tests use a replica server, or + # the AD server, so they specify this in their vars. + my $server = get_var("REALMD_DNS_SERVER_HOST", 'ipa001.test.openqa.fedoraproject.org'); + my $server_ip = get_var("REALMD_DNS_SERVER_IP", '172.16.2.100'); + my $server_mutex = get_var("REALMD_SERVER_MUTEX", 'domain_server_ready'); + my $admin_pw = get_var("REALMD_ADMIN_PASSWORD", 'monkeys123'); + my $admin_user = get_var("REALMD_ADMIN_USER", 'admin'); # this gets us the name of the first connection in the list, # which should be what we want my $connection = script_output "nmcli --fields NAME con show | head -2 | tail -1"; @@ -63,13 +59,13 @@ sub run { assert_script_run "systemctl start ipa.service", 300; # report that we're ready to go - mutex_create('replica_ready'); + mutex_create('domain_replica_ready'); # wait for the client test wait_for_children; } else { - assert_script_run "echo 'monkeys123' | realm join --user=admin ${server}", 300; + assert_script_run "echo '${admin_pw}' | realm join --user=${admin_user} ${server}", 300; } # set sssd debugging level higher (useful for debugging failures) # optional as it's not really part of the test diff --git a/tests/role_deploy_domain_controller.pm b/tests/role_deploy_domain_controller.pm index 65a3d364..0ad1293d 100644 --- a/tests/role_deploy_domain_controller.pm +++ b/tests/role_deploy_domain_controller.pm @@ -66,7 +66,7 @@ sub run { assert_script_run 'printf "correcthorse\nbatterystaple\nbatterystaple" | kinit test1@TEST.OPENQA.FEDORAPROJECT.ORG'; assert_script_run 'printf "correcthorse\nbatterystaple\nbatterystaple" | kinit test2@TEST.OPENQA.FEDORAPROJECT.ORG'; # we're ready for children to enrol, now - mutex_create("freeipa_ready"); + mutex_create("domain_server_ready"); # if upgrade test, wait for children to enrol before upgrade if (get_var("UPGRADE")) { my $children = get_children(); diff --git a/tests/samba_domain_controller.pm b/tests/samba_domain_controller.pm new file mode 100644 index 00000000..684e1d39 --- /dev/null +++ b/tests/samba_domain_controller.pm @@ -0,0 +1,88 @@ +use base "installedtest"; +use strict; +use testapi; +use lockapi; +use mmapi; +use tapnet; +use utils; + +# thanks to: +# https://fedoramagazine.org/samba-as-ad-and-domain-controller/ +# https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller + +sub run { + my $self = shift; + # login + $self->root_console(); + # use compose repo, disable u-t, etc. unless this is an upgrade + # test (in which case we're on the 'old' release at this point; + # one of the upgrade test modules does repo_setup later) + repo_setup() unless get_var("UPGRADE"); + # this seems to cause problems if it runs before clients are done + assert_script_run "systemctl stop systemd-tmpfiles-clean.timer"; + # we need a lot of entropy for this, and we don't care how good + # it is, so let's use haveged + assert_script_run "dnf -y install haveged", 300; + assert_script_run 'systemctl start haveged.service'; + assert_script_run "rm -f /etc/samba/smb.conf"; + # First install the necessary packages + assert_script_run "dnf -y install samba-dc samba-tools krb5-workstation adcli", 600; + # configure the firewall + assert_script_run "firewall-cmd --permanent --add-service samba-dc"; + assert_script_run "systemctl restart firewalld.service"; + # configure SELinux + assert_script_run "setsebool -P samba_create_home_dirs=on samba_domain_controller=on samba_enable_home_dirs=on samba_portmapper=on use_samba_home_dirs=on"; + # extract our IP and hostname from POST_STATIC + my $poststatic = get_var("POST_STATIC"); + my ($ip, $hostname) = split(" ", $poststatic); + # set up DNS + script_run "mkdir -p /etc/systemd/resolved.conf.d"; + assert_script_run 'printf "[Resolve]\nDNSStubListener=no\nDomains=samdom.openqa.fedoraproject.org\nDNS=' . $ip . '\n" > /etc/systemd/resolved.conf.d/sambaad.conf'; + upload_logs "/etc/systemd/resolved.conf.d/sambaad.conf"; + assert_script_run "systemctl restart systemd-resolved.service"; + # deploy the server + assert_script_run "samba-tool domain provision --server-role=dc --use-rfc2307 --dns-backend=SAMBA_INTERNAL --realm=SAMDOM.OPENQA.FEDORAPROJECT.ORG --domain=samdom --adminpass=129ho3eau47#qm9to9s^", 1200; + # set up DNS forwarding + my ($forwarder, $others) = get_host_dns(); + assert_script_run 'sed -i -e "s,dns forwarder =.*,dns forwarder = ' . $forwarder . ',g" /etc/samba/smb.conf'; + upload_logs "/etc/samba/smb.conf"; + # set up kerberos + assert_script_run "cp /var/lib/samba/private/krb5.conf /etc/krb5.conf.d/samba-dc"; + upload_logs "/etc/krb5.conf.d/samba-dc"; + # enable and start the systemd service + assert_script_run "systemctl enable samba.service"; + assert_script_run "systemctl start samba.service", 300; + + # kinit as admin + assert_script_run 'echo "129ho3eau47#qm9to9s^" | kinit administrator'; + # turn off annoying password constraints + assert_script_run "samba-tool domain passwordsettings set --complexity=off", 1200; + # set up an OTP for adclient003 enrolment (it will enrol with a kickstart) + assert_script_run 'echo "129ho3eau47#qm9to9s^" | adcli preset-computer -U administrator --verbose --domain samdom.openqa.fedoraproject.org --stdin-password --one-time-password=monkeys adclient003.samdom.openqa.fedoraproject.org'; + # create two user accounts, test1 and test2 + assert_script_run 'samba-tool user add test1 batterystaple --unix-home=/home/test1 --login-shell=/bin/bash --uid=number=10000 --gid-number=10000'; + # add a rule allowing access to all hosts and services + #assert_script_run 'ipa hbacrule-add testrule --servicecat=all --hostcat=all'; + # add test1 (but not test2) to the rule + #assert_script_run 'ipa hbacrule-add-user testrule --users=test1'; + # disable the default 'everyone everywhere' rule + #assert_script_run 'ipa hbacrule-disable allow_all'; + # allow immediate password changes (as we need to test this) + #assert_script_run 'ipa pwpolicy-mod --minlife=0'; + # magic voodoo crap to allow reverse DNS client sync to work + # https://docs.pagure.org/bind-dyndb-ldap/BIND9/SyncPTR.html + #assert_script_run 'ipa dnszone-mod test.openqa.fedoraproject.org. --allow-sync-ptr=TRUE'; + # check we can kinit as each user + assert_script_run 'printf "batterystaple" | kinit test1@SAMDOM.OPENQA.FEDORAPROJECT.ORG'; + # we're ready for children to enrol, now + mutex_create("domain_server_ready"); +} + + +sub test_flags { + return {fatal => 1}; +} + +1; + +# vim: set sw=4 et: diff --git a/tests/samba_domain_controller_check.pm b/tests/samba_domain_controller_check.pm new file mode 100644 index 00000000..87595aad --- /dev/null +++ b/tests/samba_domain_controller_check.pm @@ -0,0 +1,44 @@ +use base "installedtest"; +use strict; +use testapi; +use lockapi; +use mmapi; + +sub run { + my $self = shift; + # make sure ipa.service actually came up successfully + my $count = 40; + while (1) { + $count -= 1; + die "Waited too long for samba.service to show up!" if ($count == 0); + sleep 3; + # if it's active, we're done here + last unless script_run 'systemctl is-active samba.service'; + # if it's not...fail if it's failed + assert_script_run '! systemctl is-failed samba.service'; + # if we get here, it's activating, so loop around + } + # if this is an update, notify clients that we're now up again + mutex_create('server_upgraded') if get_var("UPGRADE"); + # once child jobs are done, stop the server + # debug debug + type_string "journalctl -f\n"; + wait_for_children; + send_key "ctrl-c"; + # run post-fail hook to upload logs - even when this test passes + # there are often cases where we need to see the logs (e.g. client + # test failed due to server issue) + $self->post_fail_hook(); + assert_script_run 'systemctl stop samba.service'; + # check server is stopped + assert_script_run '! systemctl is-active samba.service'; +} + + +sub test_flags { + return {fatal => 1}; +} + +1; + +# vim: set sw=4 et: