通过Ansible修改客户机密码

公司往往有这样的需求,当离职人员离职之后,则需要修改各种用户的密码,所以再此记录下如何通过ansible批量修改centos密码,由于我也是才开始接触自动化运维,ansible也是刚开始使用,如果有什么说错的地方,或者有什么可以优化的,欢迎各位大佬指出说明

1.通过ansible-playbook user模块修改密码
vim passwd.yml

---
- hosts: all
  gather_facts: false
  remote_user: root
  tasks:
  - name: Change password
    user: name={{name1}}  password={{ chpass | password_hash('sha512') }}  update_password=always

执行ansible-playbook passwd.yml -e “name1=root chpass=123”
这样我们就可以给ansible配置中所有主机修改root密码为123

2.但是我们往往有这种需求,分别要给不同的主机修改不同的密码,而不是统一的密码,根据我在网上查阅了一些资料,可以使用‘openssl rand -base64 12’命令获取随机字符,然后赋予用户密码,但是这种方法获取的密码复杂性并不是百分百都能满足我的需求,所以我觉得使用mkpasswd来获取密码。
由于mkpasswd需要安装expect包才可以使用,一开始我首先想到通过ansible先安装expect包然后通过mkpasswd获取密码,但是由于并不是所有的客户机都能够通过yum命令安装包,如果通过源码编译会使这个操作变得有点复杂
最后我决定通过ansible主控机来生成所有客户机的密码并且修改,在研究了几个小时之后我决定通过shell脚本和ansible共同完成这个操作
vim passwd.sh

#!/bin/bash
echo '' > /etc/ansible/tmp/passwd/newpass.txt
for i in `/usr/bin/cat /etc/ansible/hosts|grep ansible|grep -v '#'|awk -F ' ' '{print $1}'`
do
  mkpasswd -l 20 > /etc/ansible/tmp/passwd/$i
  k=`cat /etc/ansible/tmp/passwd/$i`
  ansible $i -m copy -a 'src=/etc/ansible/tmp/passwd/{{name}} dest=/root/passroot' -e "name=$i"
  ansible $i -m shell -a 'cat /root/passroot|passwd --stdin root'
  ansible $i -m file -a 'path=/root/passroot state=absent'
  #ansible $i -m command -a 'chdir=/root/ ls'
  echo $i $k >> /etc/ansible/tmp/passwd/newpass.txt
done

使用这个脚本会有一个警告,应该是我在ansible命令中定义了变量导致,但是由于对结果并没有影响,而且我也是刚接触这个工具,暂时也不会优化,所以就放着没有管

由于我尝试了几次发现使用ansible-playbook无法定义hosts变量,所以采用了以上方法,希望有大佬能够指点一下,回复我更好的方法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值