###简介
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安装
wget https://releases.ansible.com/ansible/ansible-1.7.2.tar.gz
#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
#为某些静态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
配置文件路径
ansible的配置文件名为ansible.cfg。环境变量ANSIBLE_CONFIG:首先,Ansible命令会检查该环境变量,及这个环境变量将指向的配置文件。若无环境变量,则会使用默认配置文件/etc/ansible/ansible.cfg
配置环境变量
#vim /etc/profile
export ANSIBLE_CONFIG=/home/vmuser/ansible/ansible.cfg
export PATH=$ANSIBLE_CONFIG/bin:$PATH
#source /etc/profile