云鸽飞月

  • 登录
  1. 首页
  2. ansible
  3. 正文

初识ansible

2026年3月10日 20点热度 1人点赞 1条评论

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
}

main

2.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.203

ping模块

ansible -m all ping

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

标签: ansible
最后更新:2026年3月10日

voelxb

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • 韩信

    太棒了!

    2026年3月10日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    COPYRIGHT © 2026 云鸽飞月. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang