如何以正确的方式运行Ansible playbook到多个服务器?

时间:2017-05-31 05:34:03

标签: ssh ansible

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运行到远程服务器的常用方法吗?有没有更好的方法存在?

1 个答案:

答案 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