我在这里遇到了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_~!@#$%^&*()-=<>,.?;:|]+$')
POSTGRESQL_DATABASE (regex: '^[a-zA-Z_][a-zA-Z0-9_]*$')
Or the following environment variable:
POSTGRESQL_ADMIN_PASSWORD (regex: '^[a-zA-Z0-9_~!@#$%^&*()-=<>,.?;:|]+$')
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?我真的不确定,因为我甚至无法得到错误输出。
答案 0 :(得分:2)
检查
docker ps -a
看看ansible是否设法至少创建了容器。如果是,请检查
docker logs postgres
希望这应该能给你一个线索,告诉你哪里失败了。如果您对此感到困惑,也许您可以发布一些(编辑过的)日志来显示它失败的位置?
答案 1 :(得分:0)
您可以使用registered.ansible_facts.docker_container.Output
进行此操作,其中registered
是您用来注册docker_container
播放的事实。
此处有更多信息:https://wordpress.com/post/carlosonunez.wordpress.com/1440