From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 463BE15ECF7 for ; Wed, 10 Apr 2024 14:51:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712760670; cv=none; b=NIPgGYFdqOyaMJEDS1i/9aXWRhbluv8U0wvghShNQn4mHuKtEP8jiJhqjEN68S6vrlCne0jXEiCGB6W730k8FvIrKa7uRnv/Y4sHRmdWofighbFsV0tQ8kr9MV3K38v0vyVscm/UniHp9dap9xoWtlC9fr7+9dUtp7S+/KBStiw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712760670; c=relaxed/simple; bh=tLvG/TSyUBom1tRWPeGiYx4+Vg/f91vlL4QdCo2FvpQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Vu4BF6jQ9PMOkKU7GnHgzeHTsdgjTis+AZNo0gb+L3rETqShBv4EdXGjhtXDMnexU9Y78UjqPs4Ezb/9RLWTlEoO5tUsjJMwmZPYhbosoH+3uOMQAp1NRXifujC8xsD1mr0jpVUQwIpQJC7kmR7XB7DcDgEs7BuZgqA1fvCFDTk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uDThsPZL; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uDThsPZL" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 88E73C433F1; Wed, 10 Apr 2024 14:51:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1712760668; bh=tLvG/TSyUBom1tRWPeGiYx4+Vg/f91vlL4QdCo2FvpQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uDThsPZLwx2Jt+CZxHvrmUnJh67mMNuJIAe+f0yfDALpKRnAU4rQYvY0/uBNRZCcA Am7es9qwxfWBp1FTBBHjPLaOLeu3X3XyfysouFxHa4TKQ7bP8e/RcYZQFhVdCfqYoT SahbocvjMm3hrIZuwCcSMAOL0Kp0oTDZvzp2q9fQbrW0eehJUGqXNzqxI+SvK5JGkZ 2wQoIYKPYUq5Y4fUt8CPOgFkJYbfWDc6XG/hBZ6/cEtpIFqCoYTwGiwp3MPapEfxWv l5g1+0QI193mhgD0dt4IuEQVhm9gVDWEYDBXHKLIBgDOHK8awiZ1EFy7Q0pdm+sDUh q9kTkOJFs/e2Q== From: cel@kernel.org To: Cc: Chuck Lever Subject: [PATCH 4/4] roles: Add a playbook to run the nfstest suite Date: Wed, 10 Apr 2024 10:50:51 -0400 Message-ID: <20240410145051.257980-4-cel@kernel.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240410145051.257980-1-cel@kernel.org> References: <20240410145051.257980-1-cel@kernel.org> Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Chuck Lever Note that in dedicated workflow mode, each test group has its own set of tasks. The main nfstest role selects the task set to run based on the hostname of the target node. The nfstest role uses the "free" lock-step strategy so that each target node can get through its tests while the others are running their own tasks. Another possibility that is more natural to Ansible would be to set up a group for each nfstest test group. Signed-off-by: Chuck Lever --- playbooks/nfstest.yml | 5 + playbooks/roles/nfstest/defaults/main.yml | 5 + playbooks/roles/nfstest/tasks/alloc/main.yml | 14 ++ playbooks/roles/nfstest/tasks/dio/main.yml | 28 +++ .../roles/nfstest/tasks/interop/main.yml | 56 ++++++ playbooks/roles/nfstest/tasks/lock/main.yml | 56 ++++++ playbooks/roles/nfstest/tasks/main.yml | 187 ++++++++++++++++++ playbooks/roles/nfstest/tasks/posix/main.yml | 56 ++++++ playbooks/roles/nfstest/tasks/sparse/main.yml | 14 ++ playbooks/roles/nfstest/tasks/ssc/main.yml | 28 +++ playbooks/roles/nfstest/vars/Debian.yml | 5 + playbooks/roles/nfstest/vars/RedHat.yml | 5 + playbooks/roles/nfstest/vars/Suse.yml | 5 + 13 files changed, 464 insertions(+) create mode 100644 playbooks/nfstest.yml create mode 100644 playbooks/roles/nfstest/defaults/main.yml create mode 100644 playbooks/roles/nfstest/tasks/alloc/main.yml create mode 100644 playbooks/roles/nfstest/tasks/dio/main.yml create mode 100644 playbooks/roles/nfstest/tasks/interop/main.yml create mode 100644 playbooks/roles/nfstest/tasks/lock/main.yml create mode 100644 playbooks/roles/nfstest/tasks/main.yml create mode 100644 playbooks/roles/nfstest/tasks/posix/main.yml create mode 100644 playbooks/roles/nfstest/tasks/sparse/main.yml create mode 100644 playbooks/roles/nfstest/tasks/ssc/main.yml create mode 100644 playbooks/roles/nfstest/vars/Debian.yml create mode 100644 playbooks/roles/nfstest/vars/RedHat.yml create mode 100644 playbooks/roles/nfstest/vars/Suse.yml diff --git a/playbooks/nfstest.yml b/playbooks/nfstest.yml new file mode 100644 index 000000000000..9d7c28a75843 --- /dev/null +++ b/playbooks/nfstest.yml @@ -0,0 +1,5 @@ +--- +- hosts: all + strategy: free + roles: + - role: nfstest diff --git a/playbooks/roles/nfstest/defaults/main.yml b/playbooks/roles/nfstest/defaults/main.yml new file mode 100644 index 000000000000..0d4060b5c76e --- /dev/null +++ b/playbooks/roles/nfstest/defaults/main.yml @@ -0,0 +1,5 @@ +--- +# Our sensible defaults for the nfstest role. +# +kdevops_run_nfstest: False +kdevops_workflows_dedicated_workflow: false diff --git a/playbooks/roles/nfstest/tasks/alloc/main.yml b/playbooks/roles/nfstest/tasks/alloc/main.yml new file mode 100644 index 000000000000..2c4d750388f2 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/alloc/main.yml @@ -0,0 +1,14 @@ +--- +- name: Run nfstest_alloc for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_alloc" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: alloc_nfsv42_results + changed_when: false + failed_when: alloc_nfsv42_results.rc != 0 and alloc_nfsv42_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/dio/main.yml b/playbooks/roles/nfstest/tasks/dio/main.yml new file mode 100644 index 000000000000..705403a93da1 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/dio/main.yml @@ -0,0 +1,28 @@ +--- +- name: Run nfstest_dio for NFSv4.0 + ansible.builtin.command: + argv: + - "nfstest_dio" + - "--createlog" + - "--nfsversion=4.0" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: dio_nfsv40_results + changed_when: false + failed_when: dio_nfsv40_results.rc != 0 and dio_nfsv40_results.rc != 1 + tags: run_tests + +- name: Run nfstest_dio for NFSv4.1 + ansible.builtin.command: + argv: + - "nfstest_dio" + - "--createlog" + - "--nfsversion=4.1" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: dio_nfsv41_results + changed_when: false + failed_when: dio_nfsv41_results.rc != 0 and dio_nfsv41_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/interop/main.yml b/playbooks/roles/nfstest/tasks/interop/main.yml new file mode 100644 index 000000000000..b35e9c9607fe --- /dev/null +++ b/playbooks/roles/nfstest/tasks/interop/main.yml @@ -0,0 +1,56 @@ +--- +- name: Run nfstest_interop for NFSv3 + ansible.builtin.command: + argv: + - "nfstest_interop" + - "--createlog" + - "--nfsversion=3" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: interop_nfsv3_results + changed_when: false + failed_when: interop_nfsv3_results.rc != 0 and interop_nfsv3_results.rc != 1 + tags: run_tests + +- name: Run nfstest_interop for NFSv4.0 + ansible.builtin.command: + argv: + - "nfstest_interop" + - "--createlog" + - "--nfsversion=4.0" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: interop_nfsv40_results + changed_when: false + failed_when: interop_nfsv40_results.rc != 0 and interop_nfsv40_results.rc != 1 + tags: run_tests + +- name: Run nfstest_interop for NFSv4.1 + ansible.builtin.command: + argv: + - "nfstest_interop" + - "--createlog" + - "--nfsversion=4.1" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: interop_nfsv41_results + changed_when: false + failed_when: interop_nfsv41_results.rc != 0 and interop_nfsv41_results.rc != 1 + tags: run_tests + +- name: Run nfstest_interop for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_interop" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: interop_nfsv42_results + changed_when: false + failed_when: interop_nfsv42_results.rc != 0 and interop_nfsv42_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/lock/main.yml b/playbooks/roles/nfstest/tasks/lock/main.yml new file mode 100644 index 000000000000..b658edf965ed --- /dev/null +++ b/playbooks/roles/nfstest/tasks/lock/main.yml @@ -0,0 +1,56 @@ +--- +- name: Run nfstest_lock for NFSv3 + ansible.builtin.command: + argv: + - "nfstest_lock" + - "--createlog" + - "--nfsversion=3" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: lock_nfsv3_results + changed_when: false + failed_when: lock_nfsv3_results.rc != 0 and lock_nfsv3_results.rc != 1 + tags: run_tests + +- name: Run nfstest_lock for NFSv4.0 + ansible.builtin.command: + argv: + - "nfstest_lock" + - "--createlog" + - "--nfsversion=4.0" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: lock_nfsv40_results + changed_when: false + failed_when: lock_nfsv40_results.rc != 0 and lock_nfsv40_results.rc != 1 + tags: run_tests + +- name: Run nfstest_lock for NFSv4.1 + ansible.builtin.command: + argv: + - "nfstest_lock" + - "--createlog" + - "--nfsversion=4.1" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: lock_nfsv41_results + changed_when: false + failed_when: lock_nfsv41_results.rc != 0 and lock_nfsv41_results.rc != 1 + tags: run_tests + +- name: Run nfstest_lock for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_lock" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: lock_nfsv42_results + changed_when: false + failed_when: lock_nfsv42_results.rc != 0 and lock_nfsv42_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/main.yml b/playbooks/roles/nfstest/tasks/main.yml new file mode 100644 index 000000000000..6f660c332a75 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/main.yml @@ -0,0 +1,187 @@ +--- +- name: Import optional extra_vars file + ansible.builtin.include_vars: + file: "{{ item }}" + with_first_found: + - files: + - "../extra_vars.yml" + - "../extra_vars.yaml" + - "../extra_vars.json" + skip: true + failed_when: false + tags: vars + +- name: Set OS-specific variables + ansible.builtin.include_vars: "{{ lookup('ansible.builtin.first_found', params) }}" + vars: + params: + files: + - '{{ ansible_distribution }}.yml' + - '{{ ansible_os_family }}.yml' + - default.yml + paths: + - 'vars' + +- name: Install dependencies for nfstest + become: true + become_flags: 'su - -c' + become_method: ansible.builtin.sudo + ansible.builtin.package: + name: "{{ nfstest_packages }}" + state: present + tags: nfstest + +# I wish this worked. +# - name: Install or update pip +# become: true +# community.general.easy_install: +# name: pip +# state: latest +# tags: nfstest + +- name: Create the /data mount point on the target nodes + ansible.builtin.include_role: + name: create_data_partition + tags: + - data_partition + - nfstest + +- name: Set the pathname of the build directory + ansible.builtin.set_fact: + nfstest_build_dir: "{{ data_path }}/nfstest" + tags: nfstest + +- name: Remove existing nfstest build directory + become: true + become_flags: 'su - -c' + become_method: ansible.builtin.sudo + ansible.builtin.file: + path: "{{ nfstest_build_dir }}" + state: absent + tags: nfstest + +- name: Set the name of the NFS export for the test group + ansible.builtin.set_fact: + nfstest_nfs_server_export: "nfstest-{{ ansible_host }}" + when: + - nfstest_nfs_use_kdevops_nfsd|bool + tags: vars + +- name: Create the NFS export on the kdevops NFS server + ansible.builtin.include_role: + name: nfsd_add_export + vars: # noqa: var-naming[no-role-prefix] + server_host: "{{ nfstest_nfs_server_host }}" + export_volname: "{{ nfstest_nfs_server_export }}" + export_options: "{{ nfsd_export_options }}" + export_fstype: "{{ nfsd_export_fstype }}" + export_size: 10g + when: + - nfstest_nfs_use_kdevops_nfsd|bool + tags: nfstest + +- name: Create the test mount point on the target node + become: true + become_flags: 'su - -c' + become_method: ansible.builtin.sudo + ansible.builtin.file: + state: directory + path: "{{ nfstest_mnt }}" + owner: "root" + group: "root" + mode: "u=rwx,g=rwx,o=rwx" + tags: nfstest + +- name: Clone the nfstest source code from {{ nfstest_repo }} + ansible.builtin.git: + repo: "{{ nfstest_repo }}" + dest: "{{ nfstest_build_dir }}" + version: "{{ nfstest_repo_commit }}" + update: true + retries: 3 + delay: 5 + register: clone_result + until: not clone_result.failed + tags: nfstest + +- name: Build the nfstest suite on the target node(s) +# noqa: command-instead-of-shell + environment: + PYTHONPATH: "{{ nfstest_build_dir }}" + ansible.builtin.shell: + cmd: "python setup.py build" + chdir: "{{ nfstest_build_dir }}" + register: build_result + failed_when: build_result.rc != 0 + changed_when: true + tags: nfstest + +- name: Install the nfstest suite on the target node(s) + become: true + become_flags: 'su - -c' + become_method: ansible.builtin.sudo + ansible.builtin.command: + cmd: "pip install ." + chdir: "{{ nfstest_build_dir }}" + register: install_result + failed_when: install_result.rc != 0 + changed_when: true + tags: nfstest + +- name: Set the test group for the target node + ansible.builtin.set_fact: + nfstest_test_group: "{{ ansible_host | regex_replace(kdevops_host_prefix + '-') | regex_replace('-dev') }}" + when: + - kdevops_workflows_dedicated_workflow|bool + tags: + - run_tests + - copy_results + +- name: Run the selected test group + ansible.builtin.include_role: + name: nfstest + tasks_from: "{{ nfstest_test_group }}/main.yml" + when: + - kdevops_workflows_dedicated_workflow|bool + tags: run_tests + +- name: Set the pathname of the results directory + ansible.builtin.set_fact: + nfstest_results_dir: "../workflows/nfstest/results/{{ ansible_kernel }}" + when: + - kdevops_workflows_dedicated_workflow|bool + tags: copy_results + +- name: Create the results directory on the control node + ansible.builtin.file: + path: "{{ nfstest_results_dir }}" + state: directory + mode: "u=rwx,g=rx,o=rx" + delegate_to: localhost + when: + - kdevops_workflows_dedicated_workflow|bool + tags: copy_results + +- name: Look for output logs on the target node + ansible.builtin.find: + paths: "/tmp" + patterns: "nfstest*.log" + file_type: file + register: nfstest_logs + when: + - kdevops_workflows_dedicated_workflow|bool + tags: copy_results + +- name: Copy the output logs to the control node + ansible.builtin.fetch: + src: "{{ item.path }}" + dest: "{{ nfstest_results_dir }}/{{ nfstest_test_group }}/" + flat: true + with_items: "{{ nfstest_logs.files }}" + loop_control: + label: "Copying {{ item.path | basename }} ..." + when: + - nfstest_logs.matched > 0 + - kdevops_workflows_dedicated_workflow|bool + changed_when: false + tags: copy_results diff --git a/playbooks/roles/nfstest/tasks/posix/main.yml b/playbooks/roles/nfstest/tasks/posix/main.yml new file mode 100644 index 000000000000..6dd2c4e0b022 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/posix/main.yml @@ -0,0 +1,56 @@ +--- +- name: Run nfstest_posix for NFSv3 + ansible.builtin.command: + argv: + - "nfstest_posix" + - "--createlog" + - "--nfsversion=3" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: posix_nfsv3_results + changed_when: false + failed_when: posix_nfsv3_results.rc != 0 and posix_nfsv3_results.rc != 1 + tags: run_tests + +- name: Run nfstest_posix for NFSv4.0 + ansible.builtin.command: + argv: + - "nfstest_posix" + - "--createlog" + - "--nfsversion=4.0" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: posix_nfsv40_results + changed_when: false + failed_when: posix_nfsv40_results.rc != 0 and posix_nfsv40_results.rc != 1 + tags: run_tests + +- name: Run nfstest_posix for NFSv4.1 + ansible.builtin.command: + argv: + - "nfstest_posix" + - "--createlog" + - "--nfsversion=4.1" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: posix_nfsv41_results + changed_when: false + failed_when: posix_nfsv41_results.rc != 0 and posix_nfsv41_results.rc != 1 + tags: run_tests + +- name: Run nfstest_posix for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_posix" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: posix_nfsv42_results + changed_when: false + failed_when: posix_nfsv42_results.rc != 0 and posix_nfsv42_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/sparse/main.yml b/playbooks/roles/nfstest/tasks/sparse/main.yml new file mode 100644 index 000000000000..6defab5311f7 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/sparse/main.yml @@ -0,0 +1,14 @@ +--- +- name: Run nfstest_sparse for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_sparse" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=all" + register: sparse_nfsv42_results + changed_when: false + failed_when: sparse_nfsv42_results.rc != 0 and sparse_nfsv42_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/tasks/ssc/main.yml b/playbooks/roles/nfstest/tasks/ssc/main.yml new file mode 100644 index 000000000000..b8e01345c032 --- /dev/null +++ b/playbooks/roles/nfstest/tasks/ssc/main.yml @@ -0,0 +1,28 @@ +--- +- name: Run nfstest_ssc intra tests for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_ssc" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=intra" + register: ssc_nfsv42_intra_results + changed_when: false + failed_when: ssc_nfsv42_intra_results.rc != 0 and ssc_nfsv42_intra_results.rc != 1 + tags: run_tests + +- name: Run nfstest_ssc inter tests for NFSv4.2 + ansible.builtin.command: + argv: + - "nfstest_ssc" + - "--createlog" + - "--nfsversion=4.2" + - "--server={{ nfstest_nfs_server_host }}" + - "--export=/export/{{ nfstest_nfs_server_export }}" + - "--runtest=inter" + register: ssc_nfsv42_inter_results + changed_when: false + failed_when: ssc_nfsv42_inter_results.rc != 0 and ssc_nfsv42_inter_results.rc != 1 + tags: run_tests diff --git a/playbooks/roles/nfstest/vars/Debian.yml b/playbooks/roles/nfstest/vars/Debian.yml new file mode 100644 index 000000000000..3acf39071fd3 --- /dev/null +++ b/playbooks/roles/nfstest/vars/Debian.yml @@ -0,0 +1,5 @@ +--- +nfstest_packages: + - nfs-common + - python3-pip + - tcpdump diff --git a/playbooks/roles/nfstest/vars/RedHat.yml b/playbooks/roles/nfstest/vars/RedHat.yml new file mode 100644 index 000000000000..4fdee14f2b1f --- /dev/null +++ b/playbooks/roles/nfstest/vars/RedHat.yml @@ -0,0 +1,5 @@ +--- +nfstest_packages: + - nfs-utils + - python3-pip + - tcpdump diff --git a/playbooks/roles/nfstest/vars/Suse.yml b/playbooks/roles/nfstest/vars/Suse.yml new file mode 100644 index 000000000000..4fdee14f2b1f --- /dev/null +++ b/playbooks/roles/nfstest/vars/Suse.yml @@ -0,0 +1,5 @@ +--- +nfstest_packages: + - nfs-utils + - python3-pip + - tcpdump -- 2.44.0