Ansible使用ssh将软件设置为远程主机。
如果刚安装了一些新机器,由于远程主机上没有authorized_keys,从一台主机运行Ansible playbook将无法连接它们。
如果将Ansible主持人的pub密钥复制到以下目标主机:
public interface AnnonceDao extends JpaRepository<Annonce, Integer> {
Page<Annonce> findByTitreContainingAndTitreContaining(
String part1,
String part2,
Pageable page
);
}
首先应该在每个远程主机上登录并生成文件:
$ ssh user@server "echo \"`cat .ssh/id_rsa.pub`\" >> .ssh/authorized_keys"
这是将Ansible playbook运行到远程服务器的常用方法吗?有没有更好的方法存在?
答案 0 :(得分:2)
我认为使用Ansible,使用authorized_key
module也可以做得更好。例如,要为用户root
授权密钥:
ansible <hosts> -m authorized_key -a "user=root state=present key=\"$(cat ~/.ssh/id_rsa.pub)\"" --ask-pass
这也可以在剧本中完成,目标用户作为默认为root
的变量:
- hosts: <NEW_HOSTS>
vars:
- username: root
tasks:
- name: Add authorized key
authorized_key:
user: "{{ username }}"
state: present
key: "{{ lookup('file', '/home/<YOUR_USER>/.ssh/id_rsa.pub') }}"
并执行:
ansible-playbook auth.yml --ask-pass -e username=<TARGET_USER>
您的用户应该拥有权限,如果不使用became
。