Ansible-文件查找中的环境变量

Ansible-文件查找中的环境变量,ansible,ansible-playbook,Ansible,Ansible Playbook,我有一个ansible任务,可以将密钥从本地用户复制到远程计算机: authorized_key: user=deployer key="{{ lookup('file', '/home/my_user/.ssh/id_rsa.pub') }}" 我想使用用户变量,而不是我的用户。环境变量(即查找('env','DEPLOY\u KEY\u PATH')或实际上任何变量 是否可能?要获取当前用户密钥,您当然可以使用~别名。这将起作用: authorized_key: state=present

我有一个ansible任务,可以将密钥从本地用户复制到远程计算机:

authorized_key: user=deployer key="{{ lookup('file', '/home/my_user/.ssh/id_rsa.pub') }}"
我想使用用户变量,而不是我的用户。环境变量(即
查找('env','DEPLOY\u KEY\u PATH')
或实际上任何变量


是否可能?

要获取当前用户密钥,您当然可以使用
~
别名。这将起作用:

authorized_key: state=present user=deployer key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
另外,请注意,
state=present
可能不是强制性的,但是


那么,尽管这取决于你的项目具体是什么,但我不建议你这样做,原因有三:

  • 您可能需要添加几个公钥
  • 您可能需要添加其他用户的公共列表
  • 如果用户在特定环境中启动ansible playbook,则此行为可能是不需要的或危险的
  • 这就是我建议你做的

    在项目的根目录下添加一个
    files/sshkeys/my_user.pub
    文件,并将所需的任何公钥粘贴到此文件中。公钥很少更改,因此维护此文件可能不会有问题

    ├── files
    │   └── sshkeys
    │       └──my_user.pub
    ├── hosts
    └── site.yml
    
    您可以使用授权密钥模块查找密钥文件:

    authorized_key: state=present user=deployer key="{{ lookup('file', './files/sshkeys/my_user.pub') }}"
    
    或者,如您所问,如果使用变量:

    authorized_key: state=present user=deployer key="{{ lookup('file', './files/sshkeys/'+ user.name +'.pub') }}"