Ansible简介及作用
一.Ansible简介:
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
二.Ansible的特性:
模块化:调用特定的模块,完成特定任务
有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块
支持自定义模块
基于Python语言实现
部署简单,基于python和SSH(默认已安装),agentless
安全,基于OpenSSH
支持playbook编排任务
幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
无需代理不依赖PKI(无需ssl)
可使用任何编程语言写模块
YAML格式,编排任务,支持丰富的数据结构
较强大的多层解决方案
三.Ansible工作原理:
1.管理端支持local 、ssh、zeromq 三种方式连接被管理端,默认使用基于ssh的连接---这部分对应基本架构图中的连接模块;
2.可以按应用类型等方式进行Host Inventory(主机群)分类,管理节点通过各类模块实现相应的操作---单个模块,单条命令的批量执行,我们可以称之为ad-hoc;
3.管理节点可以通过playbooks 实现多个task的集合实现一类功能,如web服务的安装部署、数据库服务器的批量备份等。playbooks我们可以简单的理解为,系统通过组合多条ad-hoc操作的配置文件
基本架构图
-
官方EPEL源配置
一.EPEL的概念
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
二.RPM安装EPEL
1.进入官网
http://mirrors.kernel.org/fedora-epel/
2.查找所需要的版本(这里选择的是centos7)复制链接地址
3.在终端输入命令用RPM下载
rpm -Uvh http://mirrors.kernel.org/fedora-epel/epel-release-latest-7.noarch.rpm
yum安装Ansible
一.安装条件
已装好epel、python2.7,在root用户条件下
机器环境
一台控制主机:192.168.1.130
一台管理主机:192.168.1.134
二.yum安装
yum install epel-release
yum install ansible
1.配置管理主机
vim /etc/ansible/hosts
在hosts文件中添加管理主机的IP地址列表
2.配置控制主机SSH密钥
ssh-keygen -t rsa
一路回车即可在cd ~/.ssh目录下生成id_rsa和id_rsa.put私钥和公钥两个文件。
注: 如果在生成密钥的时候设置了密码,ansible每次执行命令的时候,都会提示输入密钥密码,可通过下面的命令记住密码。
3.将公钥拷贝到管理主机中.ssh/authorized_keys文件中,实现免密码登录远程管理主机
ssh-copy-id -i id_rea.pub root@192.168.1.134
注:ssh-copy-id命令会自动将id_rsa.pub文件的内容追加到远程主机root用户下.ssh/authorized_keys文件中。
三.ansible配置
vim /etc/ansible/ansible.cfg
1.禁用每次执行ansbile命令检查ssh keyhost
host_key_checking = False(默认禁用)
2. 开启日志记录
log_path = /var/log/ansible.log(去掉前面的 "#" )
3.ansible连接加速配置
四.测试
最后测试下在管理机器批量执行一个ping命令
ansible all -m ping
(如若报错,在cd ~/.ssh中操作)
1.ssh-keygen -t rsa
2.成功后在~/.ssh/路径下将生成ssh密钥文件:id_rsa及id_rsa.pub
3.ssh-copy-id -i root@目标节点IP
4.ansible all -m ping