lSky's blog

ansible学习笔记之-简介与部署

简介

ansible是一种自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

管理节点依赖的东西比较少,列表如下:
Python 2.6 或更高版本
Paramiko(Python的SSH模块)
PyYAML(Python的YAML解析器)
Jinja2(Python的模板引擎)

特点:
部署简单,agentless 无客户端工具;
主从模式 工作;
支持自定义模块 功能;
支持playbook 剧本,连续任务按先后设置顺序完成;
期望每个命令具有 幂等性:

ansible 架构
ansible core : ansible 自身核心模块
host inventory: 主机库,定义可管控的主机列表
connection plugins: 连接插件,一般默认基于 ssh 协议连接
modules:core modules ( 自带模块 ) 、 custom modules ( 自定义模块 )
playbooks :剧本,按照所设定编排的顺序执行完成安排任务
这里写图片描述

部署

python升级

yum -y install ntp make gcc gcc-c++

#wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

./configure –prefix=/usr/local

make && make install

python -V

mv /usr/bin/python /usr/bin/python2.6.6

ln -s /usr/local/bin/python2.7 /usr/bin/python

指定 yum 的Python版本

vim /usr/bin/yum

#!/usr/bin/python2.6.6

配置iBus 把exec python 改为 exec python2.6

vim /usr/bin/ibus-setup

vim /usr/libexec/ibus-ui-gtk

python相关依赖
pip安装

wget https://bootstrap.pypa.io/get-pip.py –no-check-certificate

python get-pip.py

pip install setuptools

pip install pycrypto

pip install PyYAML

pip install Jinja2

pip install paramiko

pip install simplejson

Ansible安装

tar xzvf ansible-1.7.2.tar.gz

cd ansible-1.7.2

python setup.py install

或者直接yum安装

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

yum install -y ansible

ansible –version

秘钥生成和拷贝

ssh-keygen -t rsa -P ‘’

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.182.129

mkdir /etc/ansibles

cp -rp examples/* /etc/ansible/

vim hosts

1
2
3
4
5
6
7
8
#为某些静态IP设置一些别名
jumper ansible_ssh_port=22 ansible_ssh_host=192.168.182.130
[test] #配置了一个test组
192.168.182.129
[test:vars] #定义组内变量
insname=httpd
[mserver] #定义ssh端口,秘钥有密码
192.168.182.131:2222 ansible_ssh_pass=***

ansible test -a ‘uptime’

192.168.182.129 | success | rc=0 >>
23:44:49 up 29 min, 4 users, load average: 0.00, 0.00, 0.01