文档章节

ansible playbook 基础应用

eddy_linux
 eddy_linux
发布于 2015/11/21 16:01
字数 988
阅读 428
收藏 4
安装ansible
免密码登陆
初始化主机组
本地host主机名
以上步凑已完成

1.测试主机是否正常
[root@server ~]# ansible client -m ping
192.168.1.103 | success >> {
    "changed": false, 
    "ping": "pong"
}

应用1:yum安装httpd
1.确认httpd是否安装
[root@server ~]# ansible client -a 'rpm -q httpd'
192.168.1.103 | FAILED | rc=1 >>
package httpd is not installed

2.编写yaml文件与httpd的配置文件模板

2.1 httpd.conf
/etc/ansible/
├── hosts
└── site
    └── client
        ├── conf
        │   └── httpd.conf
        └── yaml

2.2 编写yaml文件
2.2.1 编写安装apache yaml文件
install_apache.yaml
---
- hosts: client
  remote_user: root
  tasks:
   - name: ensure apache the last version
     yum: name=httpd state=latest
   - name: ensure apache is running
     service: name=httpd state=started
[root@server yaml]# ansible-playbook install_apache.yaml 

PLAY [client] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.1.103]

TASK: [ensure apache the last version] **************************************** 
changed: [192.168.1.103]

TASK: [ensure apache is running] ********************************************** 
changed: [192.168.1.103]

PLAY RECAP ******************************************************************** 
192.168.1.103              : ok=3    changed=2    unreachable=0    failed=0

#检查apache是否安装
[root@server yaml]# ansible client -a 'rpm -q httpd'
192.168.1.103 | success | rc=0 >>
httpd-2.2.15-15.el6_2.1.x86_64
#检查apache是否启动
[root@server yaml]# ansible client -a '/etc/init.d/httpd status'
192.168.1.103 | success | rc=0 >>
httpd (pid  3209) is running...
#检查Apache占用端口
[root@server yaml]# ansible client -m shell -a 'netstat -nutlp|grep :80'
192.168.1.103 | success | rc=0 >>
tcp        0      0 :::80                       :::*                        LISTEN      3209/httpd 

2.2.2 编写apache 配置文件模板拷贝
copy_configuration.yaml
---
- hosts: client
  remote_user: root
  tasks:
   - name: copy apache configuration file
     copy: src=/etc/ansible/site/client/conf/httpd.conf dest=/etc/httpd/conf/
     notify:
       - restart apache
  handlers:
   - name: restart apache
     service: name=httpd state=restarted
[root@server yaml]# ansible-playbook copy_configuration.yaml 

PLAY [client] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.1.103]

TASK: [copy apache configuration file] **************************************** 
changed: [192.168.1.103]

NOTIFIED: [restart apache] **************************************************** 
changed: [192.168.1.103]

PLAY RECAP ******************************************************************** 
192.168.1.103              : ok=3    changed=2    unreachable=0    failed=0 

#检查apache是否启动
[root@server yaml]# ansible client -a '/etc/init.d/httpd status'
192.168.1.103 | success | rc=0 >>
httpd (pid  5385) is running...

#检查apache占用端口
[root@server yaml]# ansible client -m shell -a 'netstat -nutlp|grep :8080'
192.168.1.103 | success | rc=0 >>
tcp        0      0 :::8080                     :::*                        LISTEN      5385/httpd

当然你也可以把安装和配置文件做成一个yaml文件
apache.yaml
---
- hosts: client
  remote_user: root
  tasks:
   - name: ensure apache the last version
     yum: name=httpd state=latest
   - name: copy apache configuration file
     copy: src=/etc/ansible/site/client/conf/httpd.conf dest=/etc/httpd/conf/
     notify:
       - restart apache
   - name: ensure apache is running
     service: name=httpd state=started
  handlers:
   - name: restart apache
     service: name=httpd state=restarted
[root@server yaml]# ansible-playbook apache.yaml 

PLAY [client] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.1.103]

TASK: [ensure apache the last version] **************************************** 
changed: [192.168.1.103]

TASK: [copy apache configuration file] **************************************** 
changed: [192.168.1.103]

TASK: [ensure apache is running] ********************************************** 
changed: [192.168.1.103]

NOTIFIED: [restart apache] **************************************************** 
changed: [192.168.1.103]

PLAY RECAP ******************************************************************** 
192.168.1.103              : ok=5    changed=4    unreachable=0    failed=0   

[root@server yaml]# ansible client -m shell -a 'netstat -nutlp|grep :8080'
192.168.1.103 | success | rc=0 >>
tcp        0      0 :::8080                     :::*                        LISTEN      5860/httpd


应用2:源码安装nginx
1.确认是否运行nginx
[root@server yaml]# ansible client -m shell -a 'ps -ef|grep nginx|grep -v grep'
192.168.1.103 | FAILED | rc=1 >>

2.确认安装的nginx端口是否占用
[root@server yaml]# ansible client -m shell -a 'netstat -nutlp|grep :8888'
192.168.1.103 | FAILED | rc=1 >>

3.资源准备
nginx源码包、pcre源码包
前提:系统与版本号server端与client端一致
[root@server yaml]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.3 (Santiago)
[root@client1 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.3 (Santiago)

4.编写yaml文件
---
- hosts: client
  remote_user: root
  tasks:
   - name: copy ngxin resourvce package
     copy: src=/etc/ansible/site/client/resource/nginx-1.6.1.tar.gz dest=/tmp/
   - name: copy pcre resourvce package
     copy: src=/etc/ansible/site/client/resource/pcre-8.36.tar.gz dest=/tmp/
   - name: install nginx
     shell: tar -xf /tmp/nginx-1.6.1.tar.gz -C /tmp/;tar -xf /tmp/pcre-8.36.tar.gz -C /tmp/;cd /tmp/nginx-1.6.1;./configure --prefix=/usr/local/nginx --with-pcre=/tmp/pcre-8.36;make&&make install
   - name: ensure nginx is running
     shell: /usr/local/nginx/sbin/nginx || /bin/true
   - name: copy nginx configuration file
     copy: src=/etc/ansible/site/client/conf/nginx.conf dest=/usr/local/nginx/conf/ backup=yes
     notify:
      - reload nginx
   - name: delete install package
     file: dest=/tmp/nginx-1.6.1.tar.gz  state=absent
   - name: delete install package
     file: dest=/tmp/nginx-1.6.1  state=absent  
   - name: delete install package
     file: dest=/tmp/pcre-8.36.tar.gz  state=absent
   - name: delete install package
     file:  dest=/tmp/pcre-8.36 state=absent
  handlers:
   - name: reload nginx
     shell: /usr/local/nginx/sbin/nginx -s reload || /bin/true

[root@server yaml]# ansible-playbook nginx.yaml 

PLAY [client] ***************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [192.168.1.103]

TASK: [copy ngxin resourvce package] ****************************************** 
changed: [192.168.1.103]

TASK: [copy pcre resourvce package] ******************************************* 
changed: [192.168.1.103]

TASK: [install nginx] ********************************************************* 
changed: [192.168.1.103]

TASK: [ensure nginx is running] *********************************************** 
changed: [192.168.1.103]

TASK: [copy nginx configuration file] ***************************************** 
changed: [192.168.1.103]

NOTIFIED: [reload nginx] ****************************************************** 
changed: [192.168.1.103]

PLAY RECAP ******************************************************************** 
192.168.1.103              : ok=7    changed=6    unreachable=0    failed=0 

[root@server yaml]# ansible client -m shell -a 'netstat -nutlp|grep :8888'
192.168.1.103 | success | rc=0 >>
tcp        0      0 0.0.0.0:8888                0.0.0.0:*                   LISTEN      30613/nginx         

[root@server yaml]# ansible client -m shell -a 'ps -ef|grep nginx|grep -v grep'
192.168.1.103 | success | rc=0 >>
root     30613     1  0 15:50 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   30671 30613  0 15:50 ?        00:00:00 nginx: worker process


© 著作权归作者所有

共有 人打赏支持
上一篇: python 监控jvm脚本
下一篇: ansible playbook
eddy_linux
粉丝 19
博文 135
码字总数 188789
作品 0
成都
程序员
私信 提问
自动化运维工具 Ansible

学习Ansible的系列文章 Ansible 介绍 Ansible 架构 Ansible 安装 Ansible 配置文件及参数 Ansible 常用模块 Ansible playbook 1. Ansible 介绍 Ansible 是一个配置管理和应用部署工具,只需要...

行者阿难
10/07
0
0
Ansible dockerimage docker模块使用记录

ansible docker dockerimage 使用官方文档 docker: http://docs.ansible.com/ansible/docker_module.html dokcer image: http://docs.ansible.com/ansible/dockerimage_module.html #ansibl......

zrer90
07/01
0
0
Ansible 简单入门

安装: 先安装EPEL源 yum install ansible -y Ansible配置和测试 第一步是修改主机与配置组,文件位置 /etc/ansible/hosts, 格式是ini,添加两台主机IP 同时定义两个IP到webserver组 内容如下:...

flyingzf
2016/07/22
0
0
03-Ansible管理命令_Ansible

一、Ansible 管理命令 Ansible 管理命令有如下几个: (1)ansible:这个命令是日常工作中使用率非常高的命令之一,主要用于临时一次性操作; (2)ansible-doc:Ansible 模块文档说明,针对...

xiaomin0322
09/04
0
0
企业级自动化运维工具——ansible

ansible是什么 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 an...

咏雪
06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nuc970 uboot nand-boot,kernel, filesystem 烧录位置

一 烧写到Nand Flash **1.1 **相关文件说明 l BSP版本:nuc970bsp-release-20150519.zip l NuWriter版本:2015/04/28-V01,nuvoTon Nu-Writer V1.0 l 烧写文件: u-boot-spl.bin:负责将u-b......

CookieDemo
51分钟前
1
0
python中sort和sorted函数小结

L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个迭代......

上官夏洛特
今天
3
0
thinkphp 常用SQL执行语句总结

第一条:Db::tablera('vr_panomas')->where(['delete_time'=>0,'id'=>['in',$pids]])->field(['id'=>'id','post_thumb'=>'thumb','post_title'=>'title','post_tags'=>'tags','post_price'=>......

koothon
今天
5
0
支付宝返回状态resultStatus意思

上一篇集成支付宝的时候,会有一些支付宝返回的resultStatus,具体意思是: 9000 订单支付成功 8000 正在处理中 4000 订单支付失败 6001 用户中途取消 6002 网络连接出错 还有memo,意思就是...

RainOrz
今天
3
0
electron webview 页面加载事件顺序

1.did-start-loading 页面开始加载 2.load-commit 主页面文档加载 3.page-title-updated title 4.dom-ready 主页面 dom 加载完成 5.load-commit frame文档加载 6.did-frame-finish-load fram......

dubox
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部