需要通过引用 Gitlab 环境变量为具有 Ansible 剧本的用户设置 SSH 密钥



我需要能够拉入我们在私有Gitlab实例中为指定用户指定的SSH公钥;但是我很确定我的语法被提升了。哦,还值得一提的是,它是在 Gitlab 运行器(Docker(中作为 CI 管道的一部分运行的。Ansible 脚本作为打包程序模板的一部分执行,方法是使用"ansible_local"配置器并指定剧本 .yml

这是相关的 yml 片段:

- name: add deploy key to authorised keys
  authorized_key: user={{ user1 }}
  state: present
  key: "{{ lookup('env', '$ANSIBLE_PUB_KEY') }}"

我希望脚本完成,我的 Gitlab 变量被传入并成功写入指定的文件/目录。相反,我得到这个:

amazon-ebs: TASK [add deploy key to authorized keys] ***************************************
amazon-ebs: fatal: [127.0.0.1]: FAILED! => {"changed": false, "msg": "missing required arguments: key"}
amazon-ebs:     to retry, use: --limit @/tmp/packer-provisioner-ansible-local/5d30d577-4373-f7d2-190d-dd6e2f2e21d5/pre-build-ansible.retry
amazon-ebs:
amazon-ebs: PLAY RECAP *********************************************************************
amazon-ebs: 127.0.0.1                  : ok=8    changed=6    unreachable=0    failed=1   

此外,其他 Gitlab 变量在剧本的前面被调用,并且被 Ansible 成功操作,所以我相当确定我正在用我的语法做一些不稳定的事情。

我相信

您遇到的问题是您错误地传递了authorized_key模块的变量。使用ini表示法或yaml表示法将变量提供给模块。此外,请检查任务内的缩进。有关详细信息,请查看文档。

https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html#tasks-list

为了修复您的错误,我会做这样的事情:

- name: add key to authorised keys
  authorized_key:
    user={{ user1 }}
    state: present
    key: "{{ lookup('env', '$ANSIBLE_PUB_KEY') }}"

最新更新