了解 Ansible ——:

1、ansible是目前企业用的最多的自动化运维工具之一,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

2、ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

一张表带你了解ansible的使用率:

ansible和python版本的对应关系 ansible python_Ansible


官网对ansible的定义就是:Ansible is a radically simple IT automation engine(Ansible是一款极其简单的IT自动化工具)

所以,ansible就是,简单容易上手,但是功能丰富而强大。

优点:

  • 基于 python 开发的,而现在python又是运维工程师必不可少的技能之一,支持API及自定义模块;
  • 丰富的内置模块,可以用 ansible-doc -l 去查看可用的模块;
  • 无客户端,即无需在被控制主机上配置 client/agents,主要是通过ssh来和远程主机通信;
  • 批量部署,这个是自动化运维必不可少的;
  • 通过 Playbooks 来定制强大的配置、状态管理;
  • 提供了一个功能强大、操作性强的 Web 管理界面和 rest api 接口 —— AWX 平台

缺点:

  • ansible 是一个相对较完美的自动运维工具,要说缺点就是,对windows被管节点需要加强、执行效率相对较低。

工作原理:

一台管理主机,根据定义的 Inventory host 清单或者 playbook,来调用特定的模块通过 openssh 协议在远程主机上执行相关命令并返回结果。

ansible和python版本的对应关系 ansible python_ansible的安装_02


以下是 ansible 官网的工作流程图:

ansible和python版本的对应关系 ansible python_ansible的安装_03

  • ansible inventory:管理的主机清单;
  • ansible playbook:剧本,即编排任务,自定义自己的任务列表,然后交给 ansible 按照定义的顺序依次执行;
  • modules ansible:核心模块的集合;
  • plugins:作为模块的补充,定义额外的插件;
  • api:供第三方调用,作为后续的运维平台开发作用很大;
  • ansible:是一个命令,十分重要,大部分的自动化管理都是用 ansible 这个命令来实现的。

总之,ansible是一个无需安装客户端的自动化管理工具,它包括了很多的模块来帮助我们来处理工作,强大的playbook可以帮助我们实现自动部署 LNMP等环境。

一张表带你了解三大主流自动运维工具(ansible、saltstack、puppet)的优缺点 ——:

ansible和python版本的对应关系 ansible python_运维工具_04

部署实例 ——:

环境准备:
只需要在管理主机上面安装 ansible 即可。

角色

组名

管理主机(192.168.220.131)

被管理主机01(192.168.220.140)

aaa

被管理主机02(192.168.220.136)

bbb

//首先安装 :
yum install -y epel-release  ##首先安装 epel源
yum install ansible -y    

//查看版本:
[root@localhost ~]# ansible --version

//主要配置文件:
[root@localhost ~]# tree /etc/ansible/    ##树状结构展示文件夹
/etc/ansible/
├── ansible.cfg     ##ansible的配置文件
├── hosts           ##ansible的主仓库,用于存储需要管理的远程主机的相关信息
└── roles           ##角色

1 directory, 2 files


---接下来是在管理端上的部署:
[root@localhost ~]# cd /etc/ansible
[root@localhost ansible]# vim hosts 
添加组名和对应的ip地址:
[aaa]
192.168.220.140
[bbb]
192.168.220.136

ansible和python版本的对应关系 ansible python_配置文件_05

//配置密钥对验证:
[root@localhost ansible]# ssh-keygen -t rsa
[root@localhost ansible]# ssh-copy-id root@192.168.220.140
[root@localhost ansible]# ssh-copy-id root@192.168.220.136

ansible和python版本的对应关系 ansible python_配置文件_06


做了密钥对验证之后,我们的管理端,就可以控制两台被管理端的两台主机了,接下来做一些简单的操作:

//查看第一台被管理的主机容器:
命令格式:ansible [主机] [-m 模块] [-a 命令]

[root@localhost ansible]# ansible aaa -m command -a 'date'
192.168.220.140 | CHANGED | rc=0 >>
Mon Feb 10 14:29:25 CST 2020

[root@localhost ansible]# ansible bbb -m command -a 'date'
192.168.220.136 | CHANGED | rc=0 >>
Mon Feb 10 14:32:30 CST 2020

ansible和python版本的对应关系 ansible python_运维工具_07