linux自动化分为三个层次python
1.OS provisioning 自动化安装系统 linux
经常使用软件:cobbler(red hat 用、PXEweb
2.OS config 自动化配置系统apache
经常使用软件:cfengine,puppet,saltstack chefvim
3.OS deployment 深度定制自动化服务器
经常使用软件:func(C/S,ssl)、fabric(ssh,python)、ansible架构
ansible:因为能够完成三个层次的事情因此比较强大。(基于ssh去链接到主机,因此先要认证)运维
ansible特性: ssh
部署简单,只需在主控端部署Ansible环境,被控端无需作任何操做;
默认使用SSH协议对设备进行管理;
有大量常规运维操做模块,可实现平常绝大部分操做;
配置简单、功能强大、扩展性强;
支持API及自定义模块,可经过Python轻松扩展;
经过Playbooks来定制强大的配置、状态管理;
轻量级,无需在客户端安装agent,更新时,只需在操做机上进行一次更新便可;
提供一个功能强大、操做性强的Web管理界面和REST API接口——AWX平台。测试
ansible的架构及组件
Ansible:Ansible核心程序。
HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机须要调用哪些模块来完成的功能。
CoreModules:核心模块,主要操做是经过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块没法完成的功能,支持多种语言。
ConnectionPlugins:链接插件,Ansible和Host通讯使用
安装ansible:yum安装
安装ansible:
1.下载epel源到/etc/yum.repos.d
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
2.yum clean all
3. yum makecache
4.yum install ansible -y
使用ansible准备
1.配置主机:
在安装有ansible服务器上/etc/hosts 文件中添加主机
格式:
[机组名] 例: [websevices]
机组ip或主机名 192.168.29.129
www.zrq1.com
2.配置认证:这里因为ansible须要到客户机上执行操做,因此须要对于客户机有登陆权限,最好设置免密登陆
1.建立证书
#ssh-keygen -t rsa -P ''
2.拷贝证书
#ssh-copy-id -i ./ssh/id_rsa.pub root@192.1168.1.162
3.测试是否成功
#ansible all -m pinng :像全部的客户机发送ping测试
ansible配置文件:
hosts:配置主机群
ansible基本语法:
ansible
ansible <host-pattern> [options]
host-pattern:在host中定义的主机群
all:全部主机
options:
-m:后面接模块
若是直接执行命令,不用模块能够省略
例如:ansible all -a ‘service httpd status’
查看客户机的httpd服务状态
-a:后面接模块的命令
ansible-doc -l:列出全部模块
经常使用模块:copy、cron、acl、group、user
ansible-doc -s 模块名:查看指定模块的参数
例:ansible webserver -m copy -a “src=/root/zrq.sh dest=/tmp/zrq/” 注意:命令不支持管道
用复制模块复制文件到websever服务器群的目录中
ansible相关命令:
ansible-doc
-l:查看全部模块
主要模块:
acl:
at:
cron
copy
command:
user
group
yum
service
file
-s:查看指定模块的参数
例如:ansible-doc -s copy
ansible的playbook模块:
1.基于YAML(一种文本格式)语言:
ymal文件扩展名一般为。yaml
-:表示
空格:表示
每一个任务都有名称
注意缩进
2.playbooks:基于yaml语言格式的一个.yaml文件
示例:(注意:千万注意缩进以及对其,特别是-)
#vim test.yaml
- hosts: all remote_user: root tasks: - name: ensure apache status service: name: httpd state: status