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 2.5.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.1
or 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. |
|
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 |
Authors
Florent David (@Ripolin)
Collection links
Issue Tracker Repository (Sources) Discussion, Q&A, troubleshooting Communication