Ansible:如何将本地项目文件传入java_cert模块的cert_path参数?
解决方法
不能直接把Ansible项目里files/mycert.pem的路径传给cert_path,因为community.general.java_cert模块的cert_path参数要求的是**目标操作系统(被管理主机)**上的文件路径,而不是你运行Ansible的控制节点上的文件路径。
你需要分两步操作:
- 第一步:用
copy模块把本地证书上传到目标主机的某个临时路径(比如/tmp/mycert.pem) - 第二步:在
java_cert模块中引用这个目标主机上的路径作为cert_path的值
完整的任务配置示例:
tasks: - name: 上传本地证书到目标主机临时目录 copy: src: mycert.pem # Ansible会自动从项目的files目录查找该文件 dest: /tmp/mycert.pem mode: '0644' - name: 在Java信任库中安装根证书 community.general.java_cert: cert_path: /tmp/mycert.pem # 这里用目标主机上的路径 cert_alias: mycert keystore_path: /etc/ssl/certs/java/cacerts keystore_pass: changeit state: present trust_cacert: true # 可选:如果不需要保留临时文件,执行完证书安装后删除 - name: 删除目标主机上的临时证书文件 file: path: /tmp/mycert.pem state: absent
补充说明
copy模块的src参数如果只写文件名,Ansible会默认从项目根目录下的files文件夹中查找,所以不用写全路径files/mycert.pem- 选择临时目录是因为一般普通用户也有权限写入,避免权限问题;如果有特定的证书存放目录,也可以改成对应路径
内容的提问来源于stack exchange,提问作者not2savvy
相关产品推荐
相关产品推荐

