Re: [RFC PATCH 2/2] ansible.cfg: generate an ansible.cfg file in TOPDIR

Daniel Gomez <[email protected]>
Newsgroups dev.linux.lists.kdevops
Organization kernel.org
Message-ID <[email protected]>
On 28/08/2025 22.28, Chuck Lever wrote:
> From: Chuck Lever <[email protected]>
> 
> 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 <[email protected]>
> ---
>  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"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.