Hi,
I've been struggling to get IAM policy and IAM role working properly,
These are the two modules with the issues:
IAM_ROLE is where the issue happens:
when creating a IAM_policy works and it accepts a policy_json file, with no issues.
next step is to create IAM_role and assotate that policy with the role and add a "Trust relationship" as AWS calls it. this is passed as a small json file but fails at assume_role_policy_document:
The Json is very simple,
{"Version": "2008-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "
ec2.amazonaws.com"},"Action": "sts:AssumeRole"}]}
task config:
- name: Create IAM Role with policy
iam_role:
name: "iamrole-{{ aws_deploy_stage }}-{{ aws_deployment_tag }}"
state: present
assume_role_policy_document: "{{ lookup('file'.'../templates/role-trust-policy-document.json) }}"
managed_policy:
- arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM
- arn:aws:iam::aws:policy/AWSXrayFullAccess
- "policy-{{ aws_deploy_stage }}-{{ aws_deployment_name }}"
fatal: [localhost]: FAILED! => {
"failed": true,
"msg": "template error while templating string: expected name or number. String: {{ lookup
('file'.'../templates/role-trust-policy-document.json')|to_json }}"
}
if I just pass a string in double quotes "" I managed to make the module pass this to AWS and it expects JSON
"msg": "An error occurred (MalformedPolicyDocument) when calling the CreateRole operation:
This policy contains invalid Json",
"response_metadata": {
"http_headers": {
"connection": "close",
"content-length": "288",
"content-type": "text/xml",
"date": "Wed, 28 Jun 2017 09:12:50 GMT",
"x-amzn-requestid": "f61bb6b4-5be1-11e7-9679-d5c1bf3ed860"
},
"http_status_code": 400,
"request_id": "f61bb6b4-5be1-11e7-9679-d5c1bf3ed860",
"retry_attempts": 0
}
after spending quite some time googling and reading github issues, there is allot of related issues, both closed and opened but none accurately tell where the issue is
I hope someone else encounters this issue. any feedback welcome