Amazon ECSのドッキング・コンテナで実行されている複数のサービスがあり、各サービスの合計システム・メモリのパーセンテージを割り当てています。私は次のエントリを持っている私のansible /役割/ ecs_cluster_init /デフォルト/ main.yamlファイルで不可能なBoto、AWS - パラメータcontainerDefinitions [0]の無効なタイプ.memory
:
docker_memory_limit_service1: 17
docker_memory_limit_service2: 12
docker_memory_limit_service3: 16
docker_memory_limit_service4: 10
docker_memory_limit_service5: 16
docker_memory_limit_service6: 10
total_system_memory : 2048
サービス4はわずか10%を取得しながら、サービス1は、全システムメモリの17%を取得する必要があります。これは、インスタンスサイズの変更に容易に対応するためです。
私ansible /役割/ ecs_cluster_init/VARS/main.yamlファイルでIは、(部分的部分)を有する:
ecs_task_definitions:
- name: "service1"
elb: "{{ elb_creation_output.results[0].elb.dns_name }}"
image: "{{ service1_docker_image }}"
port: "{{ ports.service1 }}"
memory: "{{ (total_system_memory * (docker_memory_limit_service1|int/100))|int|abs }}"
明瞭性を確保するために、サービス・メモリ値を100で割ることによって(割合になっています)、システム全体のメモリの一部を決定します。私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 }}"
私は、私は次のエラーを受け取る役割のために脚本を実行します。
TASK [ecs_cluster_create : Create ECS Service1 Task Definitions] ****************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: Invalid type for parameter containerDefinitions[0].memory, value: 204, type: <type 'str'>, valid types: <type 'int'>, <type 'long'>
どれでも私が間違ってやっているアイデアか、メモリの値を指定していないところがintであるべきですか?
'{{item.memory | int | to_json}}' 'to_json'フィルタを追加しようとすることができます – Vor
提案を適用した後も同じエラーメッセージが表示されます。 –