• 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
  • 相关阅读:
    GIS重要概念与术语——矢量数据分析
    后台获取存储过程返回的数据(转)
    java集合map,set,list区别
    安装jdk配置环境变量并测试java
    使用JAVA读写Properties属性文件
    对象(含有java.util.Date),集合等转换成json
    SSH自我理解实质
    Hibernate中createCriteria即QBC查询的详细用法
    用Java递归来求N的阶层
    java this的使用
  • 原文地址:https://www.cnblogs.com/sunjinchao/p/14440698.html
Copyright © 2020-2023  润新知