From: Chuck Lever <cel@kernel.org>
To: Daniel Gomez <da.gomez@kernel.org>, kdevops@lists.linux.dev
Cc: Chuck Lever <chuck.lever@oracle.com>
Subject: Re: [RFC PATCH 2/2] ansible.cfg: generate an ansible.cfg file in TOPDIR
Date: Mon, 1 Sep 2025 11:03:36 -0400 [thread overview]
Message-ID: <e9964fba-fe0b-484a-882d-ec41d33f154e@kernel.org> (raw)
In-Reply-To: <5f05bdbc-d13b-4e2f-829d-095a2df2a24c@kernel.org>
On 9/1/25 8:00 AM, Daniel Gomez wrote:
> On 28/08/2025 22.28, Chuck Lever wrote:
>> From: Chuck Lever <chuck.lever@oracle.com>
>>
>> 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?
Well I think that would work for my particular usage, however: If I'm
reading between the lines of the Ansible pathname help texts, it appears
that these settings can specify search paths, not a single file.
In particular, the ANSIBLE_CFG_INVENTORY_FILE string is a comma-
separated list. And, if ANSIBLE_CFG_FILE is an empty string, then there
is a default set of locations /outside of/ the CWD that Ansible searches
for a configuration.
I'm not against your suggestion of specifying a sandbox pathname at all;
that would be a good UX simplification. There are these details, though,
and I don't have any suggestions about that at the moment.
> 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 <chuck.lever@oracle.com>
>> ---
>> 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"
--
Chuck Lever
next prev parent reply other threads:[~2025-09-01 15:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 20:28 [RFC PATCH 0/2] Set TOPDIR at run time Chuck Lever
2025-08-28 20:28 ` [RFC PATCH 1/2] Set TOPDIR_PATH and generate its sha256sum " Chuck Lever
2025-08-29 11:19 ` Luis Chamberlain
2025-08-29 13:38 ` Chuck Lever
2025-09-01 11:29 ` Daniel Gomez
2025-08-28 20:28 ` [RFC PATCH 2/2] ansible.cfg: generate an ansible.cfg file in TOPDIR Chuck Lever
2025-08-29 11:23 ` Luis Chamberlain
2025-08-29 13:39 ` Chuck Lever
2025-08-29 16:59 ` Luis Chamberlain
2025-09-01 12:00 ` Daniel Gomez
2025-09-01 15:03 ` Chuck Lever [this message]
2025-09-01 17:07 ` Daniel Gomez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e9964fba-fe0b-484a-882d-ec41d33f154e@kernel.org \
--to=cel@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=da.gomez@kernel.org \
--cc=kdevops@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.