1
這是我在Ansible, Boto, AWS - Invalid type for parameter containerDefinitions[0].memory中收到的優秀答案的後續。我不理解如何正確地組合提供的答案。如何在jinja模板中結合json字典和列表
我在原來的ansible /角色/ ecs_cluster_init /任務/ main.yaml文件我有:
## ECS Task and Service Definitions
- block:
- name: Create ECS Service1 Task Definitions
ecs_taskdefinition:
region: "{{ region }}"
containers:
- name: "{{ item.name }}"
cpu: 0
essential: true
image: "{{ item.image }}"
memory: "{{ item.memory|int|abs }}"
mountPoints: "{{ item.mounts }}"
environment: "{{ item.env_vars }}"
portMappings: "{{ item.portmap }}"
entryPoint:
- "java"
- "-Xms{{ java_heap_size_initial }}"
- "-Xmx{{ java_heap_size_max }}"
- "-DlogDir=/host"
- "-Dcom.sun.net.ssl.checkRevocation=false"
- "-jar"
- "/app.jar"
logConfiguration:
logDriver: "{{ ecs_task_log_configuration.logDriver }}"
options:
max-size: "{{ ecs_task_log_configuration.options.max_size }}"
max-file: "{{ ecs_task_log_configuration.options.max_file }}"
family: "{{ service_prefix }}-{{ item.name }}-{{ env_name }}"
state: present
increment_revision: true
volumes: "{{ item.volumes }}"
register: service1_task_definition
with_items: "{{ ecs_task_definitions }}"
,對於沒有爲entryPoint服務工作的初步答案是要做到:
- name: Create ECS Service1 Task Definitions
ecs_taskdefinition:
region: "{{ region }}"
containers: "{{'['+dict(name=item.name, cpu=0, image=item.image, memory=item.memory|int)|to_json+']'}}"
with_items: "{{ ecs_task_definitions }}"
和如何處理入口點鍵的答案是:
entryPoint=('java^-Xms'+java_heap_size_initial+'^-Xmx'+java_heap_size_max+'^-DlogDir=/host^-Djava.security.egd=file:/dev/./urandom^-Dcom.sun.net.ssl.checkRevocation=false^-jar^/app.jar').split('^')
我沒有得到的是如何在我的ansible/roles/ecs_cluster_init/tasks/main.yaml文件中結合這兩者。如何將入口點和後續的logConfiguration列表放入容器字典中?
我絕對更喜歡簡單的方法,但使用'memory:{{item.memory | int | abs | int}}''時仍然收到「Invalid Type」錯誤信息。 –
使用「困難的方式」,我收到錯誤模板字符串模板錯誤:意外字符u'\\ u200c''。 200是內存值,但我不確定下面的「c」來自哪裏,除非模板/過濾器添加了該值。 –
'\ u200c是一個零寬度非木匠'。這可能是複製和粘貼的人工產物。我現在正在研究它。 – 2ps