ansible生产环境使用场景(四):encrypt_string加密和ansible-lint调试
前言:
有时需要对yaml文件中的某些敏感字段进行加密,这时就需要‘ansible-vault encrypt_string ’加密字符串,在使用过程中发现报错:Vault format unhexlify error: Odd-length string fatal,使用ansible-lint工具进行调试排查错误,本文记录了在使用过程中报错及解决的详细过程。
环境说明:
主机名 |
操作系统版本 |
ip |
ansible version |
备注 |
---|---|---|---|---|
ansible |
Centos 7.6.1810 |
172.27.34.51 |
2.9.9 |
ansible管理服务器 |
test85 |
Centos 7.6.1810 |
172.27.34.85 |
/ |
被管服务器 |
一、encrypt_string
1.原始yaml文件
---
- hosts: test85
gather_facts: false
vars:
test_user: "testuser"
test_passwd: "test123"
tasks:
- name: echo user and passwd
debug:
msg: "user is {{ test_user }},passwd is {{ test_passwd }}"
用户名为testuser,密码为test123
2.对test_passwd字段加密
[root@ansible yaml]# more encrypt_string.txt
abc123
[root@ansible yaml]# ansible-vault encrypt_string --vault-id encrypt_test@encrypt_string.txt --name password test123
password: !vault |
$ANSIBLE_VAULT;1.2;AES256;encrypt_test
32623436636338383062356661633433613439333566356263643065306463326130323035366630
3635643531303466356463383537373131383336666533370a386265616664616130613464343632
61623332303433396663346563316236666239303862646632393565626364626238343638396535
6134616331363463320a623538336336393232303039353261643261336337373366353838336165
3832
Encryption successful
使用‘ansible-vault encrypt_string’对密码字段test123加密;‘--vault-id’指定加解密字符串test123的密码为文件‘encrypt_string.txt’即abc123,后面运行encrypt_string.yaml会用到;‘encrypt_test’为加密test123的提示符;‘--name password’指定密码变量名为password。
3.修改yaml并运行
[root@ansible yaml]# more encrypt_string.yaml
---
- hosts: test85
gather_facts: false
vars:
test_user: "testuser"
test_passwd: !vault |
$ANSIBLE_VAULT;1.2;AES256;encrypt_test
32623436636338383062356661633433613439333566356263643065306463326130323035366630
3635643531303466356463383537373131383336666533370a386265616664616130613464343632
61623332303433396663346563316236666239303862646632393565626364626238343638396535
6134616331363463320a623538336336393232303039353261643261336337373366353838336165
3832
tasks:
- name: echo user and passwd
debug:
msg: "user is {{ test_user }},passwd is {{ test_passwd }}"
将生成的密文替换test123并运行
[root@ansible yaml]# ansible-playbook encrypt_string.yaml --vault-id encrypt_string.txt
‘--vault-id’指定运行encrypt_string.yaml的密码文件为encrypt_string.txt。
运行后发现报错: FAILED! => {"msg": "Vault format unhexlify error: Odd-length string"}
二、ansible-lint
ansible-lint是用于检测playbook的命令行工具,可用于yaml文件和role的语法检查。
1.安装ansible-lint
[root@ansible ansible]# pip install ansible-lint
2.检查yaml
[root@ansible yaml]# ansible-lint encrypt_string.yaml
[201] Trailing whitespace
encrypt_string.yaml:12
3832
提示第12行字符3832后面有空格
3.修复yaml并重新运行
按提示发现字符3832后面确实存在空格,删除并重新运行。
[root@ansible yaml]# ansible-playbook encrypt_string.yaml --vault-id encrypt_string.txt
修复后运行结果符合预期。
结论:FAILED! => {"msg": "Vault format unhexlify error: Odd-length string"}该报错由密码文件后面的空格引起,可以使用ansible-lint工具进行检查并及时修复。
更多请点击:ansible系列文章
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于react的组件库主题设计方案
- Xilinx MPSoC PS/PL之间的数据交互和外设设计
- 基于Res-Unet网络实现肝脏肿瘤分割任务
- golang判断map中key是否存在的方法
- 迁移实战:一次AntDB(基于pgxl分布式架构的数据库)数据库迁移经验分享
- 看完这篇文章,99%的人都会使用Mysql Explain工具
- 浅析MySQL存储引擎序列属性
- 详述MySQL Using intersect交集算法
- 案例:强制开库遭遇ORA-16433的处理过程
- 叮~AutoML自动化机器学习入门指南,来了
- 注意:ORACLE 11G ADG RAC 这个情况下并不能高可用
- Nginx转发指向数据库端口并对外开放访问权限
- Python手写了 35 种可解释的特征工程方法
- Geant4--G4ParticleGun定义射线源的发射能谱
- Sony-PMCA-RE, 反向工程索尼PlayMemories相机应用