文档章节

ansible playbook 基础应用

eddy_linux
 eddy_linux
发布于 2015/11/21 16:01
字数 988
阅读 425
收藏 4
点赞 0
评论 0
安装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

运维自动化之ansible--(playbook模式)

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

lc01081314 ⋅ 2017/12/07 ⋅ 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 ⋅ 2016/03/31 ⋅ 0

运维自动化|系统运维|Ansible的安装及配置使用

安装ansible # yum -y install epel-release # yum list all ansible # yum info ansible # yum -y install ansible ansible配置文件 /etc/ansible/ansible.cfg 主配置文件 /etc/ansible/hos......

gaoge ⋅ 2016/09/23 ⋅ 0

自动化运维工具ansible详解

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

ccs_Chan ⋅ 2017/05/25 ⋅ 0

为什么Ansible在自动化编排成为王者!

Ansible是一个广泛应用的自动化平台,在devops和自动化方面具有特别的优势。 如果有“改进的IT编排和配置管理工具最多”的奖项,红帽的Ansible将成为最具竞争力的竞争者。自2012年由Michael...

云技术实践 ⋅ 05/09 ⋅ 0

ansible 的Playbook

实验前准备:各主机之间实现ssh相互登录,关闭防火墙,SELinux,同步时间 Playbook:YAML(可读性高,用来表达数据序列的格式)格式,任务(task) 可以用YAML脚本批量执行计划好的命令,从而...

工运搬维运 ⋅ 2017/11/26 ⋅ 0

ansible批处理

下面介绍的是ansible相关 一、ansible基础 1、ansible简介 ansible 是基于模块工作的,具有三个主要的功能,分别是:批量系统配置、批量程序部署、批量运行命令。 ansible 的架构组成有:连接...

little_ding ⋅ 2017/11/07 ⋅ 0

2017 11-17 ansible应用

一.ansible (1) ansible: ansible是一款新出现的自动化运维系统,基于python开发并集合了众多运维工具的优点,实现批量系统配置,具有程序部署,批量运行命令等功能。工作特点是基于模块化工...

楠人帮 ⋅ 2017/11/19 ⋅ 0

脚本中实现Ansible的playbook的方法

脚本说明 project -- 操作的项目输入 playbook -- 远程服务器执行的规则定义 脚本

HelloEric ⋅ 2015/09/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

对于程序员的招聘问题,作为软件人的一些吐槽和建议

作为软件人,找工作有时候似乎挺苦逼的。 说真的,让我去掉前面这句中“似乎”二字吧。就是苦逼!很多人都曾抱怨处在招聘的一方很糟糕——我们没有任何可靠的方式来甄别会写代码并且写得好的...

老道士 ⋅ 33分钟前 ⋅ 0

HDFS原理学习

一、概述 1、 Hadoop整合了众多的文件系统,首先提供了一个高层的文件系统抽象org.apache.hadoop.fs.FileSystem。然后有各个文件系统的实现类。 2、Hadoop是JAVA编写的,不同文件系统之间的交...

cjxcloud ⋅ 37分钟前 ⋅ 0

Linux下MySQL表名不区分大小写的设置方法(抄袭别人的)

Linux下MySQL表名不区分大小写的设置方法 MySQL表名不区分大小写的设置方法 在用centox安装mysql后,把项目的数据库移植了过去,发现一些表的数据查不到,排查了一下问题,最后发现是表名的大...

随风而浮沉 ⋅ 42分钟前 ⋅ 0

ubuntu下安装宋体simsun

sudo cp simsun.ttc /usr/share/fonts cd /usr/share/fonts sudo chmod 644 simsun.ttc 更新字体缓存: 代码: sudo mkfontscale 代码: sudo mkfontdir 代码: sudo fc-cache -fsv 安装chrome扩......

wangxuwei ⋅ 43分钟前 ⋅ 0

利用 ssh 传输文件

Linux 下一般可以用 scp 命令通过 ssh 传送文件: #把服务器上的 /home/user/a.txt 发送到本机的 /var/www/local_dir 目录下scp username@servername:/home/user/a.txt /var/www/local_dir...

大灰狼时间 ⋅ 53分钟前 ⋅ 0

web3j教程:android和java程序员如何使用web3j开发区块链以太坊

如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤...

智能合约 ⋅ 今天 ⋅ 0

web3j开发java或android以太坊智能合约快速入门

web3j简介 web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 可以通过它进行以太坊区块链...

笔阁 ⋅ 今天 ⋅ 0

一起读书《深入浅出nodejs》-异步I/O

异步I/O “异步”这个名词其实很早就诞生了,但它大规模流行却是在Web 2.0浪潮中,它伴随着AJAX的第一个A(Asynchronous)席卷了Web。 为什么要异步I/O 关于异步I/O为何在Node里如此重要,这与...

小草先森 ⋅ 今天 ⋅ 0

JVM各种问题

1、如果启动什么都不设,会怎样? 先来看一个命令 [root@localhost bin]# java -XX:+PrintCommandLineFlags -version -XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCo......

算法之名 ⋅ 今天 ⋅ 0

SAS笔记-宏2

宏是一种文本,一般来说其编译是在程序执行之前。 宏变量的创建 %let语句 %let macro_variables = text; %let是常见的宏变量建立方式,其编译就在执行前。如下例中,想要宏变量test等于数据集...

tonorth123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部