将rsa令牌复制到组中的远程主机

时间:2019-04-09 14:01:16

标签: linux ansible centos7 ansible-2.x

我正在尝试创建rsa并复制到其他远程计算机,以便使test [0]可以通过ssh进入test [1]和test [2]

我的库存文件

[ test ]
10.100.0.1
10.100.0.2
10.100.0.3

我想以root用户身份在10.100.0.1上创建一个rsa令牌,并以root用户身份将公共密钥复制到/home/centos/.ssh/authorized_keys到10.100.0.2和10.100.0.3。

如何使用ansible实现此目的。 这3个实例都是AWS -ec2 centos 7计算机。我希望代码是动态的,而不是硬编码的ips。

我无法继续进行下去。

- name: Generate /etc/ssh RSA host key
  command: ssh-keygen -q -t rsa -f /root/.ssh/id_rsa -N ""
    args:
      creates: /root/.ssh/vid_rsa
    run_once: True

1 个答案:

答案 0 :(得分:1)

理想情况下,您希望将“ master”实例与其余实例分开,因为并非所有[test]机器都是相同的,但是值得庆幸的是,人们可以使用数组表示法指示第一台机器。

然后,您只想将公共密钥作为“事实”注入test的第一个成员中,然后在test的所有成员中检索该事实。

- hosts: test[0]
  tasks:
  - name: generate ssh key
    command: ssh-keygen etc etc
  - name: grab the public key
    command: cat /root/.ssh/id_rsa.pub
    register: the_pub_key

- hosts: test
  tasks:
  - name: install the public key
    authorized_key:
      key: '{{ hostvars[test0].the_pub_key }}'
      user: root  # or whatever
    vars:
      test0: '{{ groups.test[0] }}'

如果您希望省略authorized_key本身上的test[0],则可以使用适当的when:子句将其跳过。

研究kubespray的来源将浮出水面,像这样的各种技巧。