使用Ansible复制SSL证书

时间:2018-12-18 16:02:39

标签: docker ssl deployment ansible ssl-certificate

我正在尝试将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

1 个答案:

答案 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模块,要么尝试以纯文本格式保存文件。