Ansible 批量修改密码 海口

客户要求每3个月修改一次主机密码。密码规则为客服提供的一串字符 xxxx + 主机后3位。

将需要登录主机添加到 Ansible。
  1. 将需要登录主机的公钥添加到 known_hosts
ssh-keyscan 192.168.1.11 192.168.1.12 192.168.1.13  >> /root/.ssh/known_hosts
  1. 生产 Ansible 主机的秘钥
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
  1. 将需要登录主机添加到 hosts
[zk]
192.168.1.11 ansible_ssh_pass=xxxx
192.168.1.12 ansible_ssh_pass=xxxx
192.168.1.13 ansible_ssh_pass=xxxx
  1. Ansible playbook
---
- hosts: zk
  gather_facts: no

  tasks:

  - name: install ssh key
    authorized_key: user=root 
                    key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}" 
                    state=present

执行 playbook

ansible-playbook ssh-addkey.yml

这时候去把 hosts 文件里面的 ansible_ssh_pass 删掉。
执行ansible all -m ping 也不需要密码
此方案只适用于刚拿到的服务器,当你禁止root登录以后,此方案失效。
解决方法是,使用普通用户,赋予sudo权限

批量修改密码

客户给的字符串为 Rfv5%+,将该字符串及主机名后三位赋予xx变量

修改密码脚本 pass_modify.sh

#!/bin/bash


xx=Rfv5%+`hostname|grep -oP '...$'`
echo "$xx"|passwd --stdin root

使用 ansible script 模块,远程执行该脚本即可。

其余方法:

---
  - hosts: zk
    gather_facts: false
    tasks:
    - name: change user passwd
      user: name={{ item.name }} password={{ item.chpass | password_hash('sha512') }}  update_password=always
      with_items:
           - { name: 'root', chpass: 'Lcsmy,123' }
原文地址:https://www.cnblogs.com/fsckzy/p/10649413.html