#python #docker #docker-compose #ansible #ansible-role
Вопрос:
У меня есть задача в моей роли Ansible Bitbucket, которая просто запускает два файла docker-compose.yml. При выполнении этого из Ansible происходит сбой, но когда я выполняю ту же команду по ssh на реальном сервере, она работает просто отлично. В настоящее время я выполняю свой playbook как root, и когда я вручную выполняю docker-compose-f <путь> вверх-d, я также являюсь root.
- name: Create and start services
- name: docker compose up
docker_compose:
project_src: "{{ bitbucket__install_path }}"
files: "{{ bitbucket__compose_files }}"
state: present
register: output
Ансибельная команда:
ansible-playbook -i инвентаризация/постановочные книги/bitbucket-сервер.yml -vvvv -kKu root-запрос-пропуск хранилища-запуск-при-выполнении задачи «Настройка bitbucket»
Ansible успешно запускает 2 из 3 контейнеров, но третий вылетает с ошибкой:
Ответ на ошибку от демона: Не удалось создать среду выполнения OCI: container_linux.go:380: запуск процесса контейнера вызван: exec: «/my_entrypoint.sh»: отказано в разрешении: неизвестная ошибка: не удалось запустить контейнеры: nginx_bitbucket_1
Мой вопрос в том, почему Ansible получает ошибку при выполнении вышеуказанной задачи во время выполнения «docker-compose-f <путь> up-d по ssh работает просто отлично? В чем разница между этими двумя случаями?
Комментарии:
1. вы не предоставили достаточно информации, чтобы ответить. Мое дикое предположение может заключаться в том, что вы запускаете его от другого пользователя по сравнению с вашим сеансом ssh.
Ответ №1:
Я нашел решение этой проблемы. Проблема в том, что поле файлы работало не так, как я ожидал.
Список имен файлов компоновки относительно project_src. Переопределяет docker-compose.yml или docker-compose.yaml. Файлы загружаются и объединяются в указанном порядке.
Я думал, что параметр files будет выполнять docker-compose-f <путь> для каждого элемента списка, определенного в параметре.
Я изменил свой код, чтобы использовать цикл, а не параметр files
- name: Create and start services
docker_compose:
project_src: "{{ bitbucket__install_path }}/{{ item }}"
state: present
loop:
- nginx
- bitbucket
Все закончилось успешно