1.什么是ansible?
ansible 是一款基于python 开发的一种自动化运维工具。可以用来:批量管理服务器,批量配置、分发文件,批量部署服务。避免重复操作。
2.快速上手ansible
想要使用ansible来批量管理服务器,首先要配置好ssh免密登录
2.1.免密登录--openssh服务
免密登录原理: 公钥相当于锁头,私钥相当于钥匙。将公钥发送给对方,对方就可以免密登录到自己服务器中
命令: ssh -keygen 来生成公钥和私钥
ssh -copy-id -i /root/.ssh/id_rsa.pub 用户@lxb 来发送公钥
2.2.利用shell脚本一键发送公钥配置免密登录
问题:
- ssh-keygen 创建密钥对,会询问你密钥对保存到哪里?是否要对私钥进行加密?
- 第一次连接对方主机时,会有一个主机认证
- 第一次连接对方主机时,要输入密码
解决:
- ssh -keygen 利用 -f 指定秘钥对保存到哪里,-p 指定密码为空
- ssh-copyid -o StrictHostKeyChecking=no 解决主机认证
- sshpass -p 来解决输入密码的问题
书写shell脚本:
#!/bin/bash
#vars
ips=$1
user=root
password="1"
#判断是否为root执行脚本
function check_root(){
if [ $UID -ne 0 ];then
echo "please use root exec"
exit 1
fi
}
#判断参数是否为空
function check_vars(){
if [ $# -eq 0 ];then
echo "please bash $0 ips"
exit 2
fi
}
function creat_keys(){
echo "正在创建密钥对******"
ssh-keygen -f "/root/.ssh/id_rsa" -p "" &>/dev/null
if [ $? -eq 0 ];then
echo "创建密钥对成功!"
else
echo "创建密钥对失败!"
exit 3
fi
}
#对ip进行循环
function send_key(){
for ip in $ips
do
#分发公钥
sshpass -p $password ssh-copy-id -o StrictHostKeyChecking=no $user@$ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip发送公钥发送成功!"
else
echo "$ip发送公钥发送失败!"
fi
done
}
#测试是否能进行免密登录
function test(){
for ip in $ips
do
ssh $ip hostname -I &>/dev/null
if [ $? -eq 0 ];then
echo "$ip可以进行免密登录!"
else
echo "$ip不可以进行免密登录!"
fi
done
}
main (){
check_root
check_vars
creat_keys
send_key
test
}
main2.3.安装ansible与配置
安装ansible:
yum install python3.xx && pip3 install ansible -i https://pypi.tuna.tsinghua.edu.cn/simple
ansible --version
修改配置文件:
vim /etc/ansible/ansible.cfg
[defaults]
# 关闭主机密钥检查(等效于 ssh -o StrictHostKeyChecking=no)
host_key_checking = False
# Ansible 日志存储路径
log_path = /var/log/ansible.log
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]
2.4.ansible基础模块使用
书写主机清单
vim /etc/ansible/hosts
[web]
10.0.0.201
[nfs]
10.0.0.202
[bak]
10.0.0.203ping模块
ansible -m all ping

command模块--用于基础的命令

文章评论
太棒了!