Ansible简介及安装

Ansible是一种基于Python的IT自动化工具,采用无代理方式管理机器,通过openssh实现通信,确保安全性。其特点包括无需在远程主机安装客户端,丰富的模块库,以及易于二次开发。Ansible的基本架构包括连接插件、主机清单、模块、日志记录插件和剧本。安装过程中,要求控制节点有Python环境,托管节点需满足ssh和Python需求。剧本是Ansible执行任务的主要方式,允许一次性运行多个任务。
摘要由CSDN通过智能技术生成

1.Ansible是什么

Ansible是一种IT自动化工具。基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,它可以帮助我们批量配置系统,部署软件以及协调更高级的IT任务,例如连续部署或零停机滚动更新。
Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架
Ansible的主要目标是让工作变得简单和易操作,它同时也非常关注安全性和可靠性,传输过程是基于openssh来实现的,保证了传输的数据的安全性!大大降低安全风险!

2.Ansible的特点

  • Ansible采用无代理方式(agentless)管理机器,因为Ansible的通信是通过openssh来实现的,所以你无需考虑如何远程升级受管机器的代理程序!只要可以保证openssh可以正常通信即可!因为现在几乎所有的Linux平台都自带了openssh,Ansible在部署阶段无需考虑在远程机器上安装客户端软件!这样极大的减少了前期部署的工作!

  • Ansible有丰富的模块可以让你直接使用,当然在Ansible的社区也有很多优秀的开发者在贡献新的模块,所以你总会找到适合自己的模块,当然你也可以自己开发模块!

  • Ansible是使用python开发,所以关于Ansible的二次开发和模块开发成本相对较低

3.Ansible基本架构

(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

4.Ansible工作流程

在这里插入图片描述

5.Ansible基本概念

  • 控制节点

任何装有Ansible的机器都可以叫做控制节点。可以从任何控制节点调用/usr/bin/ansible执行一条任务,或执行/usr/bin/ansible-playbook命令读取剧本执行多个任务

  • 托管节点

使用Ansible管理的的网络设备和服务器,都可以叫做托管节点!托管节点有时也可以叫做“主机“,托管节点无需安装ansible

  • 清单( inventory )

托管节点的列表。Ansible在管理某个节点前,需要先将节点添加到清单文件中!清单文件有时也称为“主机清单文件”。清单文件可以为每个托管节点指定信息,例如IP地址、端口等信息!也可以把主机分成主机组管理!

  • 模块(Modules)

Ansibe执行代码的单位。Ansible自带了很多模块,每个模块都有特定的用途。我们可以通过任务调用单个模块,例如shell模块,可以调用shell命令在管理主机执行。
也可以在剧本中调用多个不同的模块!

  • 任务(Tasks)

Ansible执行的单位,可以使用临时命令一次执行一个任务

  • 剧本(Playbooks)

任务的有序列表文件,所以我们可以重复读取剧本文件重复运行剧本内的任务!这个是我们执行任务的主要方式

6.Ansible安装

环境要求

Ansible要求主机上有Python2.7或者python3.5以上的环境,在Red Hat,Debian,CentOS,macOS,任何BSD等系统上可以直接安装。但是控制节点不支持windonws平台!

安装过程

这里我们准备3台Centos系统,一台为Centos7用来安装Ansible扮演控制节点,另外两台可以使用Centos6扮演托管节点

1.在Centos上安装控制节点

  • 在Centos6版本上系统上Ansible安装包还未加入到yum的base源中,需要安装epel源之后才可以安装Ansible
yum -y install epel-release
yum -y install ansible
  • 在Centos7上,Ansible安装包已经被加入到了yum的base源中,可以直接使用yum安装
yum -y install ansible
  • 新版本安装包可以从官方获取

https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/
Ansible安装完毕后可以直接使用,无需启动

2.在托管节点需要注意的事项

  • 在托管节点上,您需要一种通信方式,通常是ssh,还需要有Python 2(2.6版或更高版本)或Python 3(3.5版或更高版本)
  • 这些环境在Centos6以上版本的系统上都是默认满足的!所以可以不用做任何配置!
  • 但是如果托管节点上启用了SElinux,那么需要安装libselinux-python,这个我们可以直接使用yum安装:
yum -y install libselinux-python

3.ssh无密码连接配置

ssh-keygen -t rsa 	//生成秘钥对
ssh-copy-id 托管节点用户@ip 	//拷贝公钥到托管节点

首次拷贝需要输入一次密码才可以将公钥复制过去,输入完毕后以后再连接就不需要输入密码了

4.编辑主机清单文件(Inventory)
我们需要将所有托管节点以主机名或ip的形式添加到主机清单文件中

安装后主机清单文件默认存放路径:/etc/ansible/hosts

#例如如下格式添加:
192.0.2.50
aserver.example.org
bserver.example.org

#也可以分组:
[webservers]  //中括号中的webservers就是定义的组名,下面3台服务器是这个组的成员主机
192.0.2.50
aserver.example.org
bserver.example.org

#我们也可以按如下格式添加主机
[webservers]
192.0.2.[50:100]  //添加ip192.0.2.50-192.0.2.100
web[a:f]server.example.org

组在调用时的通配表达方式

描述Pattern(s)
所有主机all(or *)
一台主机host1
多台主机host1:host2(or host1,host2)
一组webservers
多组webservers:dbservers
排除组webservers:!atlanta
组的交集webservers:&staging

5.测试

  • ansible执行一条任务的语法格式:

ansible 主机/主机组 -m 模块 -a ‘模块的参数‘

  • 我们使用ping模块ping清单文件中所有节点,查看是否可达

ansible all -m ping
有如下返回说明节点都可达,all代表所有主机

[root@localhost ~]# ansible all -m ping
192.168.174.162 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.174.161 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

我们也可以指定组或主机操作

[root@localhost ~]# ansible webservers -m ping
192.168.174.162 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
192.168.174.161 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

7.Ansible的配置文件

Ansible中的某些设置可以通过配置文件(ansible.cfg)进行调整,对于大多数环境默认配置就足够使用了,但是也可能会有一些特殊的原因我们需要修改这些配置参数!

  • 配置文件路径

在Centos上yum安装的ansible,默认的配置文件路径如下:
配置文件:/etc/ansible/ansible.cfg

8.临时命令简介(ad-hoc commands)

Ansible ad-hoc命令使用/usr/bin/ansible命令行工具对一个托管节点或多个托管节点一次执行一个任务!临时命令既快速又简单,但不可重复使用!

  • 为什么要用临时命令(ad-hoc commands)

临时命令非常适合您很少重复执行的任务。例如,如果您想在圣诞节假期关闭实验室中所有机器的电源,则可以在Ansible中执行快速一线操作而无需编写剧本。临时命令如下所示:

ansible [pattern] -m [module] -a "[module options]"

详细请看ansible常用模块详解
临时任务可用于重新引导服务器,复制文件,管理程序包和用户等。您可以在临时任务中使用任何Ansible模块。

9.Playbook

Playbook是Ansible的配置,部署和编排语言。与临时任务(ad-hoc)执行模式相比,剧本是使用ansible的完全不同的方式,并且功能特别强大。
详细请看Ansible Playbook详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值