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

问题描述 投票:0回答:1

我正在尝试创建rsa并复制到其他远程计算机,以便test [0]能够ssh到test [1]并测试[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
linux ansible centos7 ansible-2.x
1个回答
1
投票

理想情况下,您希望将“主”实例与其余部分分开,因为并非所有[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的来源将会出现像这样的各种技巧。

© www.soinside.com 2019 - 2024. All rights reserved.