文档章节

ansible playbook 基础应用

eddy_linux
 eddy_linux
发布于 2015/11/21 16:01
字数 988
阅读 427
收藏 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


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
Ansible 简单入门

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

flyingzf
2016/07/22
0
0
企业级自动化运维工具——ansible

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

咏雪
06/28
0
0
运维自动化之ansible--(playbook模式)

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

lc01081314
06/26
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详解

ll 本文导航 · ansible的基础介绍 · ansible的安装与配置 · ansible的简单应用 · YAML介绍及语法 · ansible-playbooks(剧本) ll 要求 掌握ansible基本应用与playbooks。 ansible的基础...

ccs_Chan
2017/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0
SpringBoot2.0 停机

最近新建了个SpringBoot2.0的项目,因为原来一直使用的是传统的Tomcat部署war包的形式,所以这次SpringBoot内置Tomcat部署jar包的时候遇到了很多问题。其中一个就是因为没有外置的Tomcat容器...

Canaan_
昨天
0
1
Confluence 6 外部参考

一个外部参考的意思是任何站点链接到你 Confluence 的实例。任何时候当 Confluence 的用户单击这个外部链接的时候,Confluence 可以记录这次单击为参考。 在默认的情况下,外部链接的参考链接...

honeymose
昨天
0
0
Android中的设计模式之抽象工厂模式

参考 《设计模式解析》 第十一章 Abstract Factory模式 《设计模式:可复用面向对象软件的基础 》3.1 Abstract Factory 抽象工厂 对象创建型模式 《Android源码设计模式解析与实战》第6章 创...

newtrek
昨天
0
0
Redis | 地理空间(GEO)的一个坑

Redis的地理空间(Geo)是个好东西,轻轻松松的就可以把地图描点的问题处理了, 最近却遇到一个坑...Redis采用的Msater-Slave模式, 运用GEORADIUS在salve读取对应的数据,新增了从节点但是从不返...

云迹
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部