使用ansible批量更新key

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ansible批量更新key相关的知识,希望对你有一定的参考价值。

背景:按照公司要求每半年更新一次所有物理服务器的ssh登录key。

旧key:/root/.ssh/antiykey.pub
新key:/root/.ssh/antiykey190708.pub

1,确保ansible能管理所有机器
技术图片

确保可以ping通所有要操作的机器。

添加新key:

[[email protected] ansible]# cat addkey.xml 
---
- hosts: antiy-all
  remote_user: root
  tasks:
  - name: add key
    authorized_key:
      user: root
      state: present
      key: " lookup(‘file‘, ‘/root/.ssh/antiykey190708.pub‘) "
[[email protected] ansible]#

hosts: antiy-all ###这个是我的ansible分组,这个组包含所有要更换的机器
authorized_key: ###使用ansible的这个模块
state: present ###添加key
key: " lookup(‘file‘, ‘/root/.ssh/antiykey190708.pub‘) " ###新key的路径

[[email protected] ansible]# ansible-playbook addkey.xml
技术图片
技术图片

吗买劈的,失败了好多,等会检查下,向是网络问题,都是些需要用访问的ip。
这个时候会生成一个文件,里面记录了失败的ip

[[email protected] ansible]# ll addkey.retry 
-rw-r--r-- 1 root root 1034 Jul 10 11:08 addkey.retry
[[email protected] ansible]# 

查询发现是文件属性问题
ansible key-fail -m shell -a "lsattr /root/.ssh/authorized_keys"
技术图片

接着先删除这个属性
[[email protected] ansible]# ansible key-fail -m shell -a "chattr -i /root/.ssh/authorized_keys"
技术图片

再次查看已经删除这个属性
技术图片

接着继续执行添加key
[[email protected] ansible]# ansible-playbook addkey.xml

搞定
技术图片

到这里添加就完成了。
注意:在操作删除旧key之前一定要确保你的ansible可以使用新key管理所有机器,切记切记,免得给自己找麻烦。

删除旧key:

[[email protected] ansible]# cat delkey.xml 
---
- hosts: antiy-test
  remote_user: root
  tasks:
  - name: add key
    authorized_key:
      user: root
      state: absent
      key: " lookup(‘file‘, ‘/root/.ssh/antiykey.pub‘) "
[[email protected] ansible]# 

执行
ansible-playbook addkey.xml

先这样吧。

以上是关于使用ansible批量更新key的主要内容,如果未能解决你的问题,请参考以下文章

JDBC PreparedStatement、批量更新和生成的Keys

Ansible-批量导入key(入门)

Ansible介绍

笔记二:ansible批量设置主机名

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加