Tea*_*oon 4 ansible ansible-2.x
在 Ansible 剧本中,我试图将默认公钥读入一个变量以供以后使用。
这是我的 yml:
- hosts: hostsGroup
become: false
vars:
publicKey: "{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}"
Run Code Online (Sandbox Code Playgroud)
该脚本因以下错误而中断:
fatal: [redacted-ip]: FAILED! =>
{"msg": "An unhandled exception occurred while templating '{{ lookup('file', lookup('env','HOME') + '/.ssh/id_rsa.pub') }}'. Error was a <class 'ansible.errors.AnsibleError'>,
original message: An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>,
original message: could not locate file in lookup: /root/.ssh/id_rsa.pub"}
Run Code Online (Sandbox Code Playgroud)
该文件被确认存在于该位置。
有没有更好的办法?或者我做错了什么?
引用文档:
查找发生在本地计算机上,而不是在远程计算机上。
要获取远程文件的内容,您可以使用这样的任务:
- name: get remote file contents
command: "cat {{ ansible_env.HOME }}/.ssh/id_rsa.pub"
register: key
Run Code Online (Sandbox Code Playgroud)
然后,您可以像这样访问内容:
- name: show key contents
debug:
var: key.stdout
Run Code Online (Sandbox Code Playgroud)
但!请注意,这里我使用的是ansible_env.HOME. 这在收集事实时由 Ansible 填充,它将HOME从 Ansible 用于身份验证的任何用户的角度表示环境变量的值。如果您使用诸如 之类become_user的东西,则该值不会更改以反映新用户。
| 归档时间: |
|
| 查看次数: |
13237 次 |
| 最近记录: |