蚂蚁搬大象 发表于 2016-10-25 18:21:54

ansible palybook基础学习

一. 什么是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
节点1node1.gulong.com172.16.8.5
节点2node2.gulong.com172.16.8.8
Ansible服务器ansible.gulong.com172.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(节点配置文件):# vim /etc/ansible/hosts//添加如下内容:node1.gulong.comnode2.gulong.com//其他内容可以全部注释掉2、修改/etc/hosts文件,使之可以解析另外2个节点# vim /etc/hosts//添加以下内容:172.16.8.8node2.gulong.com172.16.8.5node1.gulong.com3、配置ansible端能基于密钥认证的方式联系各被管理节点。[root@station142 ~]# ssh-keygen -t rsa -P ''4、把密钥发往各个节点服务器上:#ssh-copy-id -i .ssh/id_rsa.pub root@node2.gulong.com#ssh-copy-id -i .ssh/id_rsa.pub root@node1.gulong.com四、各个服务器节点的配置1、节点1的配置,修改主机名@node1 ~]# hostname node1.gulong.com   //及时生效@node1 ~]# vim /etc/sysconfig/network //重启生效//添加如下内容:NETWORKING=yesHOSTNAME=node1.gulong.com2、节点2的配置,修改主机名:@node1 ~]# hostname node2.gulong.com   //及时生效@node1 ~]# vim /etc/sysconfig/network //重启生效//添加如下内容:NETWORKING=yesHOSTNAME=node2.gulong.com五、Ansible简单测试简单格式:ansible节点名称   [ -m模块]   -a命令参数例子如下:1、查看各个节点的时间# ansible all -a date# ansible all -m command -a date//以上两条命令结果是一样的,因为默认调用 command模块,所以可以省略, all 表示所有节点, -a 后面是参数2、查看各个节点在线情况# ansible all -m ping//内建的ping模块3、在各个节点输出指定信息# ansible all -a "/bin/echo hello, world"六、Ansible-playbook1、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: FemaleYAML文件扩展名通常为.yaml,如example.yaml2、Playbook可以用来管理复杂任务   对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。1:安装php软件:建立php.yaml文件内容如下:- hosts: hanodesremote_user: roottasks:    - name: php installing      yum: name=php state=present选项解析:hosts:hanodes         指定要执行指定任务的主机,其可以是一个或多个由冒号分隔主机组remote_user:root         用于指定远程主机上的执行任务的用户tasks:                         任务-name:php installing   给这个任务起的名字yum:name=php         利用yum模块,安装软件的包名为phpstate=present               状态为安装state=absent                   状态为卸载# ansible-playbook php.yaml看到结果,ok=2    changed=1 说明客户机上的php安装成功了!2、创建crontab计划建立cron.yaml,让每月10号来运行/root/db.sql脚本内容如下:- hosts: hanodesremote_user: roottasks:    - name: cron      cron: name='test job' day='10' job="/root/db.sql"# ansible-playbook cron.yaml看到结果,ok=2    changed=1 说明客户机上的crontab计划创建成功了!查看各个节点crontab:注:大家可以用 "ansible-doc -l" 命令来查看它内置的有哪些模块。然后利用"ansible-doc模块名"命令来查看具体模块的详细用法。3、 handlers的用法用于当关注的资源发生变化时采取一定的操作。“notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之, 仅在所有的变化发生完成后一次性地执行指定操作。在notify中列出的操作称为handler,也即notify中调用handler中定义的操作。案例
- hosts: hbhostsremote_user: roottasks:    - name: ensure heartbeat latest version      yum: name=heartbeat state=present//安装heartbeat    - name: authkeys configure file      copy: src=/root/hb_conf/authkeysdest=/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 heartbeathandlers:                //定义handlers列表      - name: restart heartbeat      service: name=heartbeat state=restarted //重启heartbeat服务至此,Ansible的简单应用已经介绍完成,不足之处,请多加指点!

蚂蚁搬大象 发表于 2016-10-25 18:22:29

转摘自:http://blog.csdn.net/magedu_linux/article/details/48529645

dxq6888 发表于 2016-10-31 09:48:59

文档编写有问题,代码部分格式看的不清楚
页: [1]
查看完整版本: ansible palybook基础学习