ansible批量修改用户密码,支持特殊字符,精简教程

需要先建立免密钥登陆,下面是建立密钥的环境

服务器IP地址操作系统所需软件
ansible主机192.168.2.203Centos 7 64位ansible
远程机器1192.168.2.205Centos 7 64位httpd
远程机器2192.168.2.208Centos 7 64位httpd

创建ssh key授权

ansible是通过ssh方式管理远程服务器的,所以首先需要先打通ssh通道。我们在管理大批量服务器时,为了避免远程操作时重复输入密码,最好使用sshd服务的安全密钥验证方式。
通过ssh-keygen来管理密钥,即使在创建密钥时设置了密码,执行过ssh-add之后,会创建一个新的会话,以后的每次连接都无须输入密钥密码了。建议使用ssh key授权方式,并且不要设置密钥密码,这样可以更好地实现自动化。

ssh-keygen   # 创建公钥和私钥文件
ssh-copy-id 192.168.2.205   # 将公钥文件copy到远程主机上
ssh-copy-id 192.168.2.208
ssh-agent bash   # 通过ssh-agent来管理密钥
ssh-add ~/.ssh/id_rsa  # 将私钥交给ssh-agent管理,避免每次连接都需要输入密钥密码

下面介绍使用ansible批量修改用户密码的方法,因为在使用ansible修改用户密码的时候不能使用明文的方式,需要先加密,所以就需要使用一个方法对输入的明文的密码进行加密,下面就直接上干货。

方法一:
1、这个方法适用于更改多个固定的用户;playbook写法如下:(这个主机组名(hosts)自己记得更改成自己的)

[root@ad1 ~]# vim play1.yml

# cat play.yml
  ---
  - hosts: test
    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: 'admin#123' }
           - { name: 'test', chpass: 'yjun@123' }

1.1、执行playbook如下:
# ansible-playbook play.yml

方法二:
2、这个方法更改单用户比较方便,从外面使用-e参数传递变量到playbook中,playbook写法如下:

[root@ad1 ~]# vim play1.yml

  # cat  play.yml               
    ---
    - hosts: test
      gather_facts: false
      tasks:
      - name: Change password
        user: name={{ name1 }}  password={{ chpass | password_hash('sha512') }}  update_password=always

2 .1、执行playbook脚本,使用-e参数传递用户名和密码给剧本,其中test为用户名,admin#123就是要设置密码,执行如下:
# ansible-playbook play1.yml -e "name1=test chpass=admin#123"

文章参考链接:
https://blog.51cto.com/75368/2140404?source=dra
https://blog.51cto.com/andyxu/2147856

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值