Docker Ansible:';项目';是未定义的
我正在尝试使用Docker Ansible:';项目';是未定义的,docker,ansible,ansible-playbook,Docker,Ansible,Ansible Playbook,我正在尝试使用with_itemswithdelegate_to在多个主机中运行Docker容器。我在/etc/ansible/hosts中有一个组测试: [test] my_machine1 my_machine2 这项任务是: - name: Run app container docker: name: "{{artifact_id}}" insecure_registry: true image: "{{image}}:{{version}
with_items
withdelegate_to
在多个主机中运行Docker容器。我在/etc/ansible/hosts
中有一个组测试
:
[test]
my_machine1
my_machine2
这项任务是:
- name: Run app container
docker:
name: "{{artifact_id}}"
insecure_registry: true
image: "{{image}}:{{version}}"
pull: always
state: reloaded
ports:
- "{{port_mapping}}"
delegate_to: '{{item}}'
with_items:
- "{{groups['test']}}"
但当我运行它时,我会得到以下错误:
{“failed”:true,“msg”:“ERROR!'item'未定义”}
我做错了什么
提前感谢您需要注意缩进<代码>委托给和带有项目的是任务的一部分,而不是docker模块的一部分
- name: Run app container
docker:
name: "{{artifact_id}}"
insecure_registry: true
image: "{{image}}:{{version}}"
pull: always
state: reloaded
ports:
- "{{port_mapping}}"
delegate_to: '{{item}}'
with_items: "{{groups['test']}}"
虽然我不确定你们的代表团会在这里工作。您首先需要授权的背景是什么?通常的方法是将播放应用于组测试的主机。我猜你是在和本地主机比赛
另一件不相关的事情:当pull:always
与state:reload
一起使用时,我遇到了docker模块的问题。与docker compose不同,docker模块将始终重新启动容器,无论是否提取了更新的图像
你的格式好像不正确。你能把问题格式化为yaml以避免混淆吗?哈哈,这就是问题所在!“委托给”和“与”项不是docker模块的属性,而是任务本身的属性-。-“谢谢。非常感谢。它解决了问题。是的,我在localhost中运行了几个操作(从nexus下载映像并构建它)最后一个,即运行容器,必须在test
机器中执行。我应该用另一种方式执行吗?谢谢。您可以添加第二个播放。第一个播放构建您的图像并(我猜将其上载到私有注册表)。第二个剧本运行docker模块。我在上面添加了一个虚拟示例剧本。但我看到了授权对您的意义。如果授权确实有效,如果您喜欢,请尝试。太好了。再次感谢您。
- hosts: localhost
tasks:
- download nexus
- build image
- upload to registry
- ...
- hosts: test
tasks:
- docker: ...