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