community.hashi_vault.vault_pki_generate_certificate module – Generates a new set of credentials (private key and certificate) using HashiCorp Vault PKI
Note
This module is part of the community.hashi_vault collection (version 3.1.0).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.hashi_vault.
To use it in a playbook, specify: community.hashi_vault.vault_pki_generate_certificate.
New in version 2.3.0: of community.hashi_vault
Synopsis
Generates a new set of credentials (private key and certificate) based on a Vault PKI role.
Requirements
The below requirements are needed on the host that executes this module.
hvac(Python library) version0.9.1or higherFor detailed requirements, see the collection requirements page.
Parameters
Parameter |
Comments |
|---|---|
Specifies requested Subject Alternative Names. These can be host names or email addresses; they will be parsed into their respective fields. If any requested names do not match role policy, the entire request will be denied. |
|
Authentication method to be used.
Choices:
|
|
The AWS access key to use. |
|
If specified, sets the value to use for the |
|
The AWS profile |
|
The AWS secret key that corresponds to the access key. |
|
The AWS security token if using temporary access and secret keys. |
|
Path to certificate to use for authentication. If not specified by any other means, the |
|
For |
|
For |
|
Specifies the requested CN for the certificate. If the CN is allowed by role policy, it will be issued. |
|
Specify the mount point used by the PKI engine. Defaults to the default used by |
|
If true, the given common_name will not be included in DNS or Email Subject Alternate Names (as appropriate). Useful if the CN is not a hostname or email address, but is instead some human-readable identifier. Choices:
|
|
Specifies the format for returned data. Can be If If Choices:
|
|
Specifies requested IP Subject Alternative Names. Only valid if the role allows IP SANs (which is the default). |
|
The JSON Web Token (JWT) to use for JWT authentication to Vault. |
|
The Kubernetes Token (JWT) to use for Kubernetes authentication to Vault. |
|
If no kubernetes_token is specified, will try to read the token from this path. Default: “/var/run/secrets/kubernetes.io/serviceaccount/token” |
|
Vault mount point. If not specified, the default mount point for a given auth method is used. Does not apply to token authentication. |
|
Vault namespace where secrets reside. This option requires HVAC 0.7.0+ and Vault 0.11+. Optionally, this may be achieved by prefixing the authentication mount point and/or secret path with the namespace (e.g If environment variable |
|
Specifies custom OID/UTF8-string SANs. These must match values specified on the role in The format is the same as OpenSSL: |
|
Authentication password. |
|
Specifies the format for marshaling the private key. Defaults to The other option is Choices:
|
|
URL(s) to the proxies used to access the Vault service. It can be a string or a dict. If it’s a dict, provide the scheme (eg. If it’s a string, provide a single URL that will be used as the proxy for both A string that can be interpreted as a dictionary will be converted to one (see examples). You can specify a different proxy for HTTP and HTTPS resources. If not specified, environment variables from the Requests library are used. |
|
The AWS region for which to create the connection. |
|
Allows for retrying on errors, based on the Retry class in the urllib3 library. This collection defines recommended defaults for retrying connections to Vault. This option can be specified as a positive number (integer) or dictionary. If this option is not specified or the number is A number sets the total number of retries, and uses collection defaults for the other settings. A dictionary value is used directly to initialize the For detailed information on retries, see the collection User Guide. |
|
Controls whether and how to show messages on retries. This has no effect if a request is not retried. Choices:
|
|
Vault Role ID or name. Used in For |
|
Specifies the name of the role to create the certificate against. |
|
Secret ID to be used for Vault AppRole authentication. |
|
Sets the connection timeout in seconds. If not set, then the |
|
Vault token. Token may be specified explicitly, through the listed [env] vars, and also through the If no token is supplied, explicitly or through env, then the plugin will check for a token file, as determined by token_path and token_file. The order of token loading (first found wins) is |
|
If no token is specified, will try to read the token from this file in token_path. Default: “.vault-token” |
|
If no token is specified, will try to read the token_file from this path. |
|
For token auth, will perform a Disable if your token does not have the The default value is The default value will change to Choices:
|
|
Specifies requested Time To Live. Cannot be greater than the role’s If not provided, the role’s Note that the role values default to system values if not explicitly set. |
|
Specifies the requested URI Subject Alternative Names. |
|
URL to the Vault service. If not specified by any other means, the value of the If |
|
Authentication user name. |
|
Controls verification and validation of SSL certificates, mostly you only want to turn off with self signed ones. Will be populated with the inverse of Will default to Choices:
|
See Also
See also
- HashiCorp Vault PKI Secrets Engine API
API documentation for the HashiCorp Vault PKI secrets engine.
- HVAC library reference
HVAC library reference about the PKI engine.
Examples
- name: Login and use the resulting token
community.hashi_vault.vault_login:
url: https://localhost:8200
auth_method: ldap
username: "john.doe"
password: "{{ user_passwd }}"
register: login_data
- name: Generate a certificate with an existing token
community.hashi_vault.vault_pki_generate_certificate:
role_name: test.example.org
common_name: test.example.org
ttl: 8760h
alt_names:
- test2.example.org
- test3.example.org
url: https://vault:8201
auth_method: token
token: "{{ login_data.login.auth.client_token }}"
register: cert_data
- name: Display generated certificate
debug:
msg: "{{ cert_data.data.data.certificate }}"
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key |
Description |
|---|---|
Information about newly generated certificate Returned: success |
|
Payload Returned: success |
|
Linked list of CA certificates. Returned: success Sample: [”—–BEGIN CERTIFICATE—–…—–END CERTIFICATE—–“] |
|
Generated certificate. Returned: success Sample: “—–BEGIN CERTIFICATE—–…—–END CERTIFICATE—–” |
|
CA certificate. Returned: success Sample: “—–BEGIN CERTIFICATE—–…—–END CERTIFICATE—–” |
|
Private key used to generate certificate. Returned: success Sample: “—–BEGIN RSA PRIVATE KEY—–…—–END RSA PRIVATE KEY—–” |
|
Private key algorithm. Returned: success Sample: “rsa” |
|
Certificate’s serial number. Returned: success Sample: “39:dd:2e:90:b7:23:1f:8d:d3:7d:31:c5:1b:da:84:d0:5b:65:31:58” |
|
Vault lease duration. Returned: success Sample: 21600 |
|
Vault lease attached to certificate. Returned: success Sample: “pki/issue/test/7ad6cfa5-f04f-c62a-d477-f33210475d05” |
|
True if certificate is renewable. Returned: success Sample: false |
|
Warnings returned by Vault during generation. Returned: success |
Collection links
Issue Tracker Repository (Sources) Discussion, Q&A, troubleshooting Communication