ansible批量修改root为不规则密码
首先需要给s-linuxad 的sudo配置文件中添加
s-linuxad ALL=(ALL) NOPASSWD:ALL
如果没有添加,确认服务器的/etc/sudoers的配置文件中包含以上配置
1.1本地目录建立一个脚本cc.sh
#!/bin/bash
openssl rand -base64 8 > ~/openssl
PASS=`cat ~/.openssl`
echo $PASS |sudo passwd --stdin root
1.1.1配置ansible 的配置文件/etc/ansible/hosts
[s-linuxad@T-Ansible-v-szzb ansible]$ pwd
/etc/ansible
[s-linuxad@T-Ansible-v-szzb ansible]$ cat hosts
[nginx]
10.0.40.156
10.0.40.143
10.0.40.235
10.0.40.61
10.0.40.87
10.0.40.95
10.0.40.224
1.2 查看脚本有没有执行成功.openssl 文件内容有没有生成
推送脚本到各个服务器中执行:
ansible 'nginx' -m script -a '/home/s-linuxad/Carlton/cc.sh'
上述命令中nginx 为ansible的模块,可以自己命名的,比如命名为test 都可以,如果命令为test,那么命令将会变更为
ansible 'test' -m script -a '/home/s-linuxad/Carlton/cc.sh'
程序运行的结果会有成功(SUCCESS)和不成功的,如果是成功的则可以直接修改,如果是不成功的,则需要进一步处理
10.0.2.198 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
"unreachable": true
}
10.0.2.196 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.0.2.195 | SUCCESS => {
"changed": false,
"ping": "pong"
}
查看生成的文件是密码并可以验证密码
ansible nginx -m shell -a "cat ~/.openssl"
可以将以上命令运行的结果追加到另一个文件夹中
ansible nginx -m shell -a "cat ~/.openssl" >/tmp/file.txt
1.3.编辑yml 语句提取文件回来本机
[s-linuxad@T-Ansible-v-szzb ~]$ cat fetch-file.yml
---
- hosts: '{{myhosts}}'
remote_user: s-linuxad
tasks:
- name: fetch file
fetch:
src: ~/.openssl
dest: ~/fetch/openssl-{{ inventory_hostname }}
flat: yes
yml 语句的格式:
- hosts: all
remote_user: root
tasks:
- name: yum install screen
shell: yum install screen –y
文件解析:-hosts:all指定对所有hosts生效,remote_user表示远程root,tasks表示需要执行的任务;name显示的名称,shell后面接:需要在远程客户端执行的命令。可以写多个命令,以;分号隔开即可,例如 shell: yum install screen -y ;mkdir /tmp/`date +%Y%m%d`
1.4 运行命令
ansible-playbook fetch-file.yml -e "myhosts=nginx"
批量回收文件密码到家目录下的fetch 目录中
1.5 批量删除其它服务器的密码文件.openssl
ansible nginx -m shell -a "rm -f ~/.openssl"
2. 批量修改用户账户的密码
批量修改的前提必须是无密钥建立成功
[s-linuxad@T-Ansible-v-szzb Carlton]$ cat s-linuxad.sh
#!/bin/bash
PASS=123456
#SUBPASS=`echo ${PASS:0:16}`
echo $PASS |sudo passwd --stdin s-linuxad
[s-linuxad@T-Ansible-v-szzb Carlton]$ cat nagios.sh
#!/bin/bash
PASS=12345676
#SUBPASS=`echo ${PASS:0:16}`
echo $PASS |sudo passwd --stdin nagios
[s-linuxad@T-Ansible-v-szzb Carlton]$ ansible 'nginx' -m script -a '/home/s-linuxad/Carlton/nagios.sh'