Ansible Docker MacOS 上的容器动态清单

Ansible Docker containers dynamic inventory on MacOS

我已经使用以下命令启动了一个 Docker 容器:

docker run tomcat:latest

然后我创建了一个名为 docker.yml 的文件,其中包含以下内容:

plugin: community.docker.docker_containers
docker_host: unix://var/run/docker.sock

最后我尝试获取当前 运行 Docker 个容器的列表,使用:

ansible-inventory -i docker.yml --list

然而,我得到的不是 运行 个容器的列表,而是以下结果:

[WARNING]:  * Failed to parse docker.yml with yaml plugin: Plugin configuration YAML file, not YAML inventory
[WARNING]:  * Failed to parse docker.yml with constructed plugin: Incorrect plugin name in file: community.docker.docker_containers
[WARNING]: Unable to parse docker.yml as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
{
    "_meta": {
        "hostvars": {}
    },
    "all": {
        "children": [
            "ungrouped"
        ]
    }
}

我是不是误解了 Ansible Docker 容器动态清单,还是我做错了什么?

我怀疑我遇到了系统混乱的情况,这就是解决方法:

  • 我保留了位于 ~/Library/Python/3.9/.
  • 的当前 Python 安装
  • 尝试使用 pip 卸载 Ansible:
    pip uninstall ansible
    
  • 手动删除了所有 Ansible 的东西:
    sudo rm -r /etc/ansible
    sudo rm -r -/.ansible
    sudo rm -r /usr/local/lib/python3.9/site-packages/ansible*
    sudo rm /usr/local/bin/ansible*
    
  • 全新安装 Ansible:
    pip install ez_setup
    pip install --user ansible
    
  • 已安装 Ansible Docker 收集先决条件:
    pip install docker
    
  • 已安装 Ansible Docker 集合:
    ansible-galaxy collection install community.docker
    

完成上述操作后,Ansible Docker 容器动态清单按预期工作且没有错误。