El lunes, 6 de marzo de 2023 a la(s) 16:08:22 UTC-3, Matt Martz escribió:

A few things here:

1) Your gist of that file, and what you indicate in your email are 
different, specifically the `if env in ["dev", "stg]` part


Sorry about this.
 

2) As a result of #1 the YAML renders incorrectly, causing that error

Here is the result of the template when `env: dev` is set:

---
Version: 2012-10-17
Statement:
  - Effect: Allow
    Action:
      - "s3:List*"
    Resource: "arn:aws:s3:::bucket"
  - Effect: Allow
    Action:
      - "s3:Get*"
            - "s3:Put*"
          Resource:
      - "arn:aws:s3:::bucket/dev"
      - "arn:aws:s3:::bucket/dev/*"

As such, your template needs to be adjusted with something like this, where 
the `{% if %}` and `{% endif %}` blocks aren't adding to the indentation, 
by being completely left justified:

---
Version: 2012-10-17
Statement:
  - Effect: Allow
    Action:
      - "s3:List*"
    Resource: "arn:aws:s3:::bucket"
  - Effect: Allow
    Action:
      - "s3:Get*"

{% if env in ["dev", "stg"] %}
      - "s3:Put*"
{% endif %}
    Resource:

      - "arn:aws:s3:::bucket/{{ env }}"
      - "arn:aws:s3:::bucket/{{ env }}/*"


Thank you for this clarification, what you suggested worked!
 

On Mon, Mar 6, 2023 at 12:40 PM Guido Accardo <[email protected]> wrote:

Hi Ansible community.,

I'd like to share a problem I'm having while trying lo load a yaml 
formatted template and perhaps getting feedback from you on how to make it 
work.

I wrote the following playbook: 
https://gist.github.com/gaccardo/2c12fc4aab443978fe33829129237cbc

If the content of "policy_content.yaml" is "pure" YAML, i.e: 
https://gist.github.com/gaccardo/3047c0c06d36d39a69d2d3c60a3daf4e, the task 
Create IAM Managed Policy works as expected, meaning the IAM policy gets 
created in my AWS account.

Now, instead if I change the file policy_content.yaml to the following: 
https://gist.github.com/gaccardo/fc30a3c40f8ff01d44b61ad6fec0a3b7, the task 
fails with the following error: 
https://gist.github.com/gaccardo/f27accb0dac958ab83c232bb347a292b.

This is how i'm calling the playbook:

$ ansible-playbook -e "selected_env=dev" policy.yml -vvv

Is it possible that the filter "from_yaml" is getting the template 
unredered from "lookup"?

The error says: "did not find expected '-' indicator" but I'm starting the 
lines within the Actions with the required "-"

...
 7  - Effect: Allow
 8    Action:
 9      - "s3:Get*"
10      {% if env in ["dev", "stg"] %}
11      - "s3:Put*"
12      {% endif %}
13   Resource:
14     - "arn:aws:s3:::bucket/{{ env }}"
15     - "arn:aws:s3:::bucket/{{ env }}/*"

Check lines 9 and 11.

Thank you in advance for you time. Best!

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an 
email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/40d7bc6c-69a8-49e3-89b3-c64b8767f0d6n%40googlegroups.com
 
<https://groups.google.com/d/msgid/ansible-project/40d7bc6c-69a8-49e3-89b3-c64b8767f0d6n%40googlegroups.com?utm_medium=email&utm_source=footer>
.



-- 
Matt Martz
@sivel
sivel.net

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/521818a4-edcf-4334-80de-1a328b8e51ben%40googlegroups.com.

Reply via email to