当前位置: 首页 > news >正文

ansible学习之ansible-vault

相关文档参考:http://www.ansible.com.cn/docs/playbooks_vault.html#what-can-be-encrypted-with-vault

ansible-vault 功能介绍

Ansible-Vault是一个用于加密和管理Ansible playbook中敏感数据的工具。通过创建、编辑、加密、解密、查看和重置密码,可以安全地存储如用户名和密码等信息。在剧本中,可以使用vars_files加载加密的变量文件,并在运行playbook时使用--ask-vault-pass选项确保安全解密。

ansible-vault 子命令介绍

create              创建新的保险库加密文件
decrypt             解密保险库加密文件
edit                编辑保险库加密文件
view                查看保险库加密文件
encrypt        		加密YAML文件
rekey               重设保险库加密文件的密钥

ansible-vault 子命令 实操演练

使用create 创建一个加密文件

# 对secret.yaml文件访问设置密码
[root@localhost ~]# ansible-vault create secret.yaml
New Vault password: 	
Confirm New Vault password: 
# secret.yaml 文件中的内容(被加密)
passwd:123456
# 可以看出是使用 AES256 进行加密
[root@localhost ~]# cat secret.yaml
$ANSIBLE_VAULT;1.1;AES256
37656638623563636332376630303334306531333431373364363061316430663032323961633033
3437633732353534663566323139613939396139666364630a346336653039316665393435663463
61333335346363633966326430356164366235613834303734393461343432383361396462386330
3662666238653165640a366133653230356635666261393632643638393538366665616662323231
6439

使用 view 查看加密内容(需要输入访问密码)

[root@localhost ~]# ansible-vault view secret.yaml 
Vault password: 
passwd:123456

使用 edit 重新编辑 secret.yaml 的内容

[root@localhost ~]# ansible-vault edit secret.yaml 
Vault password:
passwd:654321
[root@localhost ~]# ansible-vault view secret.yaml 
Vault password: 
passwd:654321

使用 encrypt 将已存在的yaml文件加密

[root@localhost ~]# cat foo.yaml
api: 12345678
[root@localhost ~]# ansible-vault encrypt    foo.yaml
New Vault password: 
Confirm New Vault password: 
Encryption successful
[root@localhost ~]# ansible-vault view    foo.yaml
Vault password: 
api: 12345678

使用 rekey 重设访问密码

# 第一遍输入旧密码,第二遍输入新密码,第三遍确定密码
[root@localhost ~]# ansible-vault  rekey    foo.yaml
Vault password: 
New Vault password: 
Confirm New Vault password: 
Rekey successful

使用 decrypt 还原加密的文件的内容

[root@localhost ~]# ansible-vault  decrypt foo.yaml
Vault password: 
Decryption successful
[root@localhost ~]# cat foo.yaml 
api: 12345678

子命令都可以对多个文件使用

ansible-vault 在playbook中使用

创建密码库文件,在文件中添加key/value 字典。

[root@localhost ~]# ansible-vault create secret.yaml
New Vault password: 
Confirm New Vault password: 
PW: 123456

编写playbook文件,并导入密码库文件,并使用debug模块测试变量。

- hosts: allvars_files: - secret.yamltasks:- name: Test variabledebug:var: PW

访问密码库文件需要密码,所有需要使用 --ask-vault-pass 提示输入密码。

[root@localhost ~]# ansible-playbook --ask-vault-pass playbook.yaml 
Vault password: PLAY [all] **************************************************************************************************************************************************TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.0.132]TASK [Test variable] ****************************************************************************************************************************************
ok: [192.168.0.132] => {"PW": 123456
}PLAY RECAP **************************************************************************************************************************************************
192.168.0.132              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

可以看出已经打印出了 PW 变量的值。

当然可以将密码库密码存放到文件中使用 --vault-password-file 导入就不用输入密码了

[root@localhost ~]# cat passwd.txt 
123456
[root@localhost ~]# ansible-playbook playbook.yaml  --vault-password-file ./passwd.txt PLAY [all] **************************************************************************************************************************************************TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.0.132]TASK [Test variable] ****************************************************************************************************************************************
ok: [192.168.0.132] => {"PW": 123456
}PLAY RECAP **************************************************************************************************************************************************
192.168.0.132              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

也可以在配置文件中指定密码存在文件位置,就不用指定了

[root@localhost ~]# cat /etc/ansible/ansible.cfg  | grep vault
# specifying --vault-password-file on the command line.
#vault_password_file = /path/to/vault_password_file
http://www.lryc.cn/news/458798.html

相关文章:

  • 封装el-upload组件,用于上传图片和视频的组件
  • 6.将扩散模型与其他生成模型的关联(2)
  • 【C++】基于红黑树封装set和map
  • 24最新新手入门指南:Stable Diffusion!
  • Java-基础
  • 二、后台管理系统布局菜单可拖动
  • socket和http区别
  • 算法:974.和可以被K整除的子数组
  • QD1-P8 HTML 格式化标签(font、pre、b、strong、i、u、del、s、sub、sup)
  • 红米Turbo 3工程固件预览 修复底层 体验原生态系统 默认开启diag端口
  • sql的调优指南及高级sql技巧
  • 生成式专题的第一节课---GAN图像生成
  • 中科星图GVE(案例)——AI实现建筑用地变化前后对比情况
  • Spring Boot中获取application.yml中属性的几种方式
  • YOLO11改进 | 注意力机制 | 结合静态和动态上下文信息的注意力机制
  • Python中函数的使用方法
  • 遨游智能终端赋能“危急特”场景,力推北斗技术规模化应用!
  • 构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程
  • 【汇编语言】寄存器(CPU工作原理)(六)—— 修改CS,IP的指令以及代码段
  • 机器学习与神经网络:从技术前沿到诺贝尔奖的跨越与未来展望
  • java 洛谷题单【数据结构1-2】二叉树
  • 项目优化内容及实战
  • 科研绘图系列:R语言蝴蝶图(Butterfly Chart)
  • 【FPGA开发】Modelsim如何给信号分组
  • Apache SeaTunnel 9月份社区发展记录
  • 系统架构设计师:数据库系统相关考题预测
  • 污水排放口细粒度检测数据集,污-水排放口的类型包括10类目标,10000余张图像,yolo格式目标检测,9GB数据量。
  • c++(多态)
  • 【网络协议】TCP协议常用机制——延迟应答、捎带应答、面向字节流、异常处理,保姆级详解,建议收藏
  • 财政部官宣: 国家奖学金,涨了!