栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在ansible中修改json的最佳方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在ansible中修改json的最佳方法

我不知道 最好的
方法,但是一种选择是编写一个简单的库模块来为您处理更新的机制。您可以使用该

jsonpointer
模块来查找要修改的数据,然后将修改后的对象返回到ansible。起点可能看起来像:

#!/usr/bin/pythonfrom ansible.module_utils.basic import AnsibleModuleimport jsontry:    import jsonpointerexcept importError:    jsonpointer = Nonedef main():    module = AnsibleModule(        argument_spec=dict( data=dict(required=True, type='dict'), pointer=dict(required=True), action=dict(required=True,  choices=['append', 'extend', 'update']), update=dict(type='dict'), extend=dict(type='list'), append=dict(),        ),        supports_check_mode=True,    )    if jsonpointer is None:        module.fail_json(msg='jsonpointer module is not available')    action = module.params['action']    data = module.params['data']    pointer = module.params['pointer']    if isinstance(data, str):        data = json.loads(str)    try:        res = jsonpointer.resolve_pointer(data, pointer)    except jsonpointer.JsonPointerException as err:        module.fail_json(msg=str(err))    if action == 'append':        res.append(module.params['append'])    if action == 'extend':        res.extend(module.params['extend'])    elif action == 'update':        res.update(module.params['update'])    module.exit_json(changed=True,          result=data)if __name__ == '__main__':    main()

如果将其放入例如中,则

library/json_modify.py
可以在像这样的剧本中使用它:

- hosts: localhost  gather_facts: false  vars:    myvar: {        "PolicyVersion": {          "CreateDate": "2017-08-07T02:48:05Z",          "document": { "Statement": [   {     "Action": "sts:AssumeRole",     "Effect": "Allow",     "Resource": [       "arn:aws:iam::123456789123:role/Root_Update_svcacct",       "arn:aws:iam::123456789123:role/Root_Delete_svcacct",       "arn:aws:iam::123456789123:role/Root_Create_svcacct",       "arn:aws:iam::123456789123:role/Root_Full_svcacct",       "arn:aws:iam::987654321987:role/Member1_Create_svcacct",       "arn:aws:iam::987654321987:role/Member1_Update_svcacct",       "arn:aws:iam::987654321987:role/Member1_Delete_svcacct",       "arn:aws:iam::987654321987:role/Member1_Full_svcacct"     ]   } ], "Version": "2012-10-17"          },          "IsDefaultVersion": true,          "VersionId": "v2"        }      }  tasks:    - json_modify:        data: "{{ myvar }}"        pointer: "/PolicyVersion/document/Statement/0/Resource"        action: extend        extend:          - "arn:aws:iam::001122334455:role/Member1_Create_svcacct"          - "arn:aws:iam::001122334455:role/Member1_Update_svcacct"          - "arn:aws:iam::001122334455:role/Member1_Delete_svcacct"          - "arn:aws:iam::001122334455:role/Member1_Full_svcacct"      register: result    - debug:        var: result.result

运行该手册和建议的模块的结果是:

TASK [debug] *******************************************************************ok: [localhost] => {    "result.result": {        "PolicyVersion": { "CreateDate": "2017-08-07T02:48:05Z",  "document": {     "Statement": [         {  "Action": "sts:AssumeRole",   "Effect": "Allow",   "Resource": [      "arn:aws:iam::123456789123:role/Root_Update_svcacct",       "arn:aws:iam::123456789123:role/Root_Delete_svcacct",       "arn:aws:iam::123456789123:role/Root_Create_svcacct",       "arn:aws:iam::123456789123:role/Root_Full_svcacct",       "arn:aws:iam::987654321987:role/Member1_Create_svcacct",       "arn:aws:iam::987654321987:role/Member1_Update_svcacct",       "arn:aws:iam::987654321987:role/Member1_Delete_svcacct",       "arn:aws:iam::987654321987:role/Member1_Full_svcacct",       "arn:aws:iam::001122334455:role/Member1_Create_svcacct",       "arn:aws:iam::001122334455:role/Member1_Update_svcacct",       "arn:aws:iam::001122334455:role/Member1_Delete_svcacct",       "arn:aws:iam::001122334455:role/Member1_Full_svcacct"  ]         }     ],      "Version": "2012-10-17" },  "IsDefaultVersion": true,  "VersionId": "v2"        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449299.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号