मैं Ansible (v2.0) के लिए ecs_taskdefinition मॉड्यूल का उपयोग करने की कोशिश कर रहा हूं, और मुझे लगता है कि मैं मूल उत्तरदायी YAML Gotcha में फंस गया हूं।उत्तर में, परिवर्तनीय मानों को पूर्णांक में मजबूर करने का कोई तरीका है?
मॉड्यूल के लिए उदाहरण के अनुसार, अगर मैं cpu
और memory
के लिए पूर्णांक मूल्यों प्रदान करते हैं, इस के रूप में की उम्मीद काम करता है:
- name: "Create task definition"
ecs_taskdefinition:
containers:
- name: simple-app
cpu: 10
memory: 300
essential: true
image: "httpd:2.4"
portMappings:
- containerPort: 80
hostPort: 80
हालांकि, मैं memory
और cpu
चाहते हैं templatable किया जाना है। ताकि मैं विभिन्न वातावरणों के लिए एक ही कंटेनर परिभाषा का उपयोग कर सकूं। वास्तव में पूर्णांक के लिए इन मूल्यों को बदलने की कोशिश करने के लिए Ansible मॉड्यूल अद्यतन करने के लिए बिना
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter containerDefinitions[0].memory, value: 1920, type: <type 'str'>, valid types: <type 'int'>, <type 'long'>
Invalid type for parameter containerDefinitions[0].cpu, value: 2560, type: <type 'str'>, valid types: <type 'int'>, <type 'long'>
इस सुधारी जा सकने वाली है:
APP_ENV: "test"
test:
containers:
simple_app:
memory: 1920
cpu: 2560
- name: "Create task definition"
ecs_taskdefinition:
containers:
- name: simple-app
cpu: "{{vars.get(APP_ENV).containers.simple_app.cpu | int}}"
memory: "{{vars.get(APP_ENV).containers.simple_app.memory | int}}"
essential: true
image: "httpd:2.4"
portMappings:
- containerPort: 80
hostPort: 80
ऊपर के साथ
, मैं botocore एपीआई से त्रुटि मिलती है?
जैसा कि मुझे प्लेबुक से इसे संबोधित करने का कोई तरीका नहीं मिला है; इस विशिष्ट मॉड्यूल के लिए इस सुविधा का सुझाव। https://github.com/ansible/ansible-modules-extras/pull/1715 –
मैं परिवर्तनीय 2.0.2 में परिवर्तनीय | int का परीक्षण करता हूं और ठीक काम करता है। मुझे लगता है कि त्रुटि उद्धरण है "कृपया {{vars.get (APP_ENV) से पहले और बाद में उद्धरण हटाएं .containers.simple_app.cpu | int}} और पुनः प्रयास करें। –
@RaulHugo मुझे नहीं लगता कि यह उद्धरण के बिना काम करेगा [Ansible doc] (http://docs.ansible.com/ansible/YAMLSyntax.html#gotchas) के अनुसार। यह कहता है, "आगे, उत्तर परिवर्तनीय के लिए" {{var}} "का उपयोग करता है। यदि कॉलन के बाद एक मान "{" से शुरू होता है, तो वाईएएमएल को लगता है कि यह एक शब्दकोश है, इसलिए आपको इसे उद्धृत करना होगा, जैसे: foo: "{{variable}}" '' ' –