我需要能够拉入我们在私有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') }}"