Ansible - 文件查找中的环境变量
Ansible - environment variables in file lookups
我有一个 ansible 任务可以将密钥从本地用户复制到远程机器:
authorized_key: user=deployer key="{{ lookup('file', '/home/my_user/.ssh/id_rsa.pub') }}"
我想要用户变量而不是 my_user。环境变量(即 lookup('env', 'DEPLOY_KEY_PATH')
或实际上任何变量。
可能吗?
要获取当前用户密钥,当然可以使用~
别名。这将起作用:
authorized_key: state=present user=deployer key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
此外,请注意 state=present
可能不是强制性的,但 it is a good practice to keep it.
那么,虽然具体要看你的项目是什么,但我不建议你这样做,原因有以下三个:
- 您可能需要添加几个 public 键。
- 您可能需要添加 public 个其他用户。
- 如果用户在特定环境中启动您的 ansible 剧本,这种行为可能是不受欢迎的或危险的。
这是我建议你做的。
在项目的根目录添加一个 files/sshkeys/my_user.pub
文件,并在该文件中粘贴任何你想要的 public 键。公钥很少更改,因此维护此文件不太可能成为问题。
├── 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') }}"
我有一个 ansible 任务可以将密钥从本地用户复制到远程机器:
authorized_key: user=deployer key="{{ lookup('file', '/home/my_user/.ssh/id_rsa.pub') }}"
我想要用户变量而不是 my_user。环境变量(即 lookup('env', 'DEPLOY_KEY_PATH')
或实际上任何变量。
可能吗?
要获取当前用户密钥,当然可以使用~
别名。这将起作用:
authorized_key: state=present user=deployer key="{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
此外,请注意 state=present
可能不是强制性的,但 it is a good practice to keep it.
那么,虽然具体要看你的项目是什么,但我不建议你这样做,原因有以下三个:
- 您可能需要添加几个 public 键。
- 您可能需要添加 public 个其他用户。
- 如果用户在特定环境中启动您的 ansible 剧本,这种行为可能是不受欢迎的或危险的。
这是我建议你做的。
在项目的根目录添加一个 files/sshkeys/my_user.pub
文件,并在该文件中粘贴任何你想要的 public 键。公钥很少更改,因此维护此文件不太可能成为问题。
├── 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') }}"