带有 git 模块的 Ansible 任务失败并显示“并且无法转换为 dict.The 错误是:需要超过 1 个值到 unpack\n”

Ansible task with git module fails with ' and could not be converted to an dict.The error was: need more than 1 value to unpack\n'

一直在开发一个简单的 ansible-playbook,其中一项任务是 运行 一个 git 拉到一个文件夹,昨天它运行完美,提交然后重新启动 mi pc 到 windows(来自 ubuntu)。

再次使用 ubuntu 重新启动并 运行 运行剧本后,我开始遇到奇怪的错误,首先从 delegate_to: localhost 任务到本地主机的 ssh 无法 ssh 并通过添加修复[local] 阻止库存。

现在 git 拉取任务失败并出现错误:

fatal: [127.0.0.1]: FAILED! => {
    "msg": "the field 'args' has an invalid value ({u'repo': u'https://{{ github_user | urlencode }}:{{ github_password | urlencode }}@github.com/{{ repo_url }}.git', u'dest': u'{{ local_build_path }}/freedom_integration_ant'}), and could not be converted to an dict.The error was: need more than 1 value to unpack\n\nThe error appears to be in '/home/jquiroga/Documents/rokketlabs/freedom_customer_deployment/deploy_tuggers.yaml': line 15, column 7, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n    - name: Get updated files from git repository\n      ^ here\n"
}

这并没有告诉我太多信息(甚至用 - debug: var=vars 进行了检查并且 var 正在正常传递,任务是:

- name: Get updated files from git repository
  git:
    repo: "https://{{ github_user | urlencode }}:{{ github_password | urlencode }}@github.com/{{ repo_url }}.git"
    dest: "{{ local_build_path }}/my_repo"
  delegate_to: localhost

github_password 使用 ansible 保险库加密,我 运行 使用 --ask-vault-pass

创建脚本

{{ github_user | urlencode }} 和 {{ github_password | urlencode }} 导致问题,删除 |来自 vars 的 urlencode 解决了这个问题。