Ansible プレイブックを使用して、AWS でインフラストラクチャをプロビジョニングしようとしています。私はインスタンスを持っており、docker-engine、docker-py などをプロビジョニングできます。そして、昨日これが正しく機能し、それ以来コードを変更していないことを誓います。
私のプレイブックの関連部分は次のとおりです。
- name: Ensure AWS CLI is available
pip:
name: awscli
state: present
when: aws_deploy
- block:
- name: Add .boto file with AWS credentials.
copy:
content: "{{ boto_file }}"
dest: ~/.boto
when: aws_deploy
- name: Log in to docker registry.
shell: "$(aws ecr get-login --region us-east-1)"
when: aws_deploy
- name: Remove .boto file with AWS credentials.
file:
path: ~/.boto
state: absent
when: aws_deploy
- name: Create docker network
docker_network:
name: my-net
- name: Start Container
docker_container:
name: example
image: "{{ docker_registry }}/example"
pull: true
restart: true
network_mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone
私{{ docker_registry }}
はに設定されてmy-acct-id.dkr.ecr.us-east-1.amazonaws.com
おり、得られる結果は次のとおりです。
"msg": "Error pulling my-acct-id.dkr.ecr.us-east-1.amazonaws.com/example - code: None message: Get http://: http: no Host in request URL"
ただし、前述のように、これは昨夜正しく機能しました。それ以来、VPC/サブネットにいくつかの変更を加えましたが、インスタンスに ssh でき、docker pull my-acct-id.dkr.ecr.us-east-1.amazonaws.com/example
問題なく実行できます。
同じエラーを抱えている他の人を見つけることができないように見えるので、グーグルは私をそれほど遠くまで導きませんでした。何が変わったのか、どうすれば直せるのか気になります!ありがとう!
編集: バージョン:
- アンシブル-2.2.0.0
- ドッカー-1.12.3 6b644ec
- ドッカー-py-1.10.6