使用自动化运维工具Ansible集中化管理服务器

Ansible概述

Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。Ansible基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作

官方网站:https://www.ansible.com/

Ansible小故事:

2015年10月,红帽(Red Hat)宣布收购软件开发公司 Ansible,消息称此次收购耗资逾 1亿美元,也有消息称接近 1.5亿美元。Ansible 成立于 2013年,总部设在北卡罗来纳州达勒姆,联合创始人 aïd Ziouani 和高级副总裁 Todd Barr 都是红帽的老员工。Ansible 旗下的开源软件 Ansible 十分流行。这家公司还提供 Tower 软件和咨询服务,这款软件能使开发者轻松地建立和管理规模化应用程序的 IT 基础架构。

Ansible特点:
  1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

  2、默认使用SSH协议对设备进行管理;

  3、主从集中化管理;

  4、配置简单、功能强大、扩展性强;

  5、支持API及自定义模块,可通过Python轻松扩展;

  6、通过Playbooks来定制强大的配置、状态管理

  7、对云计算平台、大数据都有很好的支持;

Ansible 工作机制

  Ansible 在管理节点将 Ansible 模块通过 SSH 协议推送到被管理端执行,执行完之后自动删除,可以使用 SVN 等来管理自定义模块及编排

由上面的图可以看到 Ansible 的组成由 5 个部分组成:

  Ansible : ansible核心

  Modules : 包括 Ansible 自带的核心模块及自定义模块

  Plugins : 完成模块功能的补充,包括连接插件、邮件插件等

  Playbooks : 剧本;定义 Ansible 多任务配置文件,由Ansible 自动执行

  Inventory : 定义 Ansible 管理主机的清单 [ˈɪnvəntri] 清单

接下来分享一下实际使用Ansible管理多台节点吧,Let's do it

  先介绍下环境:3台主机都是CentOS7系统的,一台机器做主节点,也就是服务端,其他做从节点,也就是客户端

  ansible 服务端 192.168.1.63

  ansible节点1: 192.168.1.63

  ansible节点2: 192.168.1.64

  ansible节点2: 192.168.1.65

在主节点上安装ansible,安装ansible之前,先安装红帽中的EPEL软件仓库
  yum install epel-release -y

然后使用yum安装ansible

  yum install ansible -y

安装完成后,检查ansible版本:

  ansible --version

安装完成后我们了解一下ansible的语法使用:
  anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]

ansible详细参数:

  -v,–verbose # 详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)

  -i PATH, -inventory=PATH # 指定 host 文件的路径,默认是在 /etc/ansible/hosts

  inventory [ˈɪnvəntri] 库存

  -f NUM,-forks=NUM # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。

  -m NAME,-module-name=NAME # 指定使用的 module 名称,默认使用 command模块

  -a,MODULE_ARGS #指定 module 模块的参数

  -k,-ask-pass #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证

  -sudo # 指定使用 sudo 获得 root 权限

  -K,-ask-sudo-pass #提示输入 sudo 密码,与 -sudo 一起使用

  -u USERNAME,-user=USERNAME # 指定移动端的执行用户

  -C,–check #测试此命令执行会改变什么内容,不会真正的去执行

ansible-doc详细参数:

  ansible-doc -l #列出所有的模块列表

  ansible-doc -s 模块名 #查看指定模块的参数 -s, --snippet # [ˈsnɪpɪt] 片断

安装完毕及介绍完语法后我们来测试下ansible是否可以正常使用:

定义主机清单

1、基于端口,用户,密码定义主机清单

ansible基于ssh连接-i (inventory)参数后指定的远程主机时,也可以写端口,用户,密码。

格式:

ansible_ssh_port:指定ssh端口 ansible_ssh_user:指定 ssh 用户 ansible_ssh_pass:指定 ssh 用户登录是认证密码(明文密码不安全) ansible_sudo_pass:指明 sudo 时候的密码
例:

[root@localhost63 ~]# vim /etc/ansible/hosts #文件 /etc/ansible/hosts 维护着Ansible中服务器的清单。在文件最后追加以下内容
[web-servers]  # 主机组名

192.168.1.64 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
wq保存退出

简单测试下主机的连通性

[root@localhost63 ~]# ansible -i /etc/ansible/hosts web-servers -m ping

-i # 指定 host 文件的路径,默认是在 /etc/ansible/hosts

-m # 指定使用的ping模块

出现上图代表通信成功

但是这样明文密码不太安全,我们来让各节点之间通过密钥进行通信传输

在Ansible服务端生成密钥,并且复制公钥到节点中。

root@localhost63 ~]#ssh-keygen #一路回车

# ls /root/.ssh/ 生成公钥和私钥

使用ssh-copy-id命令来复制Ansible公钥到节点:63和64

  [root@localhost63 ~]# ssh-copy-id root@主节点ip

  [root@63 ~]# ssh-copy-id root@从节点ip

  [root@63 ~]# ssh 192.168.1.64

  [root@64 ~]# exit

[root@63 ~]# vim /etc/ansible/hosts #在文件的最后添加以下内容

  删除之前在最后添加的两行主机清单:

  [web-servers]

  192.168.1.64 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456

替换为:

  192.168.1.63 主节点ip

  192.168.1.64 从节点ip

  # 可以使用192.168.1.64..99的方式批量执行

  保存退出

在Ansible服务端运行命令

ping模块检查网络连通性

  command模块执行shell命令,command:作为ansible的默认模块,可以运行远程权限范围内的所有shell命令

例1:使用ping检查‘web-servers’(模块名)或者ansible节点的连通性。

  [root@63 ~]# ansible -i /etc/ansible/hosts 'web-servers' -m ping

例3:检查节点的内核版本

  [root@63 ~]# ansible -m command -a "uname -r" 'web-servers'

到这里即可实现对多个主机节点的操作了

CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机的更多相关文章

  1. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  2. 自动化运维工具Ansible介绍

    一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...

  3. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  4. 自动化运维工具-Ansible基础

    目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...

  5. 自动化运维工具-Ansible之7-roles

    自动化运维工具-Ansible之7-roles 目录 自动化运维工具-Ansible之7-roles Ansible Roles基本概述 Ansible Roles目录结构 Ansible Roles ...

  6. 自动化运维工具-Ansible之6-Jinja2模板

    自动化运维工具-Ansible之6-Jinja2模板 目录 自动化运维工具-Ansible之6-Jinja2模板 Ansible Jinja2模板概述 Ansible Jinja2模板使用 Ansib ...

  7. 自动化运维工具-Ansible之5-流程控制

    自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...

  8. 自动化运维工具-Ansible之3-playbook

    自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...

  9. 自动化运维工具-Ansible之4-变量

    自动化运维工具-Ansible之4-变量 目录 自动化运维工具-Ansible之4-变量 变量概述 变量的定义和调用 变量优先级测试 变量优先级测试二 变量注册 facts缓存 变量概述 ​ 变量提供 ...

随机推荐

  1. C#中的 隐式与显式接口实现

    在C#中,正常情况下使用接口的实现使用的是 隐式接口实现. public interface IParent1 { void Medthod(); } public class Child : IPa ...

  2. SQL反模式学习笔记2 乱穿马路

    程序员通常使用逗号分隔的列表来避免在多对多的关系中创建交叉表, 将这种设计方式定义为一种反模式,称为“乱穿马路”. 目标:  存储多属性值,即多对一 反模式:将多个值以格式化的逗号分隔存储在一个字段中 ...

  3. org.springframework.web.context.ContextLoaderListener 解决方案

    tomcat启动项目报错,没找到这个类 我直接下了一个spring-web-4.3.8.RELEASE.jar 的 jar 包方到web-inf目录下.问题解决. 补充: 如果在检查了项目 jar 环 ...

  4. 洛谷 p5020 货币系统 题解

    传送门 一个手动枚举能过一半点而且基本靠数学的题目(然而我考试的时候只有25分) 读清题目后发现就是凑数嘛,.... 对啊,就是凑数,怎么凑是重点啊.. 于是就绝望了一小时手动枚举n从1到5的情况 吐 ...

  5. *CTF 2019 quicksort、babyshell、upxofcpp

    这次参加比赛总共出了三道,有两道队友都先交了,还是tcl,heap_master卡了差不多一天没解决....还是记录一下出的题目吧 quicksort 题目大体流程就是输入要输入的数字数量,然后输入数 ...

  6. vue中使用postMessage进行跨越传值

    想在“当前位置”获取子页面的title属性,但是main页面和子页面在不同的端口上,直接获取会出现: “Blocked a frame with origin from accessing a cro ...

  7. 权限的控制 shiro的使用

    ******shiro的使用 三大核心组件 Subject:即当前用户,在权限管理的应用程序里往往需要知道谁能够操作什么,谁拥有操作该程序的权利,shiro中则需要通过Subject来提供基础的当前用 ...

  8. 微服务框架——SpringCloud

    1.SpringCloud微服务框架 a.概念:SpringCloud是基于SpringBoot的微服务框架 b.五大神兽:Eureka(服务发现).Ribbon(客服端负载均衡).Hystrix(断 ...

  9. (二)stm32f103~~GPIO基本操作二(按键)

    GPIO基本配置之按键输入操作(通过按键控制小灯的翻转) KEY0 对用端口PE4,KEY1 对用端口PE3,这两个按键是一段接地,另一端接单片机.KEYWKUP 对用端口PA0,这个按键是一段接高电 ...

  10. jsonp 请求

    $.ajax()方法详解 $.ajax() 方法详解:来源 http://www.cnblogs.com/tylerdonet/p/3520862.html jsonp 调用 无法进入 success ...