Próbuję użyć modułu ecs_taskdefinition dla Ansible (v2.0) i myślę, że utknąłem w podstawowym wątku Ansam YAML.W Ansible, czy istnieje sposób na wymuszenie wartości zmiennych na liczbę całkowitą?
Jak na przykład modułu, jeśli dane dotyczące wartości całkowitej w przypadku cpu
i memory
ten działa, jak oczekiwano
- 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
Chociaż chciałbym memory
i cpu
być templatable. Tak, że będę mógł użyć tej samej definicji kontenera dla różnych środowisk.
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
Z powyżej, otrzymuję błąd z API botocore:
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'>
Czy to naprawić bez konieczności aktualizowania modułu ansibl rzeczywiście spróbować przekonwertować te wartości do liczb całkowitych?
Ponieważ nie znalazłem żadnego sposobu, aby rozwiązać ten problem z poradnika; sugerując tę funkcję temu konkretnemu modułowi. https://github.com/ansible/ansible-modules-extras/pull/1715 –
Testuję zmienną | int w ansible 2.0.2 i działa dobrze. Myślę, że błąd jest cytatem "" proszę usuwać cytaty przed i po {{vars.get (APP_ENV) .containers.simple_app.cpu | int}} i spróbuj ponownie. –
@RaulHugo Nie sądzę, że będzie działało bez cytatów, jak na [Dokumencie do dyskusji] (http://docs.ansible.com/ansible/YAMLSyntax.html#gotchas). Mówi, że '' 'Dalej, Ansible używa" {{var}} "dla zmiennych. Jeśli wartość po dwukropku zaczyna się od "{", YAML uzna to za słownik, więc musisz go zacytować, tak: foo: "{{zmienna}}" '' ' –