惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
宝玉的分享
宝玉的分享
I
InfoQ
P
Privacy International News Feed
V
V2EX
IT之家
IT之家
S
SegmentFault 最新的问题
D
Darknet – Hacking Tools, Hacker News & Cyber Security
V2EX - 技术
V2EX - 技术
C
CERT Recently Published Vulnerability Notes
C
Check Point Blog
The Register - Security
The Register - Security
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
AWS News Blog
AWS News Blog
M
MIT News - Artificial intelligence
C
Cyber Attacks, Cyber Crime and Cyber Security
F
Fortinet All Blogs
B
Blog
N
Netflix TechBlog - Medium
B
Blog RSS Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
T
Threatpost
Forbes - Security
Forbes - Security
U
Unit 42
A
Arctic Wolf
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Palo Alto Networks Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recorded Future
Recorded Future
L
Lohrmann on Cybersecurity
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
月光博客
月光博客
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
Jina AI
Jina AI
I
Intezer
V
Visual Studio Blog
阮一峰的网络日志
阮一峰的网络日志
The Hacker News
The Hacker News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
L
LangChain Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
MyScale Blog
MyScale Blog
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
量子位

Alliot's blog

Docker 代理配置机制与作用域 2025年底的安卓搞机备忘录 ArgoCD部署应用出现metadata.annotations过大问题 APC UPS更换电池校准容量 M1 Mac安装低版本Node.js Cloudflare Tunnel前置代理支持 CDN场景下配置Vaultwarden启用fail2ban 中银香港丝滑开户总结 从指定路径更新雷池WAF证书 AWS ECS使用EBS作为Volume 浅浅的调教一下国产智障电视 Nginx proxy_pass到AWS ALB的504问题 OpenV**手动指定路由规则 本地模拟CNAME解析 Nginx搭建WebDAV服务 迎来船新版本的Hexo+NexT 优雅的处理Git多帐号与代理问题 验光配镜扫盲 Prometheus relabel实现动态metrics path
Ansible使用Bitwarden存储Vault密码
Alliot · 2024-11-24 · via Alliot's blog

  Bitwarden(Vaultwarden) 提供了命令行版本的客户端, 利用 Ansible 的 vault_password_file, 我们可以很方便的在使用 ansible-vault 时调用 Bitwarden 里的密码。

配置 bitwarden-cli

  这里仅以 macOS 为例,其他的操作系统直接参考官方文档即可: 安装bitwarden-cli|官方文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 安装
brew install bitwarden-cli

# 配置server地址
bw config server https://xxx.xxx

# 登录
bw login

# 登录完成后可以查看一下状态
bw status

# 正常来说, 即使是登录了, `bw` 每次执行可能也都会要求输入主密码, 这时候你可以使用如下命令让当前shell会话免密码:
export BW_SESSION=$(bw unlock --raw)

# 测试创建一个密码item
bw get template item | jq ".name=\"Ansible-test-alliot-blog\" | .login=$(bw get template item.login | jq '.username="alliot" | .password="password123"')" | bw encode | bw create item

# 获取这个密码
bw get password Ansible-test-alliot-blog

配置 Ansible

  通过上一步的配置,我们已经可以在终端通过 bw 命令创建和获取密码了, 在 Ansible 这边,我们测试使用 ansible-vault 来加密一个文件,并将密码存储到 Bitwarden, 随后使用 Bitwarden 密码来完成对加密文件的解密。
  首先我们在当前项目路径或是家目录创建一个 ansible.cfg。(具体在哪里创建取决于你想要的作用域, 优先级参考 Ansible官方文档: config) ,我这里直接以家目录为例。 vim ~/.ansible.cfg 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[defaults]
nocows = 1
host_key_checking = False
inventory = inventory/inventory.ini
ansible_ssh_user = root
interpreter_python = auto_silent
stdout_callback = debug



vault_password_file = ~/vault-pass.sh


[ssh_connection]
pipelining =True
ssh_args=-o ControlMaster=auto -o ControlPersist=60s

  在配置文件中, 指定 ~/vault-pass.shvault_password_file, 该脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

set -e

# 需要先安装bitwarden-cli
# brew install bitwarden-cli
# bw config server https://xx.xxx
# bw login
# bw sync
# bw logout
# export BW_SESSION=$(bw unlock --raw)
bw get password "Ansible-test-alliot-blog"

  别忘了赋予它可执行权限: chmod +x ~/vault-pass.sh

使用 Ansible-vault

  假设我现在有一个文件需要使用 ansible-vault 加密: alliot-blog.yaml, 我们可以直接使用 ansible-vault 命令行执行:

1
2
ansible-vault encrypt alliot-blog.yaml
New Vault password:

  这是默认 ansible-vault 配置提示的交互式输入加密用的 Vault password, 在我们配置了上述脚本集成 Bitwarden 后,这个命令交互将变成如下:

1
2
3
ansible-vault encrypt alliot-blog.yaml         

? Master password: [input is hidden]

  这里交互要求输入的是 Bitwarden 的密码, 完成登录后,将直接调用前面我们在 Bitwarden 中配置的 “Ansible-test-alliot-blog” 作为加密用的 Vault password。
  至此, 便实现了 Ansible-vault 调用 Bitwarden 中的密码。

结语

  Bitwarden 提供了多平台的客户端, 以及完善的 API, 利用这些开放的接口, 我们可以实现很多集成, 将零散的密码、凭证统一管理。
不过, 享受这种集中化管理带来的便利的同时, 也要防止被 “一锅端”, 别忘了安全加固与备份。