我正在尝试创建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
答案 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的来源将浮出水面,像这样的各种技巧。