文档章节

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
粉丝 21
博文 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
03-Ansible管理命令_Ansible

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

xiaomin0322
09/04
0
0
Ansible 简单入门

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

flyingzf
2016/07/22
0
0
运维自动化之ansible--(playbook模式)

运维自动化之ansible--(playbook模式) 一、Ansible Playbook简介 playbook是ansible用于配置,部署,和管理被控节点的剧本。 通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机...

lc01081314
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Git工作原理

git跟传统的代码管理器(如svn)不同, 主要区别在于git多了个本地仓库以及缓存区,所以即使无法联网也一样能提交代码。 术语解释: 工作区间: 即我们创建的工程文件, 在编辑器可直观显示;...

Lienson
4分钟前
0
0
MySQL驱动对应Server版本、JDK版本

昨日生产上线,临时升级MySQL版本,导致连接不上。 应用JDK版本1.5 测试环境MySQL版本5.7 驱动版本5.1.40.jar 正常 生产环境MySQL版本8.0 驱动版本5.1.40.jar 连接不上 生产环境MySQL版本8.0...

zcjlq
5分钟前
1
0
千万级规模【高性能、高并发】互联网架构经验分羹

架构以及我理解中架构的本质 在开始谈我对架构本质的理解之前,先谈谈对今天技术沙龙主题的个人见解,千万级规模的网站感觉数量级是非常大的,对这个数量级我们战略上 要重 视 它 , 战术上又...

java知识分子
6分钟前
0
0
重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准

重磅!阿里巴巴工程师获得 containerd 社区席位,与社区共建云时代容器标准 11 月 29 日,CNCF containerd 社区正式宣布:两位阿里巴巴工程师正式获得 containerd 社区席位,成为 containerd...

阿里云官方博客
7分钟前
0
0
你会用哪些JavaScript循环遍历

总结JavaScript中的循环遍历 定义一个数组和对象 const arr = ['a', 'b', 'c', 'd', 'e', 'f'];const obj = { a: 1, b: 2, c: 3, d: 4} for() 经常用来遍历数组元素 遍历值为数组...

peakedness丶
8分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部