Fwiw, Juju keeps "source: user" for those values modified by an user so you can query it like:
$ juju config keystone --format json \ | jq -c '.settings | to_entries[] | select(.value.source=="user").key'
"openstack-origin" "os-admin-hostname" "os-internal-hostname" "os-public-hostname" "region" "vip"
$ juju config keystone --format json \ | jq -c '.settings | to_entries[] | select(.value.source=="user") | [.key, .value.value]'
["openstack-origin","cloud:focal-yoga"] ["os-admin-hostname","admin.my.example.com"] ["os-internal-hostname","internal.my.example.com"] ["os-public-hostname","public.my.example.com"] ["region","myRegion"] ["vip","10.100.0.11"]
Fwiw, Juju keeps "source: user" for those values modified by an user so you can query it like:
$ juju config keystone --format json \ .value. source= ="user" ).key'
| jq -c '.settings | to_entries[] | select(
"openstack-origin" hostname" hostname"
"os-admin-hostname"
"os-internal-
"os-public-
"region"
"vip"
$ juju config keystone --format json \ .value. source= ="user" ) | [.key, .value.value]'
| jq -c '.settings | to_entries[] | select(
["openstack- origin" ,"cloud: focal-yoga" ] hostname" ,"admin. my.example. com"] hostname" ,"internal. my.example. com"] hostname" ,"public. my.example. com"] ,"myRegion" ] "10.100. 0.11"]
["os-admin-
["os-internal-
["os-public-
["region"
["vip",