Я новичок в Ansible, Ansible Tower и AWS Cloud Formation, и я пытаюсь использовать Ansible Tower для развертывания контейнера EC2 с использованием шаблона Cloud Formation. Я пытаюсь запустить задание развертывания, и я столкнулся с этой ошибкой ниже.Развертывание стека облаков в AWS с использованием Ansible Tower
TASK [create/update stack] *****************************************************
task path: /var/lib/awx/projects/_6__api/tasks/create_stack.yml:2
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: awx
<127.0.0.1> EXEC /bin/sh -c '(umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1470427494.79-207756006727790 `" && echo ansible-tmp-1470427494.79-207756006727790="` echo $HOME/.ansible/tmp/ansible-tmp-1470427494.79-207756006727790 `") && sleep 0'
<127.0.0.1> PUT /tmp/tmpgAsKKv TO /var/lib/awx/.ansible/tmp/ansible-tmp-1470427494.79-207756006727790/cloudformation
<127.0.0.1> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-coqlkeqywlqhagfixtfpfotjgknremaw; LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8 AWS_DEFAULT_REGION=us-west-2 LC_MESSAGES=en_US.UTF-8 /usr/bin/python /var/lib/awx/.ansible/tmp/ansible-tmp-1470427494.79-207756006727790/cloudformation; rm -rf "/var/lib/awx/.ansible/tmp/ansible-tmp-1470427494.79-207756006727790/" > /dev/null 2>&1'"'"' && sleep 0'
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_name": "cloudformation"}, "module_stderr": "/bin/sh: /usr/bin/sudo: Permission denied\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false}
Это задача создания/обновления:
---
- name: create/update stack
cloudformation:
stack_name: my-stack
state: present
template: templates/stack.yml
template_format: yaml
template_parameters:
VpcId: "{{ vpc_id }}"
SubnetId: "{{ subnet_id }}"
KeyPair: "{{ ec2_keypair }}"
DbUsername: "{{ db_username }}"
DbPassword: "{{ db_password }}"
InstanceCount: "{{ instance_count | default(1) }}"
tags:
Environment: test
register: cf_stack
- debug: msg={{ cf_stack }}
when: debug is defined
пьес, которые анзибль Tower выполняет это site.yml файл:
---
- name: Deployment Playbook
hosts: localhost
connection: local
gather_facts: no
environment:
AWS_DEFAULT_REGION: "{{ lookup('env', 'AWS_DEFAULT_REGION') | default('us-west-2', true) }}"
tasks:
- include: tasks/create_stack.yml
- include: tasks/deploy_app.yml
Это то, что моя папка Playbook структура выглядит например:
/deploy
/group_vars
all
/library
aws_ecs_service.py
aws_ecs_task.py
aws_ecs_taskdefinition.py
/tasks
stack.yml
/templates
site.yml
Я все основываюсь на многоракурсном курсе Джастина Менги «Непрерывная доставка с использованием Docker и Ansible», но он использует Jenkins, а не Ansible Tower, что, вероятно, является причиной отключения. В любом случае, надеюсь, что информации достаточно, дайте мне знать, если я также должен предоставить файл stack.yml. Файлы под каталогом библиотеки - это настраиваемые модули Menga из его видеокурса.
Спасибо за чтение всего этого и за любую потенциальную помощь! Это ссылка на его развернутый репозиторий для воспроизведения, который я тщательно смоделировал после, https://github.com/jmenga/todobackend-deploy. Вещи, которые я вынул, - это материал DB RDS.
Вы используете Ansible с '--become' или' -b' (или старыми '--sudo' или' -s')? Похоже, он пытается повысить привилегии и провалиться. Эта задача не должна вообще подниматься (и на самом деле может возникнуть проблема, если ваши учетные данные AWS env vars находятся в вашем профиле пользователя, а не в корневом каталоге) – ydaetskcoR
@ydaetskcoR, если вы сделаете это ответом, а не комментарием, Примите это как ответ. Проблема заключалась в том, что я включил «Включить эвальвацию привилегий» в шаблоне задания. Спасибо! – Justin