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
原文地址:https://www.cnblogs.com/sunjinchao/p/14440698.html