Ansible在AWS云平台的应用:公钥推送
通常,业务及其均部署在云主机上,默认是不允许以root用户进行SSH登录的,并且root不提供密码登录,这时需要用一个具有sudo权限的用户来执行,默认一般是ec2-user,工作中经常会有这样一个需求:
例:被控端机3个用户(ec2-usr、admin、和readonly),分别对应三套公私钥(分别对应不同的权限),业务及其数量维持在1200台以上
需求分析:手动操作明显是不可能的,这时我们需要用ansible主控端进行公钥推送。我们可以利用Ansible的authorized_key模块来完成此项需求,authorized_key是Ansible官方推出的一个模块作用为【adds or removes an SSH authorized key】这里主要用于添加用户公钥,需要大家注意的是这里的公钥文件全部存放于ansible主控机的/home/yhc/ansible/ssh-copy-id/目录下,而且不需要担心被控端的[.ssh]目录是否建立,anthorized文件是否为600权限等,这些全部由authorized_key模块自动完成,是不是很人性化?
playbook文件如下:
--- - hosts: webserver remote_user: root tasks: - name: ensure users is present user: name={{ item }} state=perm with_items: - ec2-user - admin - readonly - name: ssh-copy-id user ec2-user authorized_key: user=ec2-user key='{{ lookup('file','/home/yhc/ansible/ssh-copy-id/example-master.pub') }}' - name: ssh-copy-id user ec2-user authorized_key: user=admin key='{{ lookup('file','/home/yhc/ansible/ssh-copy-id/example-master.pub') }}' - name: ssh-copy-id user ec2-user authorized_key: user=readonly key='{{ lookup('file','/home/yhc/ansible/ssh-copy-id/example-master.pub') }}'
备注:lookup是个插件 ,关于lookup的详细信息可查询 https://blog.csdn.net/qq_35887546/article/details/105249631
人生苦短,我用Python