千台服务器部署采集器的时候用到了 Ansible,简单记录一下。
安装 Ansible
pip install ansible
yum install ansible –y
在 /etc/ansible/hosts 中添加被管理组 ,比如图中[web] 是组的名字。
执行ansible命令测试,通过hosts中定义的web组执行 ‘hostname’ 命令,-k是输入密码,-u是用户名。
ansible web -m command -a ‘hostname’ -k -u lixi
提示要把fingerprint加入到管理机器的 known_hosts中。
可以通过ssh连一下被管理的机器,生成fingerprint,或者让管理机批量连接一下。
批量创建连接的shell脚本。
#!/bin/ssh
rm -rf ~/.ssh/id_rsa*
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1
SSH_Pass=密码
SSH_User=用户
Key_Path=~/.ssh/id_rsa.pub
for ip in `cat /root/ansible/ip.txt`
do
sshpass -p $SSH_Pass ssh-copy-id -i $Key_Path "-o strictHostKeyChecking=no" $SSH_User@$ip
done
执行完成后测试,批量执行命令
ansible web -m command -a 'free -m' -u lixi
Ansible给所有web组成员创建目录
ansible web -m command -a 'mkdir /home/lixi/kuaishou' -u lixi
Ansible传输文件给所有web组成员
ansible web -m copy -a "src=/root/ansible/build.sh dest=/home/lixi/build.sh" -u lixi
Ansible执行脚本,所有web组执行build.sh脚本
ansible web -m shell -a "build.sh" -u lixi