设为首页 收藏本站
云服务器等爆品抢先购,低至4.2元/月
查看: 2212|回复: 2

[经验分享] ansible palybook基础学习

[复制链接]
累计签到:7 天
连续签到:1 天
发表于 2016-10-25 18:21:54 | 显示全部楼层 |阅读模式

一. 什么是ansible

   ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”――简单的自动化IT工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。

所有的这几个目标本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。就像我之前有介绍过的Fabric,以及我们基于Fabric开发的自动化应用部署的工具: Essay 。都是做了这么个事―― 批量的在远程服务器上执行命令 。

    那么fabric和ansible有什么差别呢?简单来说fabric像是一个工具箱,提供了很多好用的工具,用来在Remote执行命令,而Ansible则是提供了一套简单的流程,你要按照它的流程来做,就能轻松完成任务。这就像是库和框架的关系一样。

    当然,它们之间也是有共同点的――都是基于 paramiko 开发的。这个paramiko是什么呢?它是一个纯Python实现的ssh协议库。因此fabric和ansible还有一个共同点就是不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

相对来说,ansible有如下优点:
1、轻量级,他不需要去客户端安装agent,更新时,只需要在操作机上进行一次更新即可
2、批量任务执行可以写成脚本,而且不用分发到远程就可以执行
3、使用python编写的,维护更简单,ruby语法过于复杂
4、支持sudo

二、安装ansible

实验环境

服务器名
域名
IP
节点1
node1.gulong.com
172.16.8.5
节点2
node2.gulong.com
172.16.8.8
Ansible服务器
ansible.gulong.com
172.16.8.9

在Ansible服务器上安装Ansible

先解决依赖关系:

# yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto//注:python-jinja2在centos的第二张光盘上

安装ansible-1.5.4-1.el6.noarch.rpm

# rpm -ivh ansible-1.5.4-1.el6.noarch.rpm

三、Ansible的配置

1、编辑/etc/ansible/hosts(节点配置文件):

[iyunv@station142 ~]# vim /etc/ansible/hosts//添加如下内容:[hanodes]node1.gulong.comnode2.gulong.com//其他内容可以全部注释掉

2、修改/etc/hosts文件,使之可以解析另外2个节点

[iyunv@station142 ~]# vim /etc/hosts//添加以下内容:172.16.8.8  node2.gulong.com172.16.8.5  node1.gulong.com

3、配置ansible端能基于密钥认证的方式联系各被管理节点。

[root@station142 ~]# ssh-keygen -t rsa -P ''

MJJR3q.jpg

4、把密钥发往各个节点服务器上:

[iyunv@station142 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@node2.gulong.com[iyunv@station142 ~]#ssh-copy-id -i .ssh/id_rsa.pub root@node1.gulong.com

四、各个服务器节点的配置

1、节点1的配置,修改主机名

[root@node1 ~]# hostname node1.gulong.com   //及时生效[root@node1 ~]# vim /etc/sysconfig/network //重启生效//添加如下内容:NETWORKING=yesHOSTNAME=node1.gulong.com

2、节点2的配置,修改主机名:

[root@node1 ~]# hostname node2.gulong.com   //及时生效[root@node1 ~]# vim /etc/sysconfig/network //重启生效//添加如下内容:NETWORKING=yesHOSTNAME=node2.gulong.com

五、Ansible简单测试

简单格式:ansible  节点名称   [ -m  模块]   -a  命令参数

例子如下:

  1、查看各个节点的时间

[iyunv@station142 ~]# ansible all -a date[iyunv@station142 ~]# ansible all -m command -a date//以上两条命令结果是一样的,因为默认调用 command  模块,所以可以省略, all 表示所有节点, -a 后面是参数

IVnmm2.jpg

2、查看各个节点在线情况

[iyunv@station142 ~]# ansible all -m ping//内建的ping模块

MnqeAvQ.jpg

3、在各个节点输出指定信息

[iyunv@station142 ~]# ansible all -a "/bin/echo hello, world"

rYNZZb.jpg

六、Ansible-playbook

1、Playbook是通过yaml文件来配置实现的,先来介绍下yaml语法!

      YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(Structure)通过空格来展示,序列(Sequence)里的项用"-"来代表,Map里的键值对用":"分隔。下面是一个示例:

name: John Smithage: 41gender: Malespouse:        name: Jane Smith        age: 37        gender: Femalechildren:        -   name: Jimmy Smith                age: 17                gender: Male        -   name: Jenny Smith                age 13                gender: Female

YAML文件扩展名通常为.yaml,如example.yaml

2、Playbook可以用来管理复杂任务

     对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。

1:安装php软件:

建立php.yaml文件

内容如下:

- hosts: hanodes  remote_user: root  tasks:    - name: php installing      yum: name=php state=present

选项解析:

hosts:hanodes         指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组

remote_user:root         用于指定远程主机上的执行任务的用户

tasks:                         任务

-name:php installing     给这个任务起的名字

yum:name=php           利用yum模块,安装软件的包名为php

state=present                 状态为安装  

state=absent                   状态为卸载

[iyunv@station142 ~]# ansible-playbook php.yaml

EFRRNz.jpg

看到结果,ok=2    changed=1 说明客户机上的php安装成功了!

2、创建crontab计划

建立cron.yaml,让每月10号来运行/root/db.sql脚本

内容如下:

- hosts: hanodes  remote_user: root  tasks:    - name: cron      cron: name='test job' day='10' job="/root/db.sql"[iyunv@station142 ~]# ansible-playbook cron.yaml

UFFRfy.jpg

看到结果,ok=2    changed=1 说明客户机上的crontab计划创建成功了!

查看各个节点crontab:

F7VFBr.jpg

注:

大家可以用 "ansible-doc -l" 命令来查看它内置的有哪些模块。

然后利用"ansible-doc  模块名"  命令来查看具体模块的详细用法。

3、 handlers的用法

用于当关注的资源发生变化时采取一定的操作。

“notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之, 仅在所有的变化发生完成后一次性地执行指定操作。

在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。

案例

- hosts: hbhosts  remote_user: root  tasks:    - name: ensure heartbeat latest version      yum: name=heartbeat state=present  //安装heartbeat    - name: authkeys configure file      copy: src=/root/hb_conf/authkeys  dest=/etc/ha.d/authkeys      //copy模块,src为源文件地址,dest为节点目录     - name: authkeys mode 600       file: path=/etc/ha.d/authkeys mode=600 //修改文件权限为600       notify:                     //调用handlers列表中的重启操作         - restart heartbeat         - name: ha.cf configure file       copy: src=/root/hb_conf/ha.cf dest=/etc/ha.d/ha.cf       notify:             //调用handlers列表中的重启操作          - restart heartbeat  handlers:                //定义handlers列表      - name: restart heartbeat        service: name=heartbeat state=restarted //重启heartbeat服务

至此,Ansible的简单应用已经介绍完成,不足之处,请多加指点!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-291133-1-1.html 上篇帖子: ansible安装及遇到的问题 下篇帖子: ansible安装 服务器 fabric 工具箱 共同点 title
累计签到:7 天
连续签到:1 天
 楼主| 发表于 2016-10-25 18:22:29 | 显示全部楼层

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

累计签到:50 天
连续签到:2 天
发表于 2016-10-31 09:48:59 | 显示全部楼层
文档编写有问题,代码部分格式看的不清楚

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表