Bootstrap

linux批量改密码ansible实战(转)

linux批量改密码

安装ansible

yum install -y ansible

采用ansible建立 ssh 无密码登入

# ssh-keygen -t rsa          #一路回车
# s /root/.ssh/
首先要配置ansible清单 (远程主机的密码这里为"123456")
[root@ansible-server ~]# vim /etc/ansible/hosts
................
................
[ssh-host]
172.16.60.204
172.16.60.205
  
[ssh-host:vars]
ansible_ssh_pass="123456"

发送公钥到目标机器命令格式如下:

vi /etc/ansible/ansible.cfg

host_key_checking = False

1. 使用Ansible的user模块批量修改远程客户机的用户密码

#由于在使用ansible修改用户密码的时候不能使用明文的方式,需要先加密,所以就需要使用一个方法对输入的明文的密码进行加密.
 
[root@ansible-server ~]# vim /opt/root_passwd.yaml
---
  - hosts: ssh-host
    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: 'kevin@123' }
           - { name: 'app', chpass: 'bjop123' }
 
#注意上面在yaml文件中修改了远程客户机的root用户密码, app用户密码.
# 如果还想要修改其他用户密码, 则继续按照上面规则添加即可!
# 执行ansible-play
[root@ansible-server ~]# ansible-playbook /opt/root_passwd.yaml

2. 修改远程主机的单个用户密码使用此方法比较方便

# 编写playbook文件
[root@ansible-server ~]# vim /opt/root_passwd2.yaml
---
  - hosts: ssh-host
    gather_facts: false
    tasks:
    - name: Change password
      user: name={{ name1 }}  password={{ chpass | password_hash('sha512') }}  update_password=always
 
#执行ansible-playbook,  使用-e参数传递用户名和密码给剧本,其中root为用户名,admin#123就是修改后的root密码
[root@ansible-server ~]# ansible-playbook /opt/root_passwd2.yaml -e "name1=root chpass=admin#123" 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;