Ansible批量自动化管理工具

批量管理服务器的工具,无需部署代理,通过ssh进行管理,是python写的

ansible 常用模块 :

(1)shell命令模块执行命令

(2)copy模块批量下发文件或文件夹

(3)script模块批量运行脚本 

Python3与ansible的安装

使用源码安装Python3.5

#安装支持包
yum -y install lrzsz vim net-tools gcc gcc-c++ ncurses ncurses-devel unzip zlib-devel zlib openssl-devel openssl
#源码编译Python3.5
tar xf Python-3.5.2.tgz -C /usr/src/
cd /usr/src/Python-3.5.2/
./configure --prefix=/usr/local/python/;make ;make install
ln -s /usr/local/python/bin/python3 /usr/bin/python3
python3 -V
Python 3.5.2

使用pip3安装ansible

/usr/local/python/bin/pip3 install ansible
ln -s /usr/local/python/bin/ansible /usr/local/bin/
ansible --version
ansible 2.6.3
  config file = None
  configured module search path = [‘/root/.ansible/plugins/modules‘, ‘/usr/share/ansible/plugins/modules‘]
  ansible python module location = /usr/local/python/lib/python3.5/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.5.2 (default, Sep  2 2018, 22:56:37) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

使用公私钥实现SSH无密码登陆

ansible是无代理的,主要是借用ssh来批量管理服务器.ssh默认登陆是需要密码的,所以管理起来比较麻烦.SSH无密码登陆实现以后,使用ansible批量管理服务器就变得简单了。


ansible

192.168.50.16
主机1 192.168.50.168
主机2 192.168.50.176
#生成密钥对
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
#分发密钥
yum -y install sshpass      #安装sshpass
sshpass -p 123456 ssh-copy-id -i ~/.ssh/id_rsa.pub "-o StrictHostKeyChecking=no" 192.168.50.168 免密码       密码      上传公钥                              免交互                    去往的主机       
#进行免密码登陆测试
ssh 192.168.50.176
hostname -I
192.168.50.176 

ansible的简单配置和模块

ansible的配置文件

通过PIP安装的ansible是没有配置文件的。我们需要创建一个

mkdir -p /etc/ansible
vim /etc/ansible/hosts       #ansible主机管理配置文件
[zhujizu]                #被管理的主机组名称
webA ansible_ssh_host=192.168.50.168 ansible_ssh_port=22 ansible_ssh_user=root                 #第一台主机
webB ansible_ssh_host=192.168.50.176 ansible_ssh_port=22 ansible_ssh_user=root  ansible_ssh_pass=123456   #第二台主机 主机名        定义主机IP                ssh的默认端口号            以什么身份管理     如果没有上传公钥需要指定连接密码

ansible语法:ansible -i /etc/ansible/hosts 主机或主机组 -m 指定模块 -a 命令

        不用-i指定配置文件默认为在/etc/ansible/hosts

        主机组,主机,all代表所有

进行命令测试:

ansible zhujizu -m ping    #ping整个组
zhuji2 | SUCCESS => {    #连接成功   
    "changed": false,    
    "ping": "pong"
}
zhuji1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
ansible zhuji1 -m ping     #只ping 主机1
zhuji1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

ansible all -m ping        #ping 配置文件的所有
zhuji2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
zhuji1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

ansible的三个命令模块

ansible模块command(不支持管道,不建议使用)   #需要python支持,一般都有python

ansible模块shell(支持管道,支持重定向,常用)    #需要python支持,一般都有python

ansible模块raw,最原始的方式运行命令(不依赖python,仅通过ssh实现)

ansible all -m shell -a "echo hehe >>/root/wk"    #在所有主机执行输出hehe并重定向到wk文件
zhuji1 | SUCCESS | rc=0 >>

zhuji2 | SUCCESS | rc=0 >>

cat /root/wk           #查看wk文件
hehe

ansible的copy模块批量下发文件或文件夹

copy模块概述

copy模块的参数,ansible 主机组 -m 模块 -a 命令

  • src:指定源文件或目录
  • dest:指定目标服务器的文件或目录
  • backup:是否要备份
  • owner:拷贝到目标服务器后,文件或目录的所属用户
  • group:拷贝到目标服务器后,文件或目录的所属群组
  • mode:文件或目录的权限

所有被管理端节点必须安装libselinux-python包

yum -y install libselinux-python

copy模块拷贝文件

ansible all -m copy -a "src=/root/server/txt dest=/root/server/"#                       源文件               目标目录(如果目标没有目录可自动创建)如果目标路径里有与我拷贝的文件同名文件的话,会直接覆盖目标路径下的文件

copy模块拷贝目录下所有文件

ansible all -m copy -a "src=/root/server/ dest=/root/server/"              源目录下所有         目标目录

copy模块自动备份

backup=yes ===>意思是,如果目标路径下,有与我同名但不同内容的文件时,在覆盖前,对目标文件先进行备份。

ansible all -m copy -a "src=/root/server/ dest=/root/server/ backup=yes"

copy模块指定用户和属主

ansible all -m copy -a "src=/service/scripts/ dest=/service/scripts/ owner=nobody group=nobody mode=0600"                                          属主          属组          权限

ansible的script模块批量运行脚本

ansible的script模块能够实现远程服务器批量运行本地的shell脚本。

#远程批量分发并自动部署nginx
#所有被管理端都能使用yum
pwd
/root/server

ls |xargs -n1
nginx-1.14.0.tar.gz   #nginx源码包
nginx-anzhuang.sh    #自动安装nginx脚本

vim /root/server/nginx-anzhuang.sh      #安装nginx脚本
#!/bin/sh
#nginx install shell scripts
test -d /media/cdrom || mkdir -p /media/cdrom
mount /dev/sr0 /media/cdrom &>/dev/null
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl  openssl-devel &>/dev/null
test -d /service/scripts || exit 3
cd /service/scripts/
tar xf nginx-1.14.0.tar.gz -C /usr/src/
cd /usr/src/nginx-1.14.0/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module &>/dev/null
make &>/dev/null
make install &>/dev/null
exit 0

vim /root/fenfa.sh        #批量分发脚本
#!/bin/sh
#批量分发脚本
Group=$1
ansible $Group -m copy -a "src=/root/server/ dest=/service/scripts/"
ansible $Group -m script -a "/usr/bin/sh /service/scripts/nginx-anzhuang.sh"
~                        

sh /root/fenfa.sh all     #激活脚本

原文地址:https://www.cnblogs.com/ywrj/p/9577833.html

时间: 2024-10-08 08:41:55

Ansible批量自动化管理工具的相关文章

Ansible批量自动化管理工具入门

一.虚拟机版本 1.需要利用7.5版本虚拟机 2.7.5版注意事项: [2.1].网卡名叫ens32同样配置文件也是ens32 [2.2].命令:systemctl 统一管理命令, 例,systemctl stop iptables.service 关闭防火墙 [2.3].设置开机自启动防火墙:systemctl enable firewalld [2.4].设置开机关闭防火墙(必须关闭) :systemctl disable firewalld [2.5].必 须 关 闭 :systemctl

自动化管理工具puppet

Linux之puppet puppet简介 puppet是一套IT基础设施自动化管理工具,可以管理其整个生命周期,其官方网站:www.puppetlabs.org.其作者Luke Kanies成立了puppetLabs,于2005年发布0.2版本.puppet基于ruby语言研发,puppet有声明性.基于模型的配置语言,其也有自己的配置编程言. puppet的优势 基于master/agent的认证机制 不依赖于客户端系统的管理权限 可实现配置自动推送给客户端 puppet的版本 0.2 0.

Python学习笔记——进阶篇【第八周】———FTP断点续传作业&批量主机管理工具

主机管理之paramiko模块学习 http://www.cnblogs.com/wupeiqi/articles/5095821.html 作业1:用socketserver继续完善FTP作业 作业2:开发一个批量主机管理工具 需求: 可以对机器进行分组 可以对指定的一组或多组机器执行批量命令,分发文件(发送\接收) 纪录操作日志 作业参考链接http://www.cnblogs.com/alex3714/articles/5227251.html

TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具

怀着鸡动的心情跟大家介绍一款国产开源运维软件TriAquae,轻松帮你搞定大部分运维工作!TriAquae 是一款由国产的基于Python开发的开源批量部署管理工具,可以允许用户通过一台控制端管理上千台远程Linux服务器,开发者根据多年运维经验以及运维工程师日常工作的需求开发了很多实用的功能,该工具非常实用,并且使用简单,分分钟即可完成安装并开始利用TriAquae管理你的网络,此软件还在不断的开发和更新,目前已实现以下功能: •        支持WEB界面,所有以以下功能均以在WEB界面上

云服务器批量连接管理工具

一款可以批量连接管理云服务器的工具! IIS7远程桌面管理工具功能简介: 1.批量管理WIN系列服务器,VPS,电脑. 2.批量导入服务器的IP,端口,账号和密码 3.批量打开N个服务器的远程桌面 4.远程桌面后,远程窗口右上角会出现 服务器备注的信息,如郑州xxx号服务器 5.远程桌面后,不影响任务栏显示.可以及时看其他窗口. 6.自定义远程桌面窗口分辨率 7.定时监测服务器是否正常 8.服务器到期提醒 9.可选择是否加载本地硬盘.硬盘映射 10.可选择是否加载服务器的声音,远程声卡读取 11

运维自动化之 - ansible 批量主机管理

2000 - 2016 年,维护的小型机.linux刚开始的2台增加到上千台,手工检查.日常版本升级需要管理太多设备,必须通过运维自动化实现 特别是版本升级,需要到同类机器部署代码.起停设备,必须在一台主控机上完成代码分发.远程服务起停.服务验证验证 2016年开始使用 pssh ,后改用 ansible ,ansible 配置如下 一.配置ssh免密码登录 #cd /root/.ssh 免交互生成密钥 #echo -e "\n" |ssh-keygen -t rsa -N "

Chocolatey 简介(软件自动化管理工具)

一.Chocolatey 管理Windows软件的明智方法 1.建立在技术的无人值守安装和PowerShell.建立在技术的无人值守安装和PowerShell. 2.轻松管理Windows软件的所有方面(安装.配置.升级.卸载).Chocolatey是最可靠的,软件是包含在包中,但也可以很容易的下载资源. 3.利用PowerShell提供自动化软件管理指令和Chocolatey的内置模块将复杂的任务分解成一系列的函数调用! 4.官网地址&下载地址:https://chocolatey.org/

一款批量linux管理工具batchshell

BatchShell是什么? BatchShell是一款基于SSH2的批量文件传输及命令执行工具,它可以同时传输文件到多台远程服务器以及同时对多台远程服务器执行命令.BatchShell基于原生的shell命令或python命令,无需二次学习成本,上手即用.如果需要随时随地发现.操作很多台Linux,又不想要做太多的配置,那这应该就是你想要的工具. 具备以下主要功能:      1. 多服务器批量文件传送.接收(一键完成)      2. 多服务器远程命令交互(一键完成)      3. 快速远

[转帖]Ansible批量远程管理Windows主机(部署与配置)

2018-09-12 12:04:42 https://blog.51cto.com/7424593/2174156 一.测试环境介绍 Ansible管理主机: 系统:   CentOS6.8 IP Addr: 172.16.10.22 Linux管理服务器需安装pip.pywinrm插件 Windows客户端主机: 系统:   Server2008R2 SP1 IP Addr: 172.16.10.23 Windows机器需要安装或升级powershell4.0以上版本,Server2008R