Ansible基础

本文主要介绍了一下Ansible,并详细讲解了Ansible的环境配置及搭建过程,最后用两个简单的命令完成了初步的测试。

简介

Ansible是新出现的,简单的、轻量级自动化运维工具,基于python开发,集成了多种运维工具的优秀特点,可以实现批量系统配置、批量程序部署、批量运行命令等功能。Ansible是基于模块工作的,其本身没有批量部署的能力,真正具有批量部署的是Ansible模块,Ansible只提供一种框架。说白了,Ansible就是在一台或几台服务器上执行一系列命令而已。

Ansible主要由两大模块构成:Paramiko和PyYAML。Paramiko是一个纯Python实现的ssh协议库,因此,Ansible不需要再远程主机上安装client或agents,因为它是基于ssh来和远程主机通信的。

Ansible框架主要包括

1、连接插件connection plugins:负责和被监测端通信。

2、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。

3、各种核心模块、command模块、自定义模块。

4、借助插件完成记录日志和邮件等功能。

5、playbook:剧本执行多个任务时,非必需可以让节点一次运行多个任务。


Ansible和Saltstack比较

Ansible无需在被控主机部署任何代理程序,默认直接通过ssh通道进行远程命令执行和下发配置。这两者都具有功能强大、系统管理灵活等特点。两者都提供丰富的模板和API,对云计算、大数据都有很好的支持。


Ansible架构和工作机制

Ansible架构图

Ansible架构图

Ansible:Ansible核心程序。
Host Lnventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
Core Modules:核心模块,来完成管理任务。先调用此中的模块,再指定Host Lnventory中的主机来完成管理任务。
Custom Modules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
Connection Plugins:连接插件,做通信使用。

Ansible工作机制

Ansible工作机制
Ansible在管理节点(Control Node)将Ansible模块通过SSH协议等推送到管理端执行,执行完成后自动删除。


Ansible的执行过程

ansible执行过程


Ansible配置文件

/etc/ansible/ansible.cfg :主配置文件。

/etc/ansible/hosts:定义管理的主机的文件。

遵循INI风格,中括号中的是
组名,一个主机可以属于多个不同的组。


Ansible环境配置与安装

Ansible默认依赖于epel。epel是yum的一个软件源,其提供了许多基本源中没有的软件。如果要使用yum来安装Ansible的话,需要先安装epel-relase
,注意要和系统的版本匹配!

源码安装Ansible

安装前的准备

建议python升级到2.6以上,否则会导致某些功能不能使用。

python升级参考文章:升级Python到2.7版本

在安装之前准备如下的安装包(这里我以我做的时候用到的包为例)

pycrypto模块

https://pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz

PyYAML模块

http://pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz

Jinja2模块

https://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz
https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz

paramiko模块

https://pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz
https://pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz

simplejson模块

https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz

Ansible源码

https://github.com/ansible/ansible/archive/v1.7.2.tar.gz

开始源码安装

创建安装目录

mkdir /usr/local/ansible

将准备的所有的包放到这个安装目录中。(纯属个人习惯)

安装过程中的依赖性解决

yum install -y gcc python-setuptools openssl-devel python-devel

安装各个模块

(1)、pycrypto模块安装

tar xvzf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py install

(2)、PyYAML模块安装

tar xvzf yaml-0.1.5.tar.gz
cd yaml-0.1.5
./configure --prefix=/usr/local/ 这个路径不能改否则库文件无法正确写入
make && make install

有人在make的时候使用了:make –jobs=grep processor/proc/cpuinfo | wc -l, 我在做的时候用这个一直出不来结果,所以直接换成了make。

tar xvzf PyYAML-3.11.tar.gz
cd PyYAML-3.11
python setup.py install

(3)、Jinja2模块安装

tar xvzf MarkupSafe-0.9.3.tar.gz
cd MarkupSafe-0.9.3
python setup.py install
tar xvzf Jinja2-2.7.3.tar.gz
cd Jinja2-2.7.3
python setup.py install

(4)、paramiko模块安装

tar xvzf ecdsa-0.11.tar.gz
cd ecdsa-0.11
python setup.py install
tar xvzf paramiko-1.15.1.tar.gz
cd paramiko-1.15.1
python setup.py install

(5)、simplejson模块安装

tar xvzf simplejson-3.6.5.tar.gz
cd simplejson-3.6.5
python setup.py install
Ansible安装
tar xvzf ansible-1.7.2.tar.gz
cd ansible-1.7.2
python setup.py install
Ansiable配置及简单测试

(1)、复制配置文件

mkdir /etc/ansible
cp /usr/local/ansible/ansible-1.7.2/examples/ansible.cfg /etc/ansible/

(2)、创建管理主机列表

vim /etc/ansible/hosts
    [test]
    172.25.254.4
    172.25.254.251

创建这个文件,我找了两台虚拟机做测试,中括号中定义主机组的名字,下边是这个组中的主机。

(3)、创建免密钥SSH登陆认证

ssh-keygen -t rsa -P ''
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.4
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.251

(4)、测试

在搭建ansible的主机上,执行下面的命令测试环境是否
搭建成功。

ansible test -m shell -a 'uptime'

ansible test -m ping 

在第一次连接的时候会检查key,所以会出现选择yes|no的情况。只需要在ansible.cfg中将host_key_checking = False打开即可不用检测key。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值