community.hashi_vault.vault_token_create (6.2.0) — module

Create a HashiCorp Vault token

| "added in version" 2.3.0 of community.hashi_vault"

Authors: Brian Scholer (@briantist)

Install collection

Install with ansible-galaxy collection install community.hashi_vault:==6.2.0


Add to requirements.yml

  collections:
    - name: community.hashi_vault
      version: 6.2.0

Description

Creates a token in HashiCorp Vault, returning the response, including the token.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Login via userpass and create a child token
  community.hashi_vault.vault_token_create:
    url: https://vault:8201
    auth_method: userpass
    username: user
    password: '{{ passwd }}'
  register: token_data
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Retrieve an approle role ID using the child token (token via filter)
  community.hashi_vault.vault_read:
    url: https://vault:8201
    auth_method: token
    token: '{{ token_data | community.hashi_vault.vault_login_token }}'
    path: auth/approle/role/role-name/role-id
  register: approle_id
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Retrieve an approle role ID using the child token (token via direct dict access)
  community.hashi_vault.vault_read:
    url: https://vault:8201
    auth_method: token
    token: '{{ token_data.login.auth.client_token }}'
    path: auth/approle/role/role-name/role-id
  register: approle_id
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# implicitly uses token auth with a token from the environment
- name: Create an orphaned token with a short TTL
  community.hashi_vault.vault_token_create:
    url: https://vault:8201
    orphan: true
    ttl: 60s
  register: token_data
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Display the full response
  ansible.builtin.debug:
    var: token_data.login

Inputs

    
id:
    description:
    - The ID of the client token. Can only be specified by a root token.
    - The ID provided may not contain a C(.) character.
    - Otherwise, the token ID is a randomly generated value.
    type: str

jwt:
    description: The JSON Web Token (JWT) to use for JWT authentication to Vault.
    type: str

ttl:
    description:
    - The TTL period of the token, provided as C(1h) for example, where hour is the largest
      suffix.
    - If not provided, the token is valid for the default lease TTL, or indefinitely if
      the root policy is used.
    type: str

url:
    description:
    - URL to the Vault service.
    - If not specified by any other means, the value of the C(VAULT_ADDR) environment
      variable will be used.
    - If C(VAULT_ADDR) is also not defined then an error will be raised.
    type: str

meta:
    description: A dict of string to string valued metadata. This is passed through to
      the audit devices.
    type: dict

type:
    choices:
    - batch
    - service
    description: The token type. The default is determined by the role configuration specified
      by I(role_name).
    type: str

token:
    description:
    - Vault token. Token may be specified explicitly, through the listed [env] vars, and
      also through the C(VAULT_TOKEN) env var.
    - If no token is supplied, explicitly or through env, then the plugin will check for
      a token file, as determined by I(token_path) and I(token_file).
    - The order of token loading (first found wins) is C(token param -> ansible var ->
      ANSIBLE_HASHI_VAULT_TOKEN -> VAULT_TOKEN -> token file).
    type: str

orphan:
    default: false
    description:
    - When C(true), uses the C(/create-orphan) API endpoint, which requires C(sudo) (but
      not C(root)) to create an orphan.
    - With C(hvac>=1.0.0), requires collection version C(>=3.3.0).
    type: bool

period:
    description:
    - If specified, the token will be periodic.
    - It will have no maximum TTL (unless an I(explicit_max_ttl) is also set) but every
      renewal will use the given period.
    - Requires a root token or one with the C(sudo) capability.
    type: str

region:
    description: The AWS region for which to create the connection.
    type: str

ca_cert:
    aliases:
    - cacert
    description:
    - Path to certificate to use for authentication.
    - If not specified by any other means, the C(VAULT_CACERT) environment variable will
      be used.
    type: str

proxies:
    description:
    - 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. C(http) or C(https)) as the key, and the
      URL as the value.
    - If it's a string, provide a single URL that will be used as the proxy for both C(http)
      and C(https) schemes.
    - 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, L(environment variables from the Requests library,https://requests.readthedocs.io/en/master/user/advanced/#proxies)
      are used.
    type: raw
    version_added: 1.1.0
    version_added_collection: community.hashi_vault

retries:
    description:
    - Allows for retrying on errors, based on the L(Retry class in the urllib3 library,https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#urllib3.util.Retry).
    - 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 C(0), then retries are disabled.
    - 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 C(Retry) class, so it can
      be used to fully customize retries.
    - For detailed information on retries, see the collection User Guide.
    type: raw
    version_added: 1.3.0
    version_added_collection: community.hashi_vault

role_id:
    description:
    - Vault Role ID or name. Used in C(approle), C(aws_iam), C(azure) and C(cert) auth
      methods.
    - For C(cert) auth, if no I(role_id) is supplied, the default behavior is to try all
      certificate roles and return any one that matches.
    - For C(azure) auth, I(role_id) is required.
    type: str

timeout:
    description:
    - Sets the connection timeout in seconds.
    - If not set, then the C(hvac) library's default is used.
    type: int
    version_added: 1.3.0
    version_added_collection: community.hashi_vault

num_uses:
    description:
    - The maximum uses for the given token. This can be used to create a one-time-token
      or limited use token.
    - The value of C(0) has no limit to the number of uses.
    type: int

password:
    description: Authentication password.
    type: str

policies:
    description:
    - A list of policies for the token. This must be a subset of the policies belonging
      to the token making the request, unless root.
    - If not specified, defaults to all the policies of the calling token.
    elements: str
    type: list

username:
    description: Authentication user name.
    type: str

wrap_ttl:
    description: Specifies response wrapping token creation with duration. For example
      C(15s), C(20m), C(25h).
    type: str

namespace:
    description:
    - 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 C(mynamespace/secret/mysecret)).
    - If environment variable C(VAULT_NAMESPACE) is set, its value will be used last among
      all ways to specify I(namespace).
    type: str

no_parent:
    description:
    - This option only has effect if used by a C(root) or C(sudo) caller and only when
      I(orphan=false).
    - When C(true), the token created will not have a parent.
    type: bool

renewable:
    description:
    - Set to C(false) to disable the ability of the token to be renewed past its initial
      TTL.
    - Setting the value to C(true) will allow the token to be renewable up to the system/mount
      maximum TTL.
    type: bool

role_name:
    description:
    - The name of the token role. If used, the token will be created against the specified
      role name which may override options set during this call.
    type: str

secret_id:
    description: Secret ID to be used for Vault AppRole authentication.
    type: str

token_file:
    default: .vault-token
    description: If no token is specified, will try to read the token from this file in
      I(token_path).
    type: str

token_path:
    description: If no token is specified, will try to read the I(token_file) from this
      path.
    type: str

auth_method:
    choices:
    - token
    - userpass
    - ldap
    - approle
    - aws_iam
    - azure
    - jwt
    - cert
    - none
    default: token
    description:
    - Authentication method to be used.
    - C(none) auth method was added in collection version C(1.2.0).
    - C(cert) auth method was added in collection version C(1.4.0).
    - C(aws_iam_login) was renamed C(aws_iam) in collection version C(2.1.0) and was removed
      in C(3.0.0).
    - C(azure) auth method was added in collection version C(3.2.0).
    type: str

aws_profile:
    aliases:
    - boto_profile
    description: The AWS profile
    type: str

mount_point:
    description:
    - Vault mount point.
    - If not specified, the default mount point for a given auth method is used.
    - Does not apply to token authentication.
    type: str

display_name:
    description: The display name of the token.
    type: str

entity_alias:
    description:
    - Name of the entity alias to associate with during token creation.
    - Only works in combination with I(role_name) option and used entity alias must be
      listed in C(allowed_entity_aliases).
    - If this has been specified, the entity will not be inherited from the parent.
    type: str

retry_action:
    choices:
    - ignore
    - warn
    default: warn
    description:
    - Controls whether and how to show messages on I(retries).
    - This has no effect if a request is not retried.
    type: str
    version_added: 1.3.0
    version_added_collection: community.hashi_vault

aws_access_key:
    aliases:
    - aws_access_key_id
    description: The AWS access key to use.
    type: str

aws_secret_key:
    aliases:
    - aws_secret_access_key
    description: The AWS secret key that corresponds to the access key.
    type: str

azure_resource:
    default: https://management.azure.com/
    description: The resource URL for the application registered in Azure Active Directory.
      Usually should not be changed from the default.
    required: false
    type: str
    version_added: 3.2.0
    version_added_collection: community.hashi_vault

token_validate:
    default: false
    description:
    - For token auth, will perform a C(lookup-self) operation to determine the token's
      validity before using it.
    - Disable if your token does not have the C(lookup-self) capability.
    type: bool
    version_added: 0.2.0
    version_added_collection: community.hashi_vault

validate_certs:
    description:
    - 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 C(VAULT_SKIP_VERIFY) if that is set and I(validate_certs)
      is not explicitly provided.
    - Will default to C(true) if neither I(validate_certs) or C(VAULT_SKIP_VERIFY) are
      set.
    type: bool

azure_client_id:
    description:
    - The client ID (also known as application ID) of the Azure AD service principal or
      managed identity. Should be a UUID.
    - If not specified, will use the system assigned managed identity.
    required: false
    type: str
    version_added: 3.2.0
    version_added_collection: community.hashi_vault

azure_tenant_id:
    description:
    - The Azure Active Directory Tenant ID (also known as the Directory ID) of the service
      principal. Should be a UUID.
    - Required when using a service principal to authenticate to Vault, e.g. required
      when both I(azure_client_id) and I(azure_client_secret) are specified.
    - Optional when using managed identity to authenticate to Vault.
    required: false
    type: str
    version_added: 3.2.0
    version_added_collection: community.hashi_vault

explicit_max_ttl:
    description:
    - If set, the token will have an explicit max TTL set upon it.
    - This maximum token TTL cannot be changed later, and unlike with normal tokens, updates
      to the system/mount max TTL value will have no effect at renewal time.
    - The token will never be able to be renewed or used past the value set at issue time.
    type: str

aws_iam_server_id:
    description: If specified, sets the value to use for the C(X-Vault-AWS-IAM-Server-ID)
      header as part of C(GetCallerIdentity) request.
    required: false
    type: str
    version_added: 0.2.0
    version_added_collection: community.hashi_vault

no_default_policy:
    description:
    - If C(true) the default policy will not be contained in this token's policy set.
    - If the token will be used with this collection, set I(token_validate=false).
    type: bool

aws_security_token:
    description: The AWS security token if using temporary access and secret keys.
    type: str

azure_client_secret:
    description: The client secret of the Azure AD service principal.
    required: false
    type: str
    version_added: 3.2.0
    version_added_collection: community.hashi_vault

cert_auth_public_key:
    description: For C(cert) auth, path to the certificate file to authenticate with,
      in PEM format.
    type: path
    version_added: 1.4.0
    version_added_collection: community.hashi_vault

cert_auth_private_key:
    description: For C(cert) auth, path to the private key file to authenticate with,
      in PEM format.
    type: path
    version_added: 1.4.0
    version_added_collection: community.hashi_vault

Outputs

login:
  contains:
    auth:
      contains:
        client_token:
          description: Contains the newly created token.
          returned: success
          type: str
      description: The C(auth) member of the token response.
      returned: success
      type: dict
    data:
      description: The C(data) member of the token response.
      returned: success, when available
      type: dict
  description: The result of the token creation operation.
  returned: success
  sample:
    auth:
      client_token: s.rlwajI2bblHAWU7uPqZhLru3
    data: null
  type: dict

See also