一、免密登录
参考如下文档https://blog.csdn.net/Romanticn_chu/article/details/117250564
二、配置远程修改
方法一: 使用Ansible的user模块批量修改远程客户机的用户密码
由于在使用ansible修改用户密码的时候不能使用明文的方式,需要先加密,所以就需要使用一个方法对输入的明文的密码进行加密.
如下所示,在ssh,yml中添加如下内容:
- hosts: db
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: '新密码'} #此处可以仿照修改其他用户的密码
执行验证:
[root@localhost ansible]# ansible-playbook -i hosts ssh.yml
PLAY [all] *********************************************************************
TASK [install ssh key] *********************************************************
ok: [192.168.10.11]
ok: [192.168.10.12]
PLAY [db] **********************************************************************
TASK [change user passwd] ******************************************************
changed: [192.168.10.12] => (item={u'chpass': u'CYzbs196263', u'name': u'root'})
changed: [192.168.10.11] => (item={u'chpass': u'CYzbs196263', u'name': u'root'})
PLAY RECAP *********************************************************************
192.168.10.11 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.10.12 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
方法二: 修改远程主机的单个用户密码使用此方法比较方便
依旧修改ssh.yml文件,添加如下内容:
---
- hosts: ssh-host
gather_facts: false
tasks:
- name: Change password
user: name={{ name1 }} password={{ chpass | password_hash('sha512') }} update_password=always
运行验证时添加-e:
[root@ansible-server ~]# ansible-playbook /opt/root_passwd2.yaml -e "name1=root chpass=新密码"
方法三: 使用如下Ansible脚本, 适用于修改清单中部分远程主机的用户密码
编写ssh.yml脚本 (需要注意下面脚本中
"ens192"
是客户机ip所在的网卡设备名称, 这个要根据自己实际环境去配置, 比如eth0, eth1等) 添加如下内容:
- hosts: test-host
remote_user: root
tasks:
- name: change password for root
shell: echo '{{ item.password }}' |passwd --stdin root
when: ansible_ens192.ipv4.address == '{{ item.ip }}'
with_items:
- { ip: "远程主机IP地址", password: '新密码' }
- { ip: "远程主机IP地址", password: '新密码' }
- { ip: "远程主机IP地址", password: '新密码' }
执行测试:
[root@localhost ansible]# ansible-playbook -i hosts ssh.yml