-
Notifications
You must be signed in to change notification settings - Fork 313
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Referencing more than sceptre_user_data in jinja2 template #355
Comments
I have managed to work around this slightly by declaring a single variable in my stack config file that contains all the environment config values:
Then referencing by:
|
@et304383 Did you resolve your issue? Are you happy for me to close this? |
I guess my main problem is that in every stack config file I have to explicitly pass in the environment config. It would be nice if it was just available like this:
|
Does #256 describe the desired outcome? |
I don't see how. I just want environment config to be available to all stacks without having to pass in to sceptre user data. |
Issue #256 does seem kind of related, but the namespaces/global-config/command-line stuff it is mentioning seems to propose extra conventions. What makes the most sense to me for this ticket is just putting both |
Making environment_config available in the jinja2 context would be the most flexible. |
I agree. It will be a lot cleaner if we can simply have access to environment_config in jinja2 template without having to explicitly adding sceptre_user_data section in stack config file. |
This should be addressed in v2. Would anyone be willing to test on a simple setup? |
I don't believe this is. Just looking at the Stack template() method:
I believe that in order to provide solution here, we'll need to pass |
I can confirm that @m1keil is correct, this issue has not been addressed in V2. Also {{ environment_config }} isn't available in V2 either so @et304383 workaround doesn't work in V2. My workaround for this issue is to create the sceptre-identity-resolver. This is still just a workaround, I agree with @et304383 comment: "I just want environment config to be available to all stacks without having to pass in to scepture user data". |
Still not resolved in V2. How do I get the stack group name inside a stack group file? I want to be able to do this in a Jinja2 template:
|
Well, it seems that another magic variable is missing documentation, and I only discovered this by dumping stack_group_config:
I searched the docs for this: Please document this. It's a critical value that some of us call "environment" and need to reference. |
It's been a while since I thought about this but.. here is the relevant code, right? sceptre/sceptre/config/reader.py Line 417 in d45ffaf
Aren't we just saying here that after line 417 in the first link, we want to additionally add:
FWIW, my org recently did the v1 -> v2 upgrade, but that only took us as far as 2.3.0 and not up to the bleeding edge. Unfortunately rather than returning to mainline, we still had to port a lot of stuff from our v1 fork to a v2 fork along the way. These are mostly minor things but several items in that category (and it's easier to fork to preserve backwards compatibility if you have hundreds of stacks you don't want to change quickly). So this issue, as well as the custom jinja filters issue i mentioned here, which was closed but afaik never resolved, is part of the reason we need to maintain our fork. Would be great to see those reasons get smaller over time. |
bump? was there any resolution here? |
Hi @cleonard-godaddy. The answer is "no but kind of." No, nothing further has technically been added to the Jinja rendering. However, there is a new resolver which might help you out now:
Maybe this will help? |
@zaro0508 based on your comments above and Jon's I think we have a solution that has worked well enough for the current generation of Sceptre users and we should close this now. Thoughts? |
The idea of "this environment name" or "this group name" remains a basic and critical value that's used in virtually every stack template that anyone will ever write. And it's still useful to provide this somehow to all templates pretty directly without making a lot of assumptions about what's inside the stack config and without requiring custom plugins, because that is what is least surprising and what people really expect to see by default. If you require the work-around that
or similar is present inside every config, this is effectively requiring tight-coupling between templates and configs, and thus lowers the reusability of templates. That undermines the whole goal of sceptre as I understand it, because why separate config/templates anyway if they always have to be changed together? Other issues include but are not limited to:
I could go on in more detail about how small things like this are surprisingly harmful for fostering widespread adoption, but maybe this is clear enough already. If there's no acceptable simple fix similar to what's mentioned in #355 (comment) then I'd suggest just making every core-resolver that's used from config (like Both of the 2 options described above look worse IMHO compared to the obvious and intuitive |
@mattvonrocketstein You have mentioned above that you are running from a fork. Is that still the case? If so, can you show us the exact code you have added that helps me to understand where you are coming from? |
I'd like to reference global variables in config.yaml such as "environment".
I don't want to have to duplicate these values in every single stack config file.
The docs suggest that other vars should be accessible via
https://sceptre.cloudreach.com/latest/docs/environment_config.html
Not sure exactly where this can be used though.
Also, I'd like to be able to reference, say,
project_code
in a jinja2 template. Can't seem to do that either.Can you please look into exposing all variables to jinja2 templates?
The text was updated successfully, but these errors were encountered: