我正在尝试将SSL证书从Ansible主机虚拟机复制到Docker主机虚拟机,并且一直出现以下错误
FAILED! => {"changed": false, "msg": "Template source files must be utf-8 encoded"}
剧本很简单,只有两个步骤:
- name: Create directory for SSL certificate
file: path=/etc/ssl/certs/pm state=directory
- name: Copy SSL certificate from Ansible host to Docker host
template:
src: inventories/staging/files/pm.jks
dest: /etc/ssl/certs/pm/pm.jks
owner: root
mode: 0755
ignore_errors: true
当我用一个具有相同名称和扩展名的空文件替换pm.jks时,复制工作正常,因此很显然其内容格式存在问题。但我不确定如何解决此问题。
我正在使用此命令来生成证书:
keytool -genkey -alias pm -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore pm.p12 -genkey -alias pm -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore pm.p12 -validity 3650
答案 0 :(得分:2)
为什么不使用Ansible的file
方法代替template
模块?错误非常明显-您不能使用template
模块,因为您引用的源文件不是UTF-8编码的。
如果检查使用发布的命令创建的文件,则会注意到它是二进制文件:
test@toor:~$ file pm.p12
pm.p12: data
test@toor:~$ less pm.p12
"pm.p12" may be a binary file. See it anyway?
要么尝试使用其他的Ansible模块,要么尝试以纯文本格式保存文件。