brianshumate.vault
Vault
这个 Ansible 角色执行基本的 Vault 安装,包括文件系统结构和示例配置。
它还可以在基于 Vagrant 和 VirtualBox 的环境中启动一个最小开发或评估服务器,或 HA Consul 支持的集群。有关开发者模式设置的更多细节,请查看 README_VAGRANT.md 和相关的 Vagrantfile。
安装
Brian Shumate 将此角色转移至 @ansible-community/hashicorp-tools。目前该角色驻留在 GitHub 上,待修复与 Ansible Galaxy 的集成。要安装此角色,请在你的 Ansible 项目文件夹中创建一个 roles/requirements.yml
文件,内容如下:
- src: https://github.com/ansible-community/ansible-vault.git
name: ansible-community.ansible-vault
scm: git
version: master
你可以在版本属性中使用 Git 标签。你也可以保留其旧的 name: brianshumate.ansible-vault
。
要求
此角色需要 Archlinux、AmazonLinux、FreeBSD、Debian 或基于 RHEL 的 Linux 发行版。它可能与其他软件版本兼容,但已在以下特定软件和版本上测试通过:
- Ansible: 2.8.4
- Vault: 1.4.0 及以上版本
- AlmaLinux
- 8
- 9
- AmazonLinux
- 2
- 2022
- ArchLinux
- CentOS
- 7
- 8 stream
- 9 stream
- Debian
- 9 (stretch)
- 10 (buster)
- 11 (bullseye)
- FreeBSD
- 11
- RockyLinux
- 8
- 9
- Ubuntu
- 18.04 (Bionic Beaver)
- 20.04 (Focal Fossa)
- 22.04 (Jammy Jellyfish)
抱歉,目前没有计划支持 Windows。
警告
默认情况下,运行此角色时可能会重启 vault
服务(当有配置更改或安装/更新操作系统包时)。
如果你的集群没有设置自动解封,重启可能会导致所有 Vault 实例被封印,进而使你的集群停机。
为避免这种情况,使用 vault_service_restart
角色变量可以禁用 playbook 的服务重启。
将 vault_service_restart
设置为 false
将禁用 playbook 对 vault
服务的重启。你可能需要手动重启服务以加载任何已部署的新配置。
角色变量
该角色在 defaults/main.yml
中定义了以下变量:
vault_listener_localhost_enable
- 如果你在 localhost 上启用监听 vault,请将此设置为 true
- 默认值: false
vault_privileged_install
- 如果在本地下载和解压 vault 文件时看到权限错误,请将此设置为 true。此问题可能会在角色由一个用户(如 root)下载,而以不同的用户执行安装时出现。
- 默认值: false
vault_version
要安装的版本
- 可以通过环境变量
VAULT_VERSION
重写 - 如果
vault_enterprise_premium=True
,将包含 "+prem" - 如果
vault_enterprise_premium_hsm=True
,将包含 ".hsm"
- 可以通过环境变量
默认值: 1.5.5
vault_enterprise
- 安装 Vault Enterprise 时将此设置为 true;目前不支持“仅远程”安装方式
- 可以通过环境变量
VAULT_ENTERPRISE
重写
- 可以通过环境变量
- 默认值: false
vault_pkg
- 软件包文件名
- 默认值:
"vault_{{ vault_version }}_linux_amd64.zip"
vault_enterprise_pkg
- 软件包文件名
- 默认值:
"vault-enterprise_{{ vault_version }}_{{ vault_os }}_{{ vault_architecture }}.zip"
vault_zip_url
- 软件包下载 URL
- 默认值:
"https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version }}_linux_amd64.zip"
- 如果你有自己的 zip 文件,可重写此变量
- 同样适用于企业安装
vault_checksum_file_url
- SHA 摘要 URL
- 如果 sha 文件托管在内部,请重写此变量
- 默认值:
"https://releases.hashicorp.com/vault/{{ vault_version }}/vault_{{ vault_version}}_SHA256SUMS"
vault_install_hashi_repo
- 当通过 HashiCorp Linux 仓库安装 Vault 时,将此设置为
true
。 设置后,你也可以定义vault_repository_key_url
和vault_repository_url
来重写默认的 GPG 密钥 URL 和用于的默认仓库 URL。 - 默认值: false
vault_rhsm_repo_id
- rhsm 仓库的名称
- 在通过 RHSM 仓库(如 RedHat Satellite/Foreman 等)安装 Vault 时,将其设置为你的 rhsm 仓库名。当设置后,你需要确保
vault_install_hashi_repo
设置为true
以启用仓库安装。另外可选地使用vault_rhsm_subscription_name
指定 rhsm 订阅名。 - 默认值: null
vault_rhsm_subscription_name
- rhsm 订阅的名称
- 通过 subscription-manager 附加 rhsm 订阅时设置 rhsm 订阅名。当设置后,你需要确保
vault_install_hashi_repo
设置为true
以启用仓库安装,并确保设置了vault_rhsm_repo_id
。 - 默认值: null
vault_install_remotely
- 将此设置为
true
将从每个目标下载 Vault 二进制文件,而不是从 localhost - 默认值: false
vault_shasums
- SHA 摘要文件名(为了方便而包含,不用于修改)
- 默认值:
"vault_{{ vault_version }}_SHA256SUMS"
vault_enterprise_shasums
- SHA 摘要文件名(为了方便而包含,不用于修改)
- 如果未在 files/ 中出现,将尝试从
vault_checksum_file_url
下载 - 默认值:
"vault-enterprise_{{ vault_version }}_SHA256SUMS"
vault_bin_path
- 二进制安装路径
- 默认值:
/usr/local/bin
vault_config_path
- 配置文件路径
- 默认值:
/etc/vault.d
vault_use_config_path
- 使用
"{{ vault_config_path }}"
来配置 vault,而不是"{{ vault_main_config }}"
- 默认值: false
vault_plugin_path
- 插件加载路径
- 默认值:
/usr/local/lib/vault/plugins
vault_plugins_enable
- 要启用的插件列表(请查看
tasks/plugins
下的受支持插件) - 例如:
vault_plugins_enable: [ 'acme', 'example' ]
- 默认值:
[]
vault_plugins_src_dir_remote
- 临时插件 zip/安装文件放置目录。 当安装通过远程处理时。
- 默认值:
/usr/local/src/vault/plugins
vault_plugins_src_dir_local
- 临时插件 zip/安装文件放置目录。 当安装通过本地处理时。
- 默认值:
{{ role_path }}/files/plugins
vault_plugins_src_dir_cleanup
- 是否在插件安装后清理临时插件 zip/安装文件目录。 注意: 当插件不提供版本号时,这可能导致每次下载插件,从而破坏幂等性。
- 默认值:
false
vault_data_path
- 数据路径
- 默认值:
/var/vault
vault_log_path
- 日志路径
- 默认值:
/var/log/vault
vault_run_path
- PID 文件位置
- 默认值:
/var/run/vault
vault_harden_file_perms
- 该角色是否应该禁止 Vault 写入配置和插件路径。启用此设置以遵循 生产强化指南。
- 默认值: false
vault_manage_user
- 该角色是否应管理 vault 用户?
- 默认值: true
vault_user
- 操作系统用户名
- 默认值: vault
vault_group
- 操作系统组名
- 默认值: bin
vault_groups
- 作为 ansible 用户模块中的操作系统附加组
- 默认值: null
vault_manage_group
- 该角色是否应管理 vault 组?
- 默认值: false
vault_cluster_name
- 集群名称标签
- 默认值: dc1
vault_datacenter
- 数据中心标签
- 默认值: dc1
vault_ui
- 启用 vault Web UI
- 默认值: true
vault_service_restart
- playbook 是否在需要时重启 Vault 服务
- 默认值: true
vault_service_reload
- playbook 是否在主配置更改时重新加载 Vault 服务。
- 默认值: false
vault_start_pause_seconds
- 一些安装可能需要在第一次启动 Vault 和第一次重启之间稍作停顿。将此设置为
>0
将在第一次启动后添加暂停时间。 - 默认值: 0
TCP 监听器变量
vault_tcp_listeners
- TCP 监听器列表。每个监听器可以定义以下特定变量。
- 默认值:
vault_tcp_listeners:
- vault_address: '{{ vault_address }}'
vault_port: '{{ vault_port }}'
vault_cluster_address: '{{ vault_cluster_address }}'
vault_tls_disable: '{{ vault_tls_disable }}'
vault_tls_certs_path: '{{ vault_tls_certs_path }}'
vault_tls_private_path: '{{ vault_tls_private_path }}'
vault_tls_cert_file: '{{ vault_tls_cert_file }}'
vault_tls_key_file: '{{ vault_tls_key_file }}'
vault_tls_ca_file: '{{ vault_tls_ca_file }}'
vault_tls_min_version: '{{ vault_tls_min_version }}'
vault_tls_cipher_suites: '{{ vault_tls_cipher_suites }}'
vault_tls_require_and_verify_client_cert: '{{ vault_tls_require_and_verify_client_cert }}'
vault_tls_disable_client_certs: '{{ vault_tls_disable_client_certs }}'
存储后端变量
vault_backend
- 应选择哪个存储后端,选项包括:raft、consul、etcd、file、s3 和 dynamodb
- 默认值: raft
vault_backend_tls_src_files
- 用户指定的存储通信的 TLS 文件源目录
- {{ vault_tls_src_files }}
vault_backend_tls_certs_path
- 包含后端 TLS 证书文件的目录路径
- {{ vault_tls_certs_path }}
vault_backend_tls_private_path
- 包含后端 TLS 密钥文件的目录路径
- {{ vault_tls_private_path }}
vault_backend_tls_cert_file
- 指定用于后端通信的证书路径(如果支持)。
- {{ vault_tls_cert_file }}
vault_backend_tls_key_file
- 指定用于后端通信的私钥路径(如果支持)。
- {{ vault_tls_key_file }}
vault_backend_tls_ca_file
- 用于后端通信的 CA 证书(如果支持)。如果未指定,则默认使用系统捆绑。
- {{ vault_tls_ca_file }}
Raft 存储后端
vault_raft_leader_tls_servername
- 连接 HTTPS 时使用的 TLS 服务器名称
- 默认值: none
vault_raft_group_name
- 托管 Raft 后端的服务器的库存组名
- 默认值: vault_raft_servers
vault_raft_cluster_members
- Raft 集群成员
- 默认值:
vault_raft_group_name
组中的主机 - 可用于覆盖动态选择在
vault_raft_group_name
中的所有主机的行为 - 示例:
vault_raft_cluster_members: - peer: vault-host-1 api_addr: https://vault-host-1:8200 - peer: vault-host-2 api_addr: https://vault-host-2:8200 - peer: vault-host-3 api_addr: https://vault-host-2:8200
- 静态设置
vault_raft_cluster_members
使得你可以仅针对单个主机运行角色(而不是整个主机组)
vault_raft_data_path
- Raft 的数据路径
- 默认值: vault_data_path
vault_raft_node_id
- Raft 的 Node_id
- 默认值: inventory_hostname_short
vault_raft_performance_multiplier
- Raft 的性能倍增器
- 默认值: none
vault_raft_trailing_logs
- 快照后保留在日志存储中的日志条目计数
- 默认值: none
vault_raft_snapshot_threshold
- 最低 Raft 提交条目数目以获取快照
- 默认值: none
vault_raft_max_entry_size
- Raft 条目的最大字节数
- 默认值: none
vault_raft_autopilot_reconcile_interval
- 自上次状态变化后,自动驾驶将检测状态变化的时间间隔
- 默认值: none
vault_raft_cloud_auto_join
- 定义任何云自动加入元数据。如果提供,Vault 将尝试自动发现其他节点。
- 默认值: none
vault_raft_cloud_auto_join_exclusive
- 如果设置为
true
,将从配置中删除任何leader_api_addr
出现。 将其保持为false
允许auto_join
和leader_api_addr
共存 - 默认值: false
vault_raft_cloud_auto_join_scheme
- 要用于
auto_join
的 URI 方案 - 默认值: none(如果未指定,则 Vault 默认使用
https
)
vault_raft_cloud_auto_join_port
- 用于
auto_join
的端口 - 默认值: none(如果未指定,则 Vault 默认使用
8200
)
Consul 存储后端
vault_backend_consul
- 后端 Consul 模板文件名
- 默认值:
backend_consul.j2
vault_consul
- 连接 Consul HA 后端的主机:端口值
- 默认值: 127.0.0.1:8500
vault_consul_scheme
- Consul 后端的方案
- 支持的值: http, https
- 默认值: http
vault_consul_path
- Vault 的 Consul K/V 根路径的名称
- 默认值: vault
vault_consul_service
- 在 Consul 中注册的 Vault 服务名称
- 默认值: vault
vault_consul_token
- 访问 Consul 的 ACL 令牌
- 默认值: none
etcd 存储后端
vault_etcd
- etcd 存储地址
- 默认值: 127.0.0.1:2379
vault_etcd_api
- API 版本
- 默认值: v3
vault_etcd_path
- Vault 存储路径
- 默认值: /vault/
vault_etcd_discovery_srv
- 发现服务
- 默认值: none
vault_etcd_discovery_srv_name
- 发现服务名称
- 默认值: none
vault_etcd_ha_enabled
- 使用存储以获取高可用性模式
- 默认值: false
vault_etcd_sync
- 使用 etcdsync
- 默认值: true
vault_etcd_username
- 用户名
- 默认值: none
vault_etcd_password
- 密码
- 默认值: none
vault_etcd_request_timeout
- 请求超时
- 默认值: "5s"
vault_etcd_lock_timeout
- 锁定超时
- 默认值: "15s"
文件存储后端
vault_backend_file
- 后端文件模板文件名
- 默认值:
backend_file.j2
Raft 集成存储后端
vault_backend_raft
- 后端 Raft 集成存储模板文件名
- 默认值:
vault_backend_raft.j2
vault_raft_node_id
- 集成存储 Raft 集群中节点的标识符
- 默认值: "raft_node_1"
vault_raft_retry_join
- 所有节点的详细信息提前已知
- 默认值: "[]"
leader_api_addr
- 可能的领导节点地址。
- 默认值: ""
leader_ca_cert_file
- 可能的领导节点的 CA 证书的文件路径。
- 默认值: ""
leader_client_cert_file
- 用于追随者节点与可能领导节点建立客户端身份验证的客户端证书的文件路径。
- 默认值: ""
leader_client_key_file
- 用于追随者节点与可能领导节点建立客户端身份验证的客户端密钥的文件路径。
- 默认值: ""
leader_ca_cert
- 可能的领导节点的 CA 证书。
- 默认值: ""
leader_client_cert
- 用于追随者节点与可能领导节点建立客户端身份验证的客户端证书。
- 默认值: ""
leader_client_key
- 用于追随者节点与可能领导节点建立客户端身份验证的客户端密钥。
- 默认值: ""
DynamoDB 存储后端
有关可用的各种选项的额外文档,请参阅 Vault 文档 中的 DynamoDB 存储后端。
vault_dynamodb
- 指定替代 DynamoDB 端点。
- 默认值: none
- 可以通过环境变量
AWS_DYNAMODB_ENDPOINT
重写。
- 可以通过环境变量
vault_dynamodb_table
- 用于存储 Vault 数据的 DynamoDB 表的名称。
- 如果表尚不存在,将在初始化期间创建。
- 默认值:
"vault-dynamodb-backend"
- 可以通过环境变量
AWS_DYNAMODB_TABLE
重写。
- 可以通过环境变量
vault_dynamodb_ha_enabled
- 是否为此存储后端启用高可用性。
- 默认值:
"false"
- 可以通过环境变量
DYNAMODB_HA_ENABLED
重写。- 缺少的
AWS_
前缀不是笔误,该变量在 Vault 文档和源代码中均未添加前缀。
- 缺少的
- 可以通过环境变量
vault_dynamodb_max_parallel
- 最大并发请求数。
- 默认值:
"128"
vault_dynamodb_region
- AWS 区域。
- 默认值:
us-east-1
- 可以通过环境变量
AWS_DEFAULT_REGION
重写。
- 可以通过环境变量
vault_dynamodb_read_capacity
- 为表预配置的每秒读取次数。
- 仅在创建表时使用,如果表已存在,则无效。
- 默认值:
5
- 可以通过环境变量
AWS_DYNAMODB_READ_CAPACITY
重写。
- 可以通过环境变量
vault_dynamodb_write_capacity
- 为表预配置的每秒写入次数。
- 仅在创建表时使用,如果表已存在,则无效。
- 默认值:
5
- 可以通过环境变量
AWS_DYNAMODB_WRITE_CAPACITY
重写。
- 可以通过环境变量
vault_dynamodb_access_key
- 用于身份验证的 AWS 访问密钥。
- 默认值: none
- 可以通过环境变量
AWS_ACCESS_KEY_ID
重写。
- 可以通过环境变量
- 如果将此和
vault_dynamodb_secret_key
同时留空,将导致 Vault 尝试从 AWS 元数据服务中获取凭据。
vault_dynamodb_secret_key
- 用于身份验证的 AWS 秘密密钥。
- 默认值: none
- 可以通过环境变量
AWS_SECRET_ACCESS_KEY
重写。
- 可以通过环境变量
- 如果将此和
vault_dynamodb_access_key
同时留空,将导致 Vault 尝试从 AWS 元数据服务中获取凭据。
vault_dynamodb_session_token
- AWS 会话令牌。
- 默认值: none
- 可以通过环境变量
AWS_SESSION_TOKEN
重写。
- 可以通过环境变量
Google Cloud Storage 存储后端
vault_gcs_bucket
- 指定用于存储的桶的名称。
- 默认值: none
vault_gcs_ha_enabled
- 指定是否启用高可用性模式。
- 默认值:
"false"
vault_gcs_chunk_size
- 指定单个请求中发送的最大大小(以千字节为单位)。如果设置为 0,将尝试一次性发送整个对象,但不会重试任何失败。
- 默认值:
"8192"
vault_gcs_max_parallel
- 指定进行的最大并行操作数。
- 默认值:
"128"
vault_gcs_copy_sa
- 将 GCP 服务账户凭证文件从 Ansible 控制节点复制到 Vault 服务器。当不为
true
且未指定vault_gcs_credentials_src_file
的值时,将使用默认实例服务账户凭据。 - 默认值:
"false"
vault_gcs_credentials_src_file
- Ansible 控制节点上的 GCP 服务账户凭证路径。
- 默认值: none
vault_gcs_credentials_dst_file
- Vault 服务器上的 GCP 凭证路径。
- 默认值:
{{ vault_home }}/{{ vault_gcs_credentials_src_file | basename}}"
Consul 服务注册
有关各种选项的更多信息,请参阅 Vault 文档 中的 Consul 服务注册。注意,此功能仅在 Vault 版本 1.4 及以后可用。
vault_service_registration_consul_enable
- 启用 Consul 服务注册
- 默认值: false
vault_service_registration_consul_template
- Consul 服务注册模板文件名
- 默认值:
service_registration_consul.hcl.j2
vault_service_registration_consul_address
- 连接到 Consul 服务注册的主机:端口值
- 默认值: 127.0.0.1:8500
vault_service_registration_check_timeout
- 指定用于将健康检查信息返回给 Consul 的检查间隔。
- 默认值: 5s
vault_service_registration_disable_registration
- 指定 Vault 是否应向 Consul 注册自己。
- 默认值: false
vault_service_registration_consul_scheme
- Consul 服务注册的方案
- 支持的值: http, https
- 默认值: http
vault_service_registration_consul_service
- 在 Consul 中注册的 Vault 服务名称
- 默认值: vault
vault_service_registration_consul_service_tags
- 指定附加到在 Consul 中的服务注册的逗号分隔标签列表。
- 默认值: ""
vault_service_registration_consul_service_address
- 指定在 Consul 中的服务注册中设置的服务特定地址。
- 默认值: nil
vault_service_registration_consul_token
- 用于注册 Consul 服务注册的 ACL 令牌
- 默认值: none
vault_service_registration_consul_tls_certs_path
- TLS 证书路径
- 默认值:
{{ vault_tls_certs_path }}
vault_service_registration_consul_tls_private_path
- TLS 密钥路径
- 默认值:
{{ vault_tls_private_path }}
vault_service_registration_consul_tls_ca_file
- CA 证书文件名
- 默认值:
{{ vault_tls_ca_file }}
vault_service_registration_consul_tls_cert_file
- 服务器证书
- 默认值:
{{ vault_tls_cert_file }}
vault_service_registration_consul_tls_key_file
- 服务器密钥
- 默认值:
{{ vault_tls_key_file }}
vault_service_registration_consul_tls_min_version
- 最低可接受的 TLS 版本
- 默认值:
{{ vault_tls_min_version }}
vault_service_registration_consul_tls_skip_verify
- 禁用 TLS 证书的验证。强烈不建议使用此选项。
- 默认值: false
Kubernetes 服务注册
有关各种选项的更多信息,请参阅 Vault 文档 中的 Kubernetes 服务注册。注意,此功能仅在 Vault 版本 1.4 及以后可用。
vault_service_registration_kubernetes_consul_enable
- 启用 Kubernetes 服务注册
- 默认值: false
vault_service_registration_kubernetes_template
- Kubernetes 服务注册模板文件名
- 默认值:
service_registration_kubernetes.hcl.j2
vault_service_registration_kubernetes_namespace
- 要注册的 Kubernetes 命名空间
- 默认值: vault
vault_service_registration_pod_name
- 要注册的 Kubernetes pod 名称
- 默认值: vault
vault_log_level
- 日志级别
- 支持的值: trace, debug, info, warn, err
- 默认值: info
- 需要 Vault 版本 0.11.1 或更高
vault_iface
- 网络接口
- 可以用
VAULT_IFACE
环境变量重写
- 可以用
- 默认值: eth1
vault_address
- 用于的主要网络接口地址
- 默认值:
"{{ hostvars[inventory_hostname]['ansible_'+vault_iface]['ipv4']['address'] }}"
vault_port
- 侦听的 TCP 端口号
- 默认值: 8200
vault_max_lease_ttl
- 配置令牌和秘密的 最大租赁时间。
- 默认值: 768h (32 天)
vault_default_lease_ttl
- 配置令牌和秘密的 默认租赁时间。
- 默认值: 768h (32 天)
vault_main_config
- 主配置文件名(完整路径)
- 默认值:
"{{ vault_config_path }}/vault_main.hcl"
vault_main_configuration_template
- Vault 主配置模板文件
- 默认值: vault_main_configuration.hcl.j2
vault_custom_configuration
- Vault 自定义配置
- 默认值: none
vault_http_proxy
- 用作 HTTP 和 HTTPS 请求的代理地址,除非用
vault_https_proxy
或vault_no_proxy
重写 - 默认值:
""
vault_https_proxy
- 用作 HTTPS 请求的代理地址,除非用
vault_no_proxy
重写 - 默认值:
""
vault_no_proxy
- 逗号分隔的值,指定不应进行代理的主机。遵循 golang 约定
- 默认值:
""
vault_cluster_address
- 要绑定的集群服务器间请求地址
- 默认值:
"{{ hostvars[inventory_hostname]['ansible_'+vault_iface]['ipv4']['address'] }}:{{ (vault_port | int) + 1}}"
vault_cluster_addr
- 广告给集群中其他 Vault 服务器以进行请求转发的地址
- 默认值:
"{{ vault_protocol }}://{{ vault_cluster_address }}"
vault_api_addr
- HA 客户端重定向地址
- 默认值:
"{{ vault_protocol }}://{{ vault_redirect_address or hostvars[inventory_hostname]['ansible_'+vault_iface]['ipv4']['address'] }}:{{ vault_port }}"
- vault_redirect_address 为向后兼容保留,但已弃用。
vault_disable_api_health_check
- 用于禁用 vault API 地址的健康检查的标志
- 默认值:
false
vault_cluster_disable
- 禁用 HA 集群
- 默认值: false
validate_certs_during_api_reachable_check
- 禁用 API 可达性检查的证书验证
- 默认值: true
vault_proxy_protocol_behavior
- 可能是
use_always
、allow_authorized
或deny_unauthorized
中的一个 - 启用监听器的 PROXY 协议。
- 如果启用并设置为其他值,则必须同时设置
- vault_proxy_protocol_authorized_addrs
- 信任 PROXY 协议信息的源 IP 的逗号分隔列表。
- 默认值: ""
vault_tls_certs_path
- TLS 证书路径
- 默认值:
/etc/vault/tls
vault_tls_private_path
- TLS 密钥路径
- 默认值:
/etc/vault/tls
vault_tls_disable
- 禁用 TLS
- 可以用
VAULT_TLS_DISABLE
环境变量重写
- 可以用
- 默认值: 1
vault_tls_gossip
- 启用支持存储的 TLS Gossip(如果支持)
- 默认值: 0
vault_tls_src_files
- 用户指定的 TLS 文件的源目录
- 使用
VAULT_TLS_SRC_FILES
环境变量重写
- 使用
- 默认值:
{{ role_path }}/files
vault_tls_ca_file
- CA 证书文件名
- 使用
VAULT_TLS_CA_CRT
环境变量重写
- 使用
- 默认值:
ca.crt
vault_tls_client_ca_file
- 客户端 CA 证书文件名
- 默认值: ``
vault_tls_cert_file
- 服务器证书
- 使用
VAULT_TLS_CERT_FILE
环境变量重写
- 使用
- 默认值:
server.crt
vault_tls_key_file
- 服务器密钥
- 使用
VAULT_TLS_KEY_FILE
环境变量重写
- 使用
- 默认值:
server.key
vault_tls_min_version
- 最低可接受的 TLS 版本
- 可以通过环境变量
VAULT_TLS_MIN_VERSION
重写
- 可以通过环境变量
- 默认值: tls12
vault_tls_cipher_suites
- 逗号分隔的受支持密码套件列表
- 默认值: ""
vault_tls_require_and_verify_client_cert
- 要求客户端提供有效的客户端证书
- 默认值: false
vault_tls_disable_client_certs
- 禁用请求客户端证书
- 默认值: false
vault_tls_copy_keys
- 将 TLS 文件从源复制到目标
- 默认值: true
vault_tls_files_remote_src
- 如果 TLS 文件已在主机上,从远程源复制
- 默认值: false
vault_x_forwarded_for_authorized_addrs
- 逗号分隔的源 IP CIDR 列表,信任该列表中的 X-Forwarded-For 头。
- 启用 X-Forwarded-For 支持。
- 如果启用,你还可以设置以下参数之一:
- 设置格式为 "N" 的 vault_x_forwarded_for_hop_skips 以跳过的跳数
- 设置为 true/false 的 vault_x_forwarded_for_reject_not_authorized
- 设置为 true/false 的 vault_x_forwarded_for_reject_not_present
- 默认值: ""
vault_bsdinit_template
- BSD init 模板文件
- 默认值:
vault_service_bsd_init.j2
vault_sysvinit_template
- SysV init 模板文件
- 默认值:
vault_sysvinit.j2
vault_debian_init_template
- Debian init 模板文件
- 默认值:
vault_service_debian_init.j2
vault_systemd_template
- Systemd 服务模板文件
- 默认值:
vault_service_systemd.j2
vault_systemd_service_name
- Systemd 服务单元名
- 默认值: "vault"
vault_telemetry_enabled
- 启用 Vault 远程监控
- 如果启用,则必须根据监控提供者至少设置以下一项参数:
- vault_statsite_address 格式为 "FQDN:PORT"
- vault_statsd_address 格式为 "FQDN:PORT"
- vault_prometheus_retention_time 例如: "30s" 或 "24h"
- 如果启用,可选地设置 vault_telemetry_disable_hostname 来从监控数据中剥离主机名前缀
- 默认值: false
vault_unauthenticated_metrics_access
- 配置 未验证的指标访问
- 默认值: false
vault_telemetry_usage_gauge_period
- 指定高基数使用数据收集的间隔,例如令牌计数、实体计数和秘密计数。
- 默认值: 未定义
操作系统发行版变量
vault
二进制文件适用于大多数 Linux 平台,且非特定于某一发行版。然而,一些发行版要求安装具有不同名称的特定 OS 包,因此该角色为流行的 Linux 发行版构建并定义了这些变量,以处理各个发行版之间的差异:
vault_pkg
- Vault 软件包文件名
- 默认值:
{{ vault_version }}_linux_amd64.zip
vault_centos_url
- Vault 软件包下载 URL
- 默认值:
{{ vault_zip_url }}
vault_centos_os_packages
- 要安装的 OS 包列表
- 默认值: 列表
vault_pkg
- Vault 软件包文件名
- 默认值:
"{{ vault_version }}_linux_amd64.zip"
vault_debian_url
- Vault 软件包下载 URL
- 默认值:
"{{ vault_zip_url }}"
vault_sha256
- Vault 下载的 SHA256 摘要
- 默认值: SHA256 摘要
vault_debian_os_packages
- 要安装的 OS 包列表
- 默认值: 列表
vault_pkg
- Vault 软件包文件名
- 默认值:
"{{ vault_version }}_linux_amd64.zip"
vault_redhat_url
- Vault 软件包下载 URL
- 默认值:
"{{ vault_zip_url }}"
vault_sha256
- Vault 软件包 SHA256 摘要
- 默认值: SHA256 摘要
vault_redhat_os_packages
- 要安装的 OS 包列表
- 默认值: 列表
vault_pkg
- Vault 软件包文件名
- 默认值:
"{{ vault_version }}_linux_amd64.zip"
vault_ubuntu_url
- Vault 软件包下载 URL
- 默认值:
"{{ vault_zip_url }}"
vault_sha256
- Vault 软件包 SHA256 摘要
- 默认值: SHA256 摘要
vault_enable_log
- 启用日志到
vault_log_path
- 默认值: false
vault_enable_logrotate
- 启用基于 systemd 的系统的日志轮换
- 默认值: false
vault_logrotate_freq
- 确定旋转 Vault 日志的频率
- 默认值: 7
vault_logrotate_template
- 日志轮换模板文件
- 默认值:
vault_logrotate.j2
vault_ubuntu_os_packages
- 要安装的 OS 包列表
- 默认值: 列表
依赖关系
注意:在执行角色之前,请阅读这些内容,以避免某些常见问题,这些问题通过安装正确的依赖关系来解决。
gtar
Ansible 需要 GNU tar,并且此角色在本地使用了 unarchive 模块,因此请确保你的系统安装了 gtar
。
Python netaddr
该角色依赖于 python-netaddr
,因此:
pip install netaddr
在执行角色之前,请在 Ansible 控制主机上执行此操作。
示例 Playbook
使用包含的 site.yml
playbook 进行基本安装:
ansible-playbook -i hosts site.yml
你也可以使用 --extra-vars
选项向 ansible-playbook
命令传递变量:
ansible-playbook -i hosts site.yml --extra-vars "vault_datacenter=maui"
指定一个具有不同后端定义的模板文件(请参见 templates/backend_consul.j2
):
ansible-playbook -i hosts site.yml --extra-vars "vault_backend_file=backend_file.j2"
确保模板文件 backend_file.j2
在角色目录中。
Vagrant 和 VirtualBox
请参阅 examples/README_VAGRANT.md
,了解在 VirtualBox 下快速部署 Vagrant 的详细信息。
示例 VirtualBox playbook
基于文件的 Vault 实例的示例 playbook。
- hosts: all
gather_facts: True
become: true
vars:
vault_backend: file
vault_cluster_disable: True
vault_log_level: debug
roles:
- vault
Vault Enterprise
此角色可以安装 Vault Enterprise 基于实例。
将 Vault Enterprise zip 存档放入 {{ role_path }}/files
并设置 vault_enterprise: true
或使用 VAULT_ENTERPRISE="true"
环境变量。如果 zip 文件在 files/ 中未找到,将尝试从 vault_zip_url
下载软件包。
vault_enterprise_premium
- 如果使用高级二进制文件,则设置为 True。主要在 "vault_version" 变量中包含 "+prem"
- 默认值: False
Vault Enterprise 与 HSM
该角色可以配置基于 HSM 的实例。确保参考 HSM 支持页面 并注意 行为变化 在安装 HSM 之后。
vault_enterprise_premium_hsm
- 如果使用高级 HSM 二进制文件,则设置为 True。主要在 "vault_version" 变量中包含 ".hsm"
- 默认值: false
vault_configure_enterprise_license
- 使用此角色管理企业许可证文件。将其设置为
true
以使用vault_license_path
或vault_license_file
。 - 默认值: false
vault_license_path
- 在远程主机上的企业许可证路径(目标路径)。
license_path
在主配置文件中。仅在vault_configure_enterprise_license: true
时使用。 - 默认值:
{{ vault_config_path }}/license.hclic
vault_license_file
- 在 Ansible 控制器上的企业许可证路径(用于上传的源文件)。当为空或未定义时,上传将被跳过。仅在
vault_configure_enterprise_license: true
时使用。 - 默认值: ""
vault_hsm_app
- 设置要使用的加密应用程序。
- 默认值: pkcs11
vault_backend_seal
注意:此密封将在不久的将来迁移到
pkcs11
密封,并与其他密封类型在命名更改方面保持一致。
- 后端密封模板文件名
- 默认值:
vault_backend_seal.j2
vault_seal_lib
- 设置 Vault 将调用的 HSM 库的绝对路径
- 默认值:
/lib64/hsmlibrary.so
vault_seal_pin
- 登录的 PIN。也可以通过
VAULT_HSM_PIN
环境变量指定。如果通过环境变量设置,Vault 在读取后会模糊处理该环境变量,并且如果 Vault 重新启动,将需要重新设置。 - 默认值: 12345
vault_seal_key_label
- 要使用的密钥标签。如果不存在该密钥并且启用生成,则此标签将给予生成密钥。如果使用
VAULT_HSM_KEY_LABEL
环境变量指定。 - 默认值: ''
vault_seal_hmac_key_label
- 要使用的 HMAC 密钥的标签。如果不存在该密钥并且启用生成,则此标签将给予生成的 HMAC 密钥。如果使用
VAULT_HSM_HMAC_KEY_LABEL
环境变量指定。 - 默认值: ''
vault_seal_generate_key
- 如果在 Vault 初始化时找不到与密钥标签相关的现有密钥,则指示 Vault 生成密钥。这是一个以字符串形式表达的布尔值(例如 "true")。如果启用生成,则 Vault 可能无法在所有情况下成功生成密钥,例如,如果需要专有厂商扩展来创建合适类型的密钥。
- 默认值: false
vault_seal_key_mechanism
- 除非你知道需要更改此设置,否则请不要更改。用于加密/解密的机制,指定为十进制或十六进制(以 0x 前缀表示)字符串。也可以通过
VAULT_HSM_MECHANISM
环境变量指定。 - 默认值: ''
- RSA 的示例: 0x0009
vault_seal_token_label
- 要使用的槽令牌标签。也可以通过
VAULT_HSM_TOKEN_LABEL
环境变量指定。此标签仅在vault_softcard_enable
为 true 时应用。 - 默认值: ''
vault_softcard_enable
- 如果你计划在 HSM 上使用软卡,请启用。
- 默认值: false
vault_seal_slot
- 要使用的槽号,指定为字符串(例如 "0")。也可以通过
VAULT_HSM_SLOT
环境变量指定。此标签仅在vault_softcard_enable
为 false(默认)时应用。 - 默认值: 0
vault_entropy_seal
- 设置为 True 以 包含
entropy
语句,启用 对受支持密封的熵增加。受支持的密封类型包括 PKCS11、AWS KMS 和 Vault Transit。 - 默认值: false
如果 vault_entropy_seal=true
,将包含以下语句在主配置文件中的 hcl:
entropy "seal" {
mode = "augmentation"
}
Vault GCP Cloud KMS 自动解封
此功能使运维人员能够将解封过程委托给 Google 密钥管理系统云,以简化在部分故障发生时的操作,并帮助创建新集群或临时集群。
此自动解封机制在 Vault 1.0 中是开源的,但较早版本需要企业版二进制文件。
vault_gkms
- 设置为 True 以启用 Google Cloud KMS 自动解封。
- 默认值: false
vault_backend_gkms
- 后端密封模板文件名
- 默认值:
vault_seal_gcpkms.j2
vault_gkms_project
- GCP 项目,其中密钥所在。
- 默认值: ''
vault_gkms_copy_sa
- 将 GCP SA 凭证文件从 Ansible 控制节点复制到 Vault 服务器。当不为
true
且未指定vault_gkms_credentials_src_file
的值时,将使用默认实例服务账户凭据。 - 默认值:
"true"
vault_gkms_credentials_src_file
- 用户指定的 Ansible 控制节点上的 GCP 凭证路径。
- 如果启用 Vault GKM,则必须设置此项或
vault_gkms_credentials_content
。 - 默认值: ''
vault_gkms_credentials_content
- 用户指定的 GCP 凭证文件内容。
- 如果启用 Vault GKM,则必须设置此项或
vault_gkms_credentials_src_file
。 - 默认值: ''
vault_gkms_credentials
- 在 Vault 服务器上的 GCP 凭证路径。
- 默认值:
/home/vault/vault-kms.json
vault_gkms_region
- GCP 区域,密钥所在的区域。
- 默认值: global
vault_gkms_key_ring
- Google Cloud Platform KeyRing 的 ID,密钥应属于该 KeyRing。
- 默认值: vault
Vault OCI KMS 自动解封
此功能使运维人员能够将解封过程委托给 OCI KMS,以简化部分故障时的操作,同时帮助创建新集群或临时集群。
vault_ocikms
- 设置为 true 以启用 OCI KMS 自动解封。
- 默认值: false
vault_ocikms_backend
- 后端密封模板文件名。
- 默认值:
vault_seal_ocikms.j2
vault_ocikms_auth_type_api_key
- 指定是否使用 API 密钥进行身份验证以连接到 OCI KMS 服务。
- 默认值: false
vault_ocikms_key_id
- 要使用的 OCI KMS 密钥 ID。
- 默认值: VAULT_OCIKMS_SEAL_KEY_ID
vault_ocikms_crypto_endpoint
- OCI KMS 加密端点(或数据平面端点),用于进行加密/解密请求。
- 默认值: VAULT_OCIKMS_CRYPTO_ENDPOINT
vault_ocikms_management_endpoint
- OCI KMS 管理端点(或控制平面端点),用于进行密钥管理请求。
- 默认值: VAULT_OCIKMS_MANAGEMENT_ENDPOINT
Vault Transit 自动解封
此功能使 Vault 能够使用另一个 Vault 实例作为解封过程的 transit secret engine
vault_transit
- 设置为 true 以启用 Vault Transit 自动解封
- 默认值:
false
vault_transit_backend
- 后端密封模板文件
- 默认值:
vault_seal_transit.j2
vault_transit_config
:
- 目标配置文件
- 默认值:
vault_transit.hcl
vault_transit_address
:
- 用于自动解封的实例的 Vault 地址
- 默认值: ``,如果
vault_transit: true
则该变量是强制性的
vault_transit_token
:
- 用于身份验证的令牌,以连接到外部 Vault 实例
- 默认值: ``,如果
vault_transit: true
则该变量是强制性的
vault_transit_disable_renewal
:
- 是否禁用自动令牌续期
- 默认值:
false
vault_transit_key_name
- 用于自动解封的密钥名称
- 默认值:
autounseal
vault_transit_mount_path
:
- 在何处挂载的 transit 引擎路径
- 默认值:
transit/
vault_transit_namespace
:
- 挂载 transit 引擎的命名空间
- 默认值: ``,默认为不设置
vault_transit_tls_ca_cert
:
- 外部 Vault 实例的 CA 证书
- 默认值:
ca_cert.pem
,如果vault_transit_tls_skip_verify: true
则省略
vault_transit_tls_client_cert
:
- 外部 Vault 实例的客户端证书
- 默认值:
client_cert.pem
,如果vault_transit_tls_skip_verify: true
则省略
vault_transit_tls_client_key
:
- 外部 Vault 实例的客户端密钥
- 默认值:
ca_cert.pem
,如果vault_transit_tls_skip_verify: true
则省略
vault_transit_tls_server_name
- 外部 Vault 实例的 TLS 服务器名称
- 默认值: ``,默认为不设置
vault_transit_tls_skip_verify
:
- 是否禁用对 TLS 证书的验证
- 默认:
false
,也可以通过VAULT_SKIP_VERIFY
设置
Vault AWS KMS 自动解封
此功能使运维人员能够将解封过程委托给 AWS KMS,以简化部分故障时的操作,并帮助创建新集群或临时集群。
vault_awskms
- 设置为 true 以启用 AWS KMS 自动解封
- 默认值: false
vault_awskms_backend
- 后端密封模板文件名
- 默认值:
vault_seal_awskms.j2
vault_awskms_region
- 要使用的 AWS KMS 区域
- 默认值: us-east-1
vault_awskms_access_key
- 用于与 AWS KMS 通信的 AWS 访问密钥
- 默认值: AWS_ACCESS_KEY_ID
vault_awskms_secret_key
- 与 AWS KMS 通信的 AWS 秘密密钥
- 默认值: AWS_SECRET_ACCESS_KEY
vault_awskms_key_id
- AWS KMS 中要使用的密钥 ID
- 默认值: VAULT_AWSKMS_SEAL_KEY_ID
vault_awskms_endpoint
- 要用于 KMS 的端点
- 默认值: AWS_KMS_ENDPOINT
Vault Azure Key Vault 自动解封
此功能使运维人员能够将解封过程委托给 Azure Key Vault,以简化部分故障时的操作,并帮助创建新集群或临时集群。
vault_azurekeyvault
- 设置为 true 以启用 Azure Key Vault 自动解封
- 默认值: false
vault_backend_azurekeyvault
- 后端密封模板文件名
- 默认值:
vault_seal_azurekeyvault.j2
vault_azurekeyvault_client_id
- 与连接到 Azure 的应用程序相关的服务主体名称的应用 ID
- 默认值: EXAMPLE_CLIENT_ID
vault_azurekeyvault_client_secret
- 客户端秘密是与你的应用程序相关联的密钥
- 默认值: EXAMPLE_CLIENT_SECRET
vault_azurekeyvault_tenant_id
- 租户 ID 是你在 Azure 中的目录 ID
- 默认值: EXAMPLE_TENANT_ID
vault_azurekeyvault_vault_name
- 托管密钥的 Vault 名称
- 默认值: vault
vault_azurekeyvault_key_name
- 存放在 Azure Key Vault 中的密钥
- 默认值: vault_key
Vault 插件
acme 插件
安装 vault-acme 插件,如果经过认证,则启用该插件(VAULT_ADDR
、VAULT_TOKEN
环境)。
vault_plugin_acme_install
- 将此设置为
remote
将在每个目标上下载 acme 插件,而不是从 localhost 复制。 - 选项: remote / local
- 默认值:
remote
vault_plugin_acme_sidecar_install
- 是否安装 vault acme sidecar 以处理
HTTP-01
/TLS_ALPN_01
挑战,除了 DNS-01。 - 默认值:
false
vault_plugin_acme_version
- 要安装的 acme 插件的版本,可以设置为
latest
以获取最新可用版本。 - 默认值:
latest
许可证
BSD-2-Clause
作者信息
贡献者
特别感谢在 CONTRIBUTORS.md 中列出的人员对该项目的贡献。
ansible-galaxy install brianshumate.vault