1.主控服务器安装ansible2.9.5+
yum install -y ansible
1.1 利用ansible批量分发密钥/root/.ssh/id_rsa.pub
编写playbook文件 /opt/ssh_key.yaml
vim /opt/ssh_key.yaml
---
- hosts: jenkins
user: root
tasks:
- name: ssh-copy
authorized_key: user=root key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
执行批量分发密钥
ansible-playbook /opt/ssh_key.yaml
验证密钥是否分发成功。
1.2 Ansible批量更新远程主机用户密码方法
#由于在使用ansible修改用户密码的时候不能使用明文的方式,需要先加密,所以就需要使用一个方法对输入的明文的密码进行加密.
vim /opt/root_passwd.yaml
---
- hosts: jenkins
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: 'kdxf@123' }
- { name: 'jenkins', chpass: 'jenkins123' }
#注意上面在yaml文件中修改了远程客户机的root用户密码, app用户密码.
#如果还想要修改其他用户密码, 则继续按照上面规则添加即可!
执行批量修改任务
ansible-playbook /opt/root_passwd.yaml
1.3 修改远程主机的单个用户密码使用此方法比较方便
vim /opt/root_passwd2.yaml
---
- hosts: jenkins
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密码
ansible-playbook /opt/root_passwd2.yaml -e "name1=root chpass=jenkins#123"
1.4 使用如下Ansible脚本, 适用于修改清单中部分远程主机的用户密码
#编写ansible-playbook脚本 (需要注意下面脚本中"ens192"是客户机ip所在的网卡设备名称, 这个要根据自己实际环境去配置, 比如eth0, eth1等)
vim /opt/root_passwd4.yaml
- hosts: jenkins
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: "172.16.4.220", password: 'jenkins@123' }
- { ip: "172.16.4.221", password: 'ceph@123' }
- { ip: "172.16.4.222", password: 'k8s@123' }
执行ansible-playbook任务
ansible-playbook /opt/root_passwd3.yaml