使用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
相关产品推荐
相关产品推荐

