ansible是一个自动化运维的工具,是基于模块进行工作的,实现了批量运行命令,还可以结合shell脚本部署应用。

准备工作

创建密钥

使用免交互的形式创建密钥 ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""

-f 需要指定私钥存放路径
-N 进行私钥文件密码设定

分发公钥到内网主机

使用免交互的方式进行分发
1、首先解决连接时需要确认的问题,可以使用参数-o StrictHostKeyChecking=no
2、连接时候需要输入密码,可以安装sshpass软件,来连接指定密码yum install sshpass
3、最终的命令,实现面交互,免密码。sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.*"

批量分发秘钥

简单的两个shell脚本 1、shell脚本批量分发

# 编写脚本
[root@manager01 scripts]# vim distribute.sh

#! /bin/bash
rm /root/.ssh/id_dsa
ssh-keygen -t dsa -f /root/.ssh/id_dsa -N ""

for ip in 56 57
do
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 172.16.1.$ip"
done

#测试
[root@manager01 scripts]# sh distribute.sh

2、批量测试脚本

[root@manager01 scripts]# vim test.sh

#! /bin/bash
if [ $# -ne 1 ]
then
    echo "请输入参数"
    exit 1
fi

for ip in 56 57
do
    echo "====info 172.16.1.$ip===="
    ssh 172.16.1.$ip $1
    echo ""
done

# 测试
[root@manager01 scripts]# sh fenfatest.sh hostname
====info 172.16.1.56====
web01

====info 172.16.1.57====
web02

[root@manage01 scripts]#

以上工作做完就可以实现通过ansible来进行多主机的管理

ansible基本应用

安装

yum install ansible 管理主机安装
yum install -y libselinux-python (可选)被管理主机安装

配置文件

/etc/ansible/hosts

# 添加多台主机,web01是一个主机组信息,命名自定义。可以有多个主机组。
[root@manage01 ~]#
[web01]
176.16.1.56
176.16.1.57

asnible语法格式

ansinble 主机ip/主机组信息(表示同时对多个主机操作) -m 模块名称 -a 相关参数

command命令模块

参数:chdir –执行命令前先切换目录

ansible 172.16.1.56 -m command -a "chdir=/data cat test.txt
输出>>
172.16.1.56 | SUCCESS | rc=0 >>
hiwangqi

参数:created –判断文件是否存在,如果存在,后面命令执行

ansible 172.16.1.56 -m command -a "creates=/data/test.txt hostname"
输出>>
172.16.1.56 | SUCCESS | rc=0 >>
skipped, since /data/test.txt exists

# test.txt文件存在 所以不会执行hostname命令

参数:removes –判断一个文件是否存在,如果不存在,后面命令不执行

ansible 172.16.1.56 -m command -a "removes=/data/test.txt  hostname"
输出>>
172.16.1.56 | SUCCESS | rc=0 >>
nfs01

# 文件存在,所以执行hostname命令,输出主机名

shell模块

说明:shell模块可以实现command模块所有功能,而且可以支持识别特殊符号< > | 参数和command模块大致相同