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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox