使用Ansible Playbook如何将Java证书复制到主机?

时间:2018-12-12 11:45:24

标签: ansible

使用Ansible Playbook如何将Java证书复制到主机?每个主机都安装了不同的JDK。我需要在所有主机中验证正在运行的JDK,并将那些证书复制到所有主机。

我写了下面的剧本和我遇到的错误。请帮助我找出问题所在。

---
- hosts: test
  vars:
      pack1: /ngs/app/rdrt
      pack2: /usr/java/jdk*

  tasks:
    - name: copy the files
      copy:
         src: "/Users/sivarami.rc/Downloads/Problem46218229/apple_corporate_root_ca.pem"
         dest: "{{ pack1 }}"
    - name: copy the files
      copy:
         src: "/Users/sivarami.rc/Downloads/Problem46218229/apple_corporate_root_ca2.pem"
         dest: "{{ pack1 }}"
    - name: copy the files
      copy:
         src: "/Users/sivarami.rc/Downloads/Problem46218229/ca-trust-check-1.0.0.jar"
         dest: "{{ pack1 }}"
    - name: Import SSL certificate to a given cacerts keystore
      java_cert:
         cert_path: "{{ pack1 }}/apple_corporate_root_ca.pem"
         cert_alias: Apple_Corporate_Root_CA
         cert_port: 443
         keystore_path: "{{ pack2 }}/jre/lib/security/cacerts"
         keystore_pass: change-it
         executable: "{{ pack2 }}/bin/keytool"
         state: present
    - name: Import SSL certificate to a cacerts keystore
      java_cert:
         cert_path: "{{ pack1 }}/apple_corporate_root_ca2.pem"
         cert_alias: Apple_Corporate_Root_CA2
         cert_port: 443
         keystore_path: "{{ pack2 }}/jre/lib/security/cacerts"
         keystore_pass: changeit
         executable: "{{ pack2 }}/bin/keytool"
         state: present
    - name: checking those files trusted or untrusted
      shell: "{{ pack2 }}/bin/java -jar {{ pack1 }}/ca-trust-check-1.0.0.jar"

错误:

fatal: [c5147061@rn2-radart-lapp117.rno.apple.com]: FAILED! => {"changed": false, "cmd": "'/usr/java/jdk*/bin/keytool'", "msg": "[Errno 2] No such file or directory", "rc": 2}
fatal: [c5147061@rn2-radart-lapp121.rno.apple.com]: FAILED! => {"changed": false, "cmd": "'/usr/java/jdk*/bin/keytool'", "msg": "[Errno 2] No such file or directory", "rc": 2}

3 个答案:

答案 0 :(得分:0)

显示以下错误:

"cmd": "'/usr/java/jdk*/bin/keytool'", "msg": "[Errno 2] No such file or directory"

如您所见,在该位置找不到keytool命令。您需要确保所提供的路径实际上在服务器上。

在定义pack2变量的地方,您需要提供完整路径,而不是使用通配符,例如像这样:

vars:
    pack2: /usr/java/jdk-1.8.0_67

然后确保该路径在远程计算机上存在,并且您的代码不应再显示该错误。

如果每个节点上的路径都不相同,因为每个节点上的Java版本不同,则可以使用以下选项:

  • 如果有该信息,请使用特定于主机的变量来定义每个主机的路径。
  • 在上一步中收集信息,例如就像这里:http://127.0.0.1:8080/ws-c11/RegistrationService
  • 检查JAVA_HOME环境变量以查看是否已设置。

答案 1 :(得分:0)

我有同样的错误,即没有在我的PATH上找到keytool实用程序,但是那是因为我没有使用具有正确PATH值的turn_user。 所以我的解决方案是将以下行添加到我的剧本中:   成为:是的   成为用户:wls (wls是weblogic用户,但根据您的需要可以是另一个系统帐户)

答案 2 :(得分:0)

我遇到了同样的错误,因为keytool链接到了一个非常老的JDK版本(版本6)。 通过使用最新版本(JDK版本11),我修复了此错误。