Сбой команды Ansible docker_container без вывода

#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