自动化运维之ansible的ad-hoc

【假装正经的前言】
  想要做一名优秀的运维师,首先要时刻铭记的就是效率!效率!效率!同样的一份工作,你拼死拼活做了一小时,人家做了10分钟,而且完美,你说你气不气,你说老板给不给人家加鸡腿。至于你,还是顶着老板的白眼多学习吧。所以,这篇博文就来介绍一个自动化运维工具,让你嗑着瓜子喝着茶分分钟搞定工作!

【严肃的说】
先来介绍一些自动化运维常用工具:

场景 工具 用途
安装系统 pxe/cobbler 安装系统
虚拟化系统 kvm/xen/vmware 虚拟机
应用部署 puppet/ansible/saltstack 中大型规模
命令执行 ansible/fabric/ffunc/shell 中小型

  ansible聚集以上部署和命令执行于一身,能够完整轻易的实现应用部署和批量命令功能,适用于主机数量中型规模,再大的使用puppet。

【自动化运维之ansible】
  ansible是新出现的自动运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置,批量程序部署、批量运行命令等功能。
  ansible是基于paramiko开发的,并且基于模块化工作,本身没有批量部署的能力。真正具备批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。目前已经被红帽官方收购。

【ansible特点】
 1、部署简单,只需在主控制端部署ansible环境,被控制端无需做任何操作;
 2、默认使用ssh协议对设备进行管理
 3、有大量常规运维操作模板,可实现日常绝大部分操作。
 4、配置简单、功能强大、扩展性强
 5、支持API及自定义模块,可通过Python轻松扩展
 6、通过playbooks来定制强大的配置、状态管理;
 7、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。
 8、提供一个功能强大、操作性强的web管理界面REST API接口—AWX平台
这里写图片描述
[ansible任务执行模式]
ad-hoc和playbook
ad-hoc:
ad-hoc模式使用单个模块,支持批量执行单条命令。ad-hoc命令是一种可以快速输入的命令,而且不需要保存起来的命令。相当于bash中的一句shell。
playbook:
playbook模式是ansible主要管理方式,也是ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如web服务的安装部署、数据库服务器的批量备份等。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。

本篇就先来介绍ad-hoc模式。

[ansible命令执行过程]
1、加载自己的配置文件,默认/etc/ansible/ansible.cfg
2、查找对应的主机配置文件,找到要执行的主机或者组。
3、加载自己对应的模块文件,如command
4、通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器
5、对应执行用户家目录的.ansible/tmp/XXX/XXX.PY文件
6、给文件+x执行
7、执行并返回结果
8、删除临时py文件,sleep 0 退出。

【ansible安装方式】
ansible安装常用两种方式,yum安装和pip程序安装
1、使用yum安装
yum install epel-release -y
yum install ansible –y
2、使用pip(python的包管理模块)安装
pip install ansible
如果没pip,需先安装pip.yum可直接安装:
yum install python-pip
pip install ansible

安装后来看一下ansible的配置文件:


[root@centos7 ansible]# vim /etc/ansible/ansible.cfg
[defaults]

# some basic default values...

#inventory      = /etc/ansible/hosts
#library        = /usr/share/my_modules/
#remote_tmp     = ~/.ansible/tmp
#local_tmp      = ~/.ansible/tmp
#forks          = 5
#poll_interval  = 15
#sudo_user      = root
#ask_sudo_pass = True
#ask_pass      = True
#transport      = smart
#remote_port    = 22
#module_lang    = C
#module_set_locale = False

#这里只截取了小段,并不是全部的文档

 既然ansible要管理节点,那么就需要定义被管理节点的地址,此项要在/etc/ansible/hosts文件中定义:

可以直接知名主机地址或者定义一个主机组两种方法都可以。
[root@centos7 ansible]# vim /etc/ansible/hosts
[web]           #定义主机组
192.168.64.129  #被管理节点
192.168.64.130  #被管理节点

ansible还有一些常用命令,例如
/usr/bin/ansible和/usr/bin/ansible-doc
/usr/bin/ansible是临时命令执行工具&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值