If you're using Pivotal Spring Cloud Services, you can create a service using multiple searchPaths
like this:
cf create-service -c '{ "git": { "uri": "https://github.com/dmikusa-pivotal/cook-config.git", "label": "search-paths", "searchPaths": "dev,prod" } }' cook-config-server
The searchPaths
argument just takes a comma separated list of search paths/patterns.
The repository that you're pointed to, should then have top level folders called dev
and prod
. Config server will then return <app-name>.properties
(all all the other variations it supports) from within the search path folder.
You can validate that you're receiving multiple search paths worth of data, by running a command like this:
curl -k -H "Authorization: bearer $(curl -k -s -X POST 'https://p-spring-cloud-services.uaa.<system_domain>/oauth/token' -d 'grant_type=client_credentials&client_id=<insert client id>&client_secret=<insert client_secret>' | jq .access_token | cut -d '"' -f 2)" <insert uri>/cook/prod
You need to replace <system_domain>
with the system domain for your foundation, <insert client id>
and <insert client secret>
with your service instance's client id and secret (run cf env <app>
against an app that has a bound SCS Config server to get these values).
This command will do two things. First, it will use the client_id
and client_secret
to fetch a token. The token is then used in a second request to actually request some data from the config server.
You should see output like this, if you're getting config from multiple search paths (note how there's data from dev
and prod
subfolders):
{"name":"cook","profiles":["prod"],"label":null,"version":"5d5a3f26022dd00becdbad855c7d27ae530685f7","state":null,"propertySources":[{"name":"https://github.com/dmikusa-pivotal/cook-config.git/prod/cook.properties","source":{"cook.special":"Prod Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/dev/cook.properties","source":{"cook.special":"Dev Config"}},{"name":"https://github.com/dmikusa-pivotal/cook-config.git/cook.properties","source":{"cook.special":"Not in Folder config"}}]}
Hope that helps!