You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible在容器目录创建文件失败,已成功创建目录

问题原因与解决方法

你遇到的问题核心是:openssl_privatekey模块不支持直接通过容器名:路径的格式操作容器内的文件系统,而ansible.builtin.file模块恰好兼容这种写法(依赖Ansible的Docker连接插件能力),所以前者创建文件失败。

下面是两种可行的解决思路:

思路一:直接在容器内执行openssl命令生成密钥

利用docker_container_exec模块(或command模块调用docker exec),直接在容器内部生成密钥:

- name: 在容器内生成openssl私钥
  community.docker.docker_container_exec:
    container: playcontainer
    command: openssl genrsa -out /etc/ssl/private/playkey.key {{ key_size }}
    creates: /etc/ssl/private/playkey.key

如果你的Ansible版本没有docker_container_exec模块,也可以用command模块替代:

- name: 在容器内生成openssl私钥
  ansible.builtin.command:
    cmd: docker exec playcontainer openssl genrsa -out /etc/ssl/private/playkey.key {{ key_size }}
    creates: /etc/ssl/private/playkey.key

思路二:先在本地生成密钥,再复制到容器内

先在控制节点(或远程主机)生成密钥,再用copy模块将文件复制到容器内部:

- name: 在本地生成openssl私钥
  openssl_privatekey:
    path: /tmp/playkey.key
    size: "{{ key_size }}"
    type: "{{ key_type }}"

- name: 将私钥复制到容器内
  ansible.builtin.copy:
    src: /tmp/playkey.key
    dest: playcontainer:/etc/ssl/private/playkey.key
    mode: 0600  # 私钥建议设置更严格的权限

内容的提问来源于stack exchange,提问作者FunkyPhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:55:19