首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ansible生产环境使用场景(四):encrypt_string加密和ansible-lint调试

ansible生产环境使用场景(四):encrypt_string加密和ansible-lint调试

作者头像
loong576
发布2020-08-19 11:31:12
1.4K0
发布2020-08-19 11:31:12
举报
文章被收录于专栏:运维ABC运维ABC

前言:

​ 有时需要对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
image-20200814172827953
image-20200814172827953

使用‘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 
image-20200814173145998
image-20200814173145998

‘--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
image-20200814173800909
image-20200814173800909

2.检查yaml

[root@ansible yaml]# ansible-lint  encrypt_string.yaml 
[201] Trailing whitespace
encrypt_string.yaml:12
          3832 
image-20200814173852383
image-20200814173852383

提示第12行字符3832后面有空格

3.修复yaml并重新运行

按提示发现字符3832后面确实存在空格,删除并重新运行。

[root@ansible yaml]# ansible-playbook encrypt_string.yaml --vault-id encrypt_string.txt 
image-20200814174245348
image-20200814174245348

修复后运行结果符合预期。

结论:FAILED! => {"msg": "Vault format unhexlify error: Odd-length string"}该报错由密码文件后面的空格引起,可以使用ansible-lint工具进行检查并及时修复。

更多请点击:ansible系列文章

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、encrypt_string
    • 1.原始yaml文件
      • 2.对test_passwd字段加密
        • 3.修改yaml并运行
        • 二、ansible-lint
          • 1.安装ansible-lint
            • 2.检查yaml
              • 3.修复yaml并重新运行
              相关产品与服务
              命令行工具
              腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档