Search code examples
elasticsearchansibletty

Generate TLS certs for Elasticcluster with ansible


During generating tls cert for Elastic cluster with elasticsearch-certutil tool i get:

unable to read from standard input; is standard input open and a tty attached?

I know that for installing installing plugins or generating password tools can used force and batch flags, but there are no for this one.

ansible task (part):

- name: Create certificates p12
  shell: |
    cd /usr/share/elasticsearch && \
    ./bin/elasticsearch-certutil ca -s --out elastic-stack-ca.p12 --pass {{ ca_password }} && \
    ./bin/elasticsearch-certutil cert -s --ca elastic-stack-ca.p12 --ca-pass {{ ca_password }} --out elastic-certificates.p12 --pass {{ cert_password }} && \
    cp elastic-certificates.p12 /etc/elasticsearch && \
    chmod 660 /etc/elasticsearch/elastic-certificates.p12

Solution

  • - name: Generate a certificate of authority
      args:
        chdir: '{{ elasticsearch_path_etc }}'
      become: yes
      command: "{{ elastic_home }}/bin/elasticsearch-certutil ca --out {{ elasticsearch_path_etc }}/elastic-stack-ca.p12 --pass '{{ elasticsearch_tls_cert_pass }}'"
    - name: Generate a certificate and private key for a node
      args:
        chdir: '{{ elasticsearch_path_etc }}'
      become: yes
      command: "{{ elastic_home }}/bin/elasticsearch-certutil cert --ca {{ elasticsearch_path_etc }}/elastic-stack-ca.p12 --ca-pass '{{ elasticsearch_tls_cert_pass }}' --out {{ elasticsearch_path_etc }}/elastic-certificates.p12 --pass '{{ elasticsearch_tls_cert_ca_pass }}'"
    - name: Change cert permissions
      file:
        path: "{{ elasticsearch_path_etc }}/elastic-certificates.p12"
        owner: root
        group: elasticsearch
        mode: '0666'
    

    I simply split in it for 3 pars and it works