[英]ansible docker-compose module, different result from ansible than over ssh on the host
我的 Ansible Bitbucket 角色中有一個任務,它只是啟動兩個 docker-compose.yml 文件。 當從 Ansible 執行它時它會失敗,但是當我在實際服務器上通過 ssh 執行相同的命令時它工作得很好。 我目前正在以 root 身份執行我的劇本,當我手動執行 docker-compose -f <path> up -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 命令:
ansible-playbook -i inventory/staging playbooks/bitbucket-server.yml -vvvv -kKu root --ask-vault-pass --start-at-task "Setup bitbucket"
Ansible 成功啟動了 3 個容器中的 2 個,但第三個因錯誤而崩潰:
來自守護進程的錯誤響應:OCI 運行時創建失敗:container_linux.go:380:導致啟動容器進程:exec:“/my_entrypoint.sh”:權限被拒絕:未知錯誤:無法啟動容器:nginx_bitbucket_1
我的問題是,為什么 Ansible 在執行上述任務時會收到錯誤,同時執行“docker-compose -f <path> up -d over ssh 工作正常?這兩種情況有什么區別?”
我找到了這個問題的解決方案。 問題是 files 字段沒有按我預期的那樣運行。
相對於 project_src 的 Compose 文件名列表。 覆蓋 docker-compose.yml 或 docker-compose.yaml。 文件按給定的順序加載和合並。
我認為 files 參數會在參數中定義的每個列表元素上執行 docker-compose -f <path> 。
我更改了代碼以使用循環而不是 files 參數
- name: Create and start services
docker_compose:
project_src: "{{ bitbucket__install_path }}/{{ item }}"
state: present
loop:
- nginx
- bitbucket
它成功完成
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.