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