写一个批量修改服务器密码的ansible命令
时间: 2024-05-13 18:17:34 浏览: 13
以下是一个批量修改服务器密码的ansible命令:
```bash
ansible all -i inventory.ini -m user -a "name=<username> password=<new_password> update_password=always" --become-user=<sudo_user> --become
```
其中,`inventory.ini` 是你的主机清单文件,`<username>` 是要更改密码的用户名,`<new_password>` 是新密码,`<sudo_user>` 是具有sudo权限的用户。这个命令将使用Ansible的`user`模块在所有主机上更改指定用户的密码,并使用`become`选项以sudo权限运行。请确保你已经在目标主机上设置了SSH密钥认证,以便使用Ansible进行无密码访问。
相关问题
ansible如何写一个批量修改密码的playbook
可以通过Ansible的User模块来批量修改密码。以下是一个示例playbook:
```yaml
- name: 修改密码
hosts: all
become: true
vars:
new_password: "新密码"
tasks:
- name: 修改密码
user:
name: "{{ item }}"
password: "{{ new_password | password_hash('sha512') }}"
with_items:
- 用户1
- 用户2
- 用户3
```
在这个playbook中,我们使用`user`模块来修改指定用户的密码。首先,我们定义了`new_password`变量来存储新密码。然后,在`tasks`部分中,我们使用`with_items`循环遍历要修改的用户列表,并使用`user`模块修改他们的密码。
注意,我们在密码字段中使用了`password_hash`过滤器,以确保密码以安全的方式存储。在这个示例中,我们使用SHA-512哈希算法来加密密码。
用ansible批量测试服务器用户名和密码
可以通过 Ansible 的 expect 模块来实现批量测试服务器用户名和密码。
首先,在 Ansible 主控机上安装 expect 模块:
```
sudo yum install expect -y
```
然后,在 Ansible 的 inventory 文件中添加需要测试的服务器 IP 地址和对应的用户名和密码,例如:
```
[test_servers]
192.168.1.101 ansible_user=root ansible_password=123456
192.168.1.102 ansible_user=root ansible_password=123456
```
接下来,编写 Ansible playbook 文件,使用 expect 模块测试用户名和密码是否正确,例如:
```
- name: Test server login credentials
hosts: test_servers
gather_facts: no
tasks:
- name: Test login credentials
expect:
command: echo "test"
responses:
Username: "{{ ansible_user }}"
Password: "{{ ansible_password }}"
```
在上面的 playbook 文件中,使用 expect 模块执行 echo 命令,并在 responses 中指定需要输入的用户名和密码。如果测试成功,将会输出 "test",否则会输出错误信息。
运行上述 playbook 文件,即可批量测试服务器用户名和密码是否正确。