2015-06-25 22 views
1

我有一個副本從本地用戶到遠程機器的關鍵的ansible任務:Ansible - 在文件中查找環境變量

​​

我想用戶變量,而不是my_user。 。?。Enviernoment vairble(即lookup('env', 'DEPLOY_KEY_PATH')或事實上任何變量

是否有可能

回答

3

要獲取當前用戶的關鍵,當然你也可以使用~別名這將工作:

authorized_key: state=present user=deployer key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}" 

另外請注意,state=present可能不是強制性的,但it is a good practice to keep it


然後,雖然這取決於Ø ñ你的項目到底是什麼,我不建議你這樣做,原因有三:

  1. 你可能需要添加幾個公鑰。
  2. 您可能需要添加其他用戶的公開。
  3. 如果用戶在特定的環境中啓動您的劇本,此行爲可能是有害的或危險的。

這是我建議你要做的。

在項目的根目錄中添加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') }}"