文档章节

自动化运维之-ansible入门

_凤求凰_
 _凤求凰_
发布于 2017/07/28 16:42
字数 1137
阅读 182
收藏 0

1.缘起

因为公司没有运维人员,每次发布项目都需要手动编译,手工发布,特别浪费时间,发布几次以后就烦了,就想着全换成自动化方式打包发布,经过几个筛选终于选定用ansible来做自动化打包发布。从此节约大把的时间来听听歌看看书喝喝茶了。。。经过实践表面,在没有运维岗的时候,ansible绝对是中小创业公司项目发布的最佳选择!

2.介绍

ansible其实就是一个可以通过SSH与远程服务器进行连接交互的工具,它内置了很多模块可以让你轻松的通过 命令或者编写playbook剧本操作远程服务器,

3.安装与简单测试

  1. 安装ansible很简单,我的系统是centsos7.2,直接敲,yum install ansible -y 即可 
    windows系统可以考虑安装个cygwin,来模拟进行linux操作,在cygwin的虚拟linux上安装ansible与远程服务器进行交互。 
    安装好以后ansible --version进行查看 
    如下: 
    [root@localhost ~]# ansible --version 
    ansible 2.3.1.0 
    config file = /etc/ansible/ansible.cfg 
    configured module search path = Default w/o overrides 
    python version = 2.7.5 (default, Nov 6 2016, 00:28:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
  2. 安装好ansible以后,建议配置ssh免密码登录远程服务器,不会操作的可以自行百度
  3. ansible有个host配置,yum安装以后,在/etc/ansible/hosts里可以可以添加远程服务器主机的ip地址,或者一组ip服务器地址,例如我们的服务是分布式部署,有三台服务,配置如下
#[]里是服务器组的name,后续每行跟着的是服务器的ip地址
[yrServer] 
192.168.9.50
192.168.9.51
192.168.9.52
  1. 命令行测试 
    ansible yrServer -m ping 
    服务器返回 

    [root@localhost ~]# ansible all -m ping 
    192.168.9.50 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 

    192.168.9.51 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 

    192.168.9.52 | SUCCESS => { 
    "changed": false, 
    "ping": "pong" 


    表示三台服务器都已经ping通,其中参数里的changed的false代表,主机没有任何改动 
    ping后面pong标识已经ping通

ansible可以通过类似上面的命令行与主机进行交互,其实通过ansible进行远程主机操作,就是把ansible脚本转换层shell脚本与命令在远程主机上进行操作,但是自动化运维是一组命令跟脚本的组合,所以就需要学习一下ansible的杀手锏playbook了

4.Playbook

playbook是一组ansible命令的组合,我们可以称他为剧本,你完全可以理解成playbook就是拍戏的那个剧本,演员只要照着剧本演戏,就能完成拍戏任务,我们把我们想做的操作编排成剧本,ansible就可以编排有序的执行任务,并给与我们反馈。Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.

4.1 Playbook示例

playbook的格式是YAML,语法比较简单, 
playbook 由一个或多个 ‘plays’ 组成.它的内容是一个以 ‘plays’ 为元素的列表. 
“plays” 算是一个体育方面的类比,你可以通过多个 plays 告诉你的系统做不同的事情,不仅是定义一种特定的状态或模型.你可以在不同时间运行不同的 plays. 
这里有一个从github源码demo里找到的playbook示例,其中仅包含一个 play: 仔细看注视

---#必须---开头
- hosts: webservers#hosts里定义的组名或者直接服务器ip
  vars:#参数
    http_port: 80
    max_clients: 200
  remote_user: root #执行的账户名
  tasks:#执行的任务
  - name: ensure apache is at the latest version#任务名称是安装最新版本的apache
    yum: pkg=httpd state=latest#执行的命令是ansible yum模块安装httpd
  - name: write the apache config file#任务名称是修改apache的config配置文件
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf  #采用模版文件,从从src复制到dest,名字最终为httpd.conf
    notify:#事件通知,一有修改配置文件,就通知的名字为restart apache,会执行handlers相同名字的service进行执行重启
    - restart apache
  - name: ensure apache is running #任务名称
    service: name=httpd state=started #任务操作是:启动httpd
  handlers:
    - name: restart apache #任务名称
      service: name=httpd state=restarted #任务操作是重启httpd服务

执行ansible playbook 
ansible-playbook demo.yml 
就可以查看结果

© 著作权归作者所有

共有 人打赏支持
_凤求凰_

_凤求凰_

粉丝 35
博文 45
码字总数 18630
作品 1
海淀
架构师
私信 提问
《Linux云计算从入门到精通》系列实战笔记全放送

为了方便Linux云计算爱好者的学习查看,马哥Linx云计算团队特别整理了《Linux云计算从入门到精通》年度重磅大放送,囊括了整个学习过程的学习精华,内容全部由马哥Linux云计算学员撰写,欢迎...

898009427
2017/11/21
0
0
2016年我的阅读书单

2016年我正在看或者已经看完的书单,基本上都是纸质书,主要是长时间阅读也不伤眼。每天坚持看1-2小时书,没办法,其它时间要写业务代码或处理线上的问题,列表清如下所示: 《操作系统设计与...

抚琴煮酒
2016/10/21
0
0
OSC 第 121 期高手问答 -- Ansible 自动化运维:技术与最佳实践

OSCHINA 本期高手问答(7月19日- 7月27日) 我们请来了@jimchen010 (陈金窗)、@沈灿 、@老瓦房 (刘政委) 为大家解答关于Ansible自动化运维:技术与最佳实践方面的问题。 @jimchen010 (陈金...

开源中国股侠
2016/07/19
4.8K
48
运维自动化好帮手:ansible软件入门篇

一:关于自动化我们要知道的 1、自动化是什么? IT运维自动化是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。可以说自动化运维一定是...

云云毓
2018/06/28
0
0
2017年我的阅读书单

2017年我正在看或者已经看完的书单,基本上都是纸质书,主要是长时间阅读也不伤眼。由于现阶段的主要工作是DevOps,所以涉及运维方面的书我没有再细看,主要是工作用到的话会稍为翻阅下。主要...

抚琴煮酒
2017/06/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

php __call,__callStatic

// demo1.php<?phpclass test{public function run(){static::who();test::who();self::who(); $this->who();}public static function __callS...

小张525
3分钟前
0
0
Java发展历史

1995年5月23日,Java语言诞生 1996年1月,第一个JDK-JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 1996年9月,约8.3万个网页应用了JAVA技术来制作 1997年...

二九结狐六体
4分钟前
0
0
蚂蚁金服核心技术:百亿特征实时推荐算法揭秘

摘要: 文章提出一整套创新算法与架构,通过对TensorFlow底层的弹性改造,解决了在线学习的弹性特征伸缩和稳定性问题,并以GroupLasso和特征在线频次过滤等自研算法优化了模型稀疏性。在支付...

阿里云官方博客
9分钟前
0
0
Dubbo底层采用Socket进行通信详解

Dubbo底层采用Socket进行通信详解 由于Dubbo底层采用Socket进行通信,自己对通信理理论也不是很清楚,所以顺便把通信的知识也学习一下。 n 通信理论 计算机与外界的信息交换称为通信。基本的...

DemonsI
19分钟前
0
0
Sublime Text3快捷键大全

Sublime Text3快捷键大全 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本。 Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑。举个栗子:快速选...

linjin200
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部