json - 如何解决警告:字符串字段中的值 4(类型 int)在 Ansible 中被转换为 u'4'(类型字符串)?
问题描述
我已经在 Ansible 剧本中解码了额外的变量。我将额外的变量作为编码格式传递。我正在解码额外的变量并解析代码中的键和值。代码是:
meta="{"hostname":"oracleserver","username":"root","password":"admin@123","new_disk":"/dev/sdb","vg_name":"ts","lv_name":"tsdev","mnt_point":"/dev/sdb1","lv_size":"3G"}"
我已将编码的元变量作为 base64encode 传递,如下所示:
ansible-playbook init.yml -e meta=eyJob3N0bmFtZSI6Im9yYWNsZXNlcnZlciIsInVzZXJuYW1lIjoicm9vdCIsInBhc3N3b3JkIjoiYWRtaW5AMTIzIiwibmV3X2Rpc2siOiIvZGV2L3NkYiIsInZnX25hbWUiOiJ0cyIsImx2X25hbWUiOiJ0c2RldiIsIm1udF9wb2ludCI6Ii9kZXYvc2RiMSIsImx2X3NpemUiOiIzRyJ9
- name: creating the custom inventory at run time
hosts: localhost
tasks:
- name: Getting the meta json data
set_fact:
decoded_meta_data: "{{ meta | b64decode }}"
- name: extracting the hostname from meta data
set_fact:
hostname: "{{ decoded_meta_data.hostname }}"
- debug: msg="{{ decoded_meta_data}} {{ decoded_meta_data.hostname}} {{ decoded_meta_data.lv_size }}"
解码值后,我得到的输出和警告为:
PLAY [creating the custom inventory at run time] ****************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************
ok: [localhost]
TASK [Getting the meta json data] *******************************************************************************************************************
ok: [localhost]
TASK [extracting the hostname from meta data] ******************************************************************************************************
ok: [localhost]
TASK [debug] ****************************************************************************************************************************************
ok: [localhost] => {
"msg": "{'username': u'root', 'mnt_point': u'/dev/sdb1', 'new_disk': u'/dev/sdb', 'lv_name': u'tsdev', 'hostname': u'oracleserver', 'vg_name': u'ts', 'lv_size': u'3G', 'password': u'admin@123'} oracleserver 3G"
}
[警告]:字符串字段中的值 4(int 类型)已转换为 u'4'(字符串类型)。如果这看起来不像您所期望的,请引用整个值以确保它不会改变。
解决方案
您可以在 ~/.ansible.cfg 的默认部分中添加以下行
/etc/ansible/ansible.cfg
[defaults]
string_conversion_action = ignore
推荐阅读
- spring - 使用 Spring Integration 轮询本地文件夹并将文件发送到 FTP
- javascript - 浏览器自动填充选项与角度材质自动完成选项重叠
- jquery - 元素未定义 Uncaught ReferenceError
- angular - 角度反应形式启用问题
- http - 如何通过代理服务器客户端使用自签名证书
- asp.net - 无法将“system.dbnull”类型的对象转换为“system.byte”类型。C#
- solr - 使用 Spring-Data-Solr 将数据索引到 Solr 时未发现关联错误
- oracle - 在 plsql 中加入更新语句
- javascript - 输入元素的值更改但未在浏览器中显示?
- git - 我可以在一个存储库上提交两个不同的存储库吗?