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 28A4A6A8D2 for ; Mon, 1 Sep 2025 12:00:54 +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=1756728056; cv=none; b=TAb1rhqhELf4UfSWAaben+vYJFERhEE54CLmcP/yetyDHGkbxQgvyrApgwgZHNWVV2lLv+781mnHbnTB/IM5W4I6z+/0T+yvCKtiS6xse865O9sYY+EBDgAh3ZdSaThEAsnFSnSm71EoBNgBkXHvL7ABtpY+/eCT/6wN0R9IAHo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756728056; c=relaxed/simple; bh=dSlSSDEiXMzyq2XOFE+O6mIu/6Uiov3iWFKoefU3lGY=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=D9ODc3mQgh0cIMmyVGCnFuALschbDzgI/46uzbkmnI3Fci/h0uw0q2B9vM+xgVH3kc0FdOE8bBbmGUcQtFECOEA4jr1GJqeOh36zJ6mVqReCm2m2ymFFJFeG9DfJwxOrq6FmBA/OIANsM/JF/58jZhlZE8w7NcVmL8JbcrYO1OY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=fr8UmvrI; 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="fr8UmvrI" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D656C4CEF0; Mon, 1 Sep 2025 12:00:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1756728054; bh=dSlSSDEiXMzyq2XOFE+O6mIu/6Uiov3iWFKoefU3lGY=; h=Date:Reply-To:Subject:To:Cc:References:From:In-Reply-To:From; b=fr8UmvrIQLkh2rHYXFk+9da/ggjL4lQzweBPiXqIN6yMbTcjAg1rJlbPiKt0Zjr+z miZpYoWMG03qNXjK6Ci0EO5Ih9drsWqIMTXwb3Ke2USTO5t6yYnhBfUXYoYB4Vzeh7 +DoWWrYFhotTKBYYtSFDEHo6VNW4QIQMQ9FGWyVE/9MBISOPL0uRmVsPiybjz27Uvd sfyl0C1UVLIJHIYr6NpxFbSqtUdFn5fVB7AV/IKvsONfze/7vnvp3vFulWgI45ZoZc NAOI/B0YMz+i5ewY/Cxb2XkEyDC7j6d7Wa0LCWmx7MAHc9sNLQhk0EX+nQ7aNZ6m67 lJ+agN3ecuiWA== Message-ID: <5f05bdbc-d13b-4e2f-829d-095a2df2a24c@kernel.org> Date: Mon, 1 Sep 2025 14:00:52 +0200 Precedence: bulk X-Mailing-List: kdevops@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Reply-To: Daniel Gomez Subject: Re: [RFC PATCH 2/2] ansible.cfg: generate an ansible.cfg file in TOPDIR To: Chuck Lever , kdevops@lists.linux.dev Cc: Chuck Lever References: <20250828202827.3253499-1-cel@kernel.org> <20250828202827.3253499-3-cel@kernel.org> Content-Language: en-US From: Daniel Gomez Organization: kernel.org In-Reply-To: <20250828202827.3253499-3-cel@kernel.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 28/08/2025 22.28, Chuck Lever wrote: > From: Chuck Lever > > I need an ansible.cfg that is generated by the Kconfig menu, but > whose pathname is selected dynamically based on where kdevops is > being run rather than having that path baked into the .config. I'm trying to review the previous conversation before these patches as well as this series. Please, let me know if I'm understanding something wrong: I think what we need is not to have individual configuration paths (as we have now) for ansible.cfg, inventory, etc. What we want is to have one sandbox folder, our TOPDIR, and have our kdevops sandbox directory there. All files generated and consumed by kdevops should then use that path. Would this work? See below: kdevops-tree $ make defconfig-selftest-xarray O=path/to/sandbox0 # Now path/to/sandbox0 contains the generated .config, extra_vars.yml, etc kdevops-tree $ make menuconfig O=path/to/sandbox0 kdevops-tree $ make O=path/to/sandbox0 kdevops-tree $ make bringup O=path/to/sandbox0 ... kdevops-tree $ make defconfig-tmpfs O=path/to/sandbox1 ... path/to/sandbox0 $ make linux path/to/sandbox0 $ make selftests path/to/sandbox0 $ make selftests-xarray ... path/to/sandbox1 $ make path/to/sandbox1 $ make bringup path/to/sandbox1 $ make linux path/to/sandbox1 $ make fstests path/to/sandbox1 $ make fstests-baseline To clarify: instead of letting users override individual file paths, we allow customization of the topdir directory (with O=) where all files are created. If O= is not passed, then PWD is assumed. I think it would still be useful to support customizing individual files, but only relative to TOPDIR. That would keep the structure cleaner, for example, using subdirectories for Ansible files, kconfigs, SSH, virsh, and so on. > Signed-off-by: Chuck Lever > --- > Makefile | 8 ++++++++ > kconfigs/Kconfig.ansible_cfg | 12 ++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/Makefile b/Makefile > index b6fdbe67fc07..b014faa5632e 100644 > --- a/Makefile > +++ b/Makefile > @@ -27,10 +27,15 @@ KDEVOPS_NODES_ROLE_TEMPLATE_DIR := $(KDEVOPS_PLAYBOOKS_DIR)/roles/gen_nodes/tem > export KDEVOPS_NODES_TEMPLATE := > export KDEVOPS_MRPROPER := > > +ifeq (y,$(CONFIG_ANSIBLE_CFG_FILE_DEFAULT)) > +ANSIBLE_CFG_FILE := $(TOPDIR_PATH)/ansible.cfg > +export ANSIBLE_CONFIG := $(ANSIBLE_CFG_FILE) > +else What I'm suggesting above is to always use this new option. And perhaps keep ANSIBLE_CFG_FILE configurable but inside TOPDIR. For example: ANSIBLE_CFG_FILE=ansible/ansible.cfg. > ifneq ($(strip $(CONFIG_ANSIBLE_CFG_FILE)),) > ANSIBLE_CFG_FILE := $(shell echo $(CONFIG_ANSIBLE_CFG_FILE) | tr --delete '"') > export ANSIBLE_CONFIG := $(ANSIBLE_CFG_FILE) > endif > +endif > ANSIBLE_INVENTORY_FILE := $(shell echo $(CONFIG_ANSIBLE_CFG_INVENTORY) | tr --delete '"') > > KDEVOPS_INSTALL_TARGETS := > @@ -86,6 +91,9 @@ CFLAGS += $(INCLUDES) > ANSIBLE_EXTRA_ARGS += kdevops_version='$(PROJECTRELEASE)' > ANSIBLE_EXTRA_ARGS += topdir_path_has_sha256sum='$(TOPDIR_PATH_HAS_SHA256SUM)' > ANSIBLE_EXTRA_ARGS += topdir_path_sha256sum='$(TOPDIR_PATH_SHA256SUM)' > +ifeq (y,$(CONFIG_ANSIBLE_CFG_FILE_DEFAULT)) > +ANSIBLE_EXTRA_ARGS += ansible_cfg_file='$(ANSIBLE_CFG_FILE)' > +endif > > export KDEVOPS_HOSTS_TEMPLATE := hosts.j2 > > diff --git a/kconfigs/Kconfig.ansible_cfg b/kconfigs/Kconfig.ansible_cfg > index dbd189f5d19e..a44f760912cf 100644 > --- a/kconfigs/Kconfig.ansible_cfg > +++ b/kconfigs/Kconfig.ansible_cfg > @@ -18,6 +18,16 @@ config ANSIBLE_CFG_INVENTORY_SET_BY_CLI > bool > default $(shell, scripts/check-cli-set-var.sh KDEVOPS_HOSTS) > > +config ANSIBLE_CFG_FILE_DEFAULT > + bool "Use a sensible default location for the ansible.cfg file" > + default N > + help > + When this option is set to Y, kdevops creates an ansible.cfg > + in a sensible default location, using the settings defined > + in this Kconfig menu. > + > +if !ANSIBLE_CFG_FILE_DEFAULT > + I think we don't need this if you agree with the approach above. > config ANSIBLE_CFG_FILE > string "Ansible configuration file" > output yaml > @@ -41,6 +51,8 @@ config ANSIBLE_CFG_FILE > For more details, refer to the Ansible documentation: > https://docs.ansible.com/ansible/latest/reference_appendices/config.html#the-configuration-file > > +endif # ANSIBLE_CFG_FILE_DEFAULT > + > menu "Ansible Callback Plugin Configuration" > choice > prompt "Ansible Callback Plugin"