我想保存在亞馬遜EC2註冊神器碼頭工人的形象,通過封隔器(和ansible)內置
我的限制: 構建需要由Bitbucket管道觸發。因此,構建步驟需要在Bitbucket管道本身或AWS EC2實例/容器中執行。
這是因爲並非所有開發機器都必須具有從其本地環境構建的權限/軟件包。我只希望將這些圖像作爲自動CI過程的結果來構建。
我曾嘗試:
使用帕克,我能夠遠程建立的AMI。我可以使用Packer構建Docker鏡像(本地構建並遠程推送到Amazon ECR)。
但是,在Docker容器中執行構建步驟的Bitbucket管道已經無法訪問docker守護進程'docker run'。
我在到位桶管道收到錯誤:
+ packer build ${BITBUCKET_CLONE_DIR}/build/pipelines_builder/template.json
docker output will be in this color.
==> docker: Creating a temporary directory for sharing data...
==> docker: Pulling Docker image: hashicorp/packer
docker: Using default tag: latest
docker: latest: Pulling from hashicorp/packer
docker: 88286f41530e: Pulling fs layer
...
...
docker: 08d16a84c1fe: Pull complete
docker: Digest: sha256:c093ddf4c346297598aaa13d3d12fe4e9d39267be51ae6e225c08af49ec67fc0
docker: Status: Downloaded newer image for hashicorp/packer:latest
==> docker: Starting docker container...
docker: Run command: docker run -v /root/.packer.d/tmp/packer-docker426823595:/packer-files -d -i -t hashicorp/packer /bin/bash
==> docker: Error running container: Docker exited with a non-zero exit status.
==> docker: Stderr: docker: Error response from daemon: authorization denied by plugin pipelines: Command not supported..
==> docker: See 'docker run --help'.
==> docker:
Build 'docker' errored: Error running container: Docker exited with a non-zero exit status.
Stderr: docker: Error response from daemon: authorization denied by plugin pipelines: Command not supported..
See 'docker run --help'.
==> Some builds didn't complete successfully and had errors:
--> docker: Error running container: Docker exited with a non-zero exit status.
Stderr: docker: Error response from daemon: authorization denied by plugin pipelines: Command not supported..
See 'docker run --help'.
==> Builds finished but no artifacts were created.
下面引用了一切(從link拍攝):
其他命令,如搬運工來看,目前禁止對於我們的共享構建基礎結構中的 安全原因。
所以,我知道爲什麼會發生以下情況。這是我面臨的限制。我知道我需要找到一個替代方案。
一種可能的解決方案: 我能想到的此刻,一個到位桶管道使用具有terraform和ansible安裝在圖像中,包含以下的唯一解決方案:
ansible本地:
- terraform申請(旋轉加速從AMI實例/容器ansible和封隔器安裝)
ansible遠程(上述的實例)
- 克隆DEVOPS與封隔器構建腳本回購它
- 執行封隔器生成命令(建立命令取決於ansible,版本會創建EC2容器註冊表圖像)
ansible本地
- terraform破壞
上述解決方案是否可行?有替代品嗎? Packer不能運行命令並從ECS中遠程運行的容器提交?
我的長期解決方案是隻使用bitbucket管道來觸發AWS中的lambda函數,這將在我們的EC2容器註冊表中啓動容器並在那裏執行構建。更多的控制,我們可以讓開發人員從他們的機器觸發lambda函數(具有更多的定製動態變量)。
我已經成功地使用了Bitbucket Pipelines中的打包器和terraform(具有權限和所有設置)。只是在包裝器template.json有一個類型爲'docker'的構造器出現問題時,因爲後臺Packer實際上執行了docker run命令。我正在尋找一種方式讓Packer在Bitbucket Pipelines環境之外構建Docker鏡像(例如在EC2實例或容器中,以便它可以成功執行docker run命令,謝謝你的輸入。) –
顯示詳細信息錯誤第一 – BMW
我編輯錯誤日誌的問題:) –