#docker #ansible
#docker #ansible
Вопрос:
У меня возникла проблема с командой ansible docker_container.
- name: Start Docker
docker_container:
name: postgres
image: "centos/postgresql-94-centos7"
state: started
recreate: yes
pull: yes
env:
POSTGRESQL_USER: "test"
POSTGRESQL_PASSWORD: "test"
POSTGRESQL_DATABASE: "test"
POSTGRESQL_MAX_CONNECTIONS: 100
POSTGRESQL_SHARED_BUFFERS: 32M
exposed_ports:
- 5432
ports:
- 5432:5432
become: yes
become_method: sudo
Когда эта команда выполняется, она загружает контейнер, но контейнер немедленно завершает работу с некоторым выводом, который я не вижу, потому что ansible по какой-то причине не выводит sys для этого.
Вот пример некоторого вывода, который печатается, когда контейнер отказывается загружаться (из-за неправильной конфигурации):
$ sudo docker run --name postgres -e POSTGRESQL_USER="test" -p 5432:5432 centos/postgresql-94-centos7
You must either specify the following environment variables:
POSTGRESQL_USER (regex: '^[a-zA-Z_][a-zA-Z0-9_]*$')
POSTGRESQL_PASSWORD (regex: '^[a-zA-Z0-9_~!@#$%^amp;*()-=<>,.?;:|] $')
POSTGRESQL_DATABASE (regex: '^[a-zA-Z_][a-zA-Z0-9_]*$')
Or the following environment variable:
POSTGRESQL_ADMIN_PASSWORD (regex: '^[a-zA-Z0-9_~!@#$%^amp;*()-=<>,.?;:|] $')
Or both.
Optional settings:
POSTGRESQL_MAX_CONNECTIONS (default: 100)
POSTGRESQL_MAX_PREPARED_TRANSACTIONS (default: 0)
POSTGRESQL_SHARED_BUFFERS (default: 32MB)
For more information see /usr/share/container-scripts/postgresql/README.md
within the container or visit https://github.com/openshift/postgresql.
Это вывод, который я не вижу, когда я запускаю его из ansible, он просто говорит, что он запущен (успешно), а затем я проверяю docker ps и он не запущен, потому что, по-видимому, он сразу вышел. Что еще более странно, так это то, что я могу заставить это работать нормально с той же конфигурацией, переданной в командный модуль ansible, но с docker_container, возможно, он неправильно передает env? Я действительно не уверен, потому что я даже не могу получить вывод ошибки.
Ответ №1:
Проверьте
docker ps -a
чтобы узнать, удалось ли ansible хотя бы создать контейнер. Если это произошло, проверьте
docker logs postgres
Надеюсь, это должно дать вам представление о том, где происходит сбой. Если вас это смущает, может быть, вы можете опубликовать некоторые (отредактированные) журналы, чтобы показать, где происходит сбой?
Ответ №2:
Вы можете сделать это с registered.ansible_facts.docker_container.Output
помощью , где registered
тот факт, который вы использовали для регистрации своей docker_container
игры.
Дополнительная информация здесь: https://wordpress.com/post/carlosonunez.wordpress.com/1440