我有一个ansible任务,将密钥从本地用户复制到远程机器:
authorized_key: user=deployer key="{{ lookup('file', '/home/my_user/.ssh/id_rsa.pub') }}"
我想使用变量而不是 my_user 。 Enviernoment vairble(即lookup('env', 'DEPLOY_KEY_PATH')
或实际上任何变量。
有可能吗?
答案 0 :(得分:3)
要获取当前用户密钥,您当然可以使用~
别名。这将有效:
authorized_key: state=present user=deployer key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
另请注意,state=present
可能不是强制性的,而是it is a good practice to keep it。
然后,虽然这完全取决于你的项目是什么,但我不建议你这样做有三个原因:
我建议你这样做。
在项目的根目录中添加files/sshkeys/my_user.pub
文件,并将所需的所有公钥粘贴到此文件中。 Pubkeys很少更改,因此维护此文件不太可能存在问题。
├── files
│ └── sshkeys
│ └──my_user.pub
├── hosts
└── site.yml
您可以使用authorized_key模块查找密钥文件:
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') }}"