Ansible(10)第一份练习

阶段性总结

我们学习过了apt,yum,zypper,copy等模块,大家肯定觉得很无聊。

下面来点实际的。

实际案例:

  • tomcat批量配置

只有上面几个模块的知识,也足够我们编排一个Playbook来配置大批量的物理/虚拟服务器了。

实际场景

某公司申请了云计算100台虚拟机,需要进行环境搭建。先不过问这个环境搭建来干啥,我们先聚焦在环境搭建其中一步:tomcat安装配置。

步骤分析

tomcat安装很简单,大家都懂。

1. 安装jdk

2. 创建tomcat用户等等

3. 安装tomcart

4. 配置tomcat,重启。

那么我们如何写playbook?

1. 定义Hosts

2. 定义roles

3. 定义vars

4. 编排playbook

既然都分析到这了,我们就开始吧?以下的playbook可以在我的csdn代码库找到。

定义Host

新建hosts文件,这个文件名字推荐你固定记住它。

[tomcat-servers]
webserver1
webserver2
webserver3

这就定义好了host,这里的xx.xx.xx.xx可以等于localhost,127.0.0.1,192.168.1.1等等。jdk标签下可以指定多个服务器ip。

定义roles

新建site.yml文件,当然名字可以自己定义。

---
# This playbook deploys a simple standalone Tomcat 7 server. 

- hosts: tomcat-servers
  user: root

  roles:
    - tomcat

这就定义好了我们这个playbook的第一个最简单的主“函数”——site.yml。它告诉ansible,要在hosts文件里的jdk标签下得所有服务器以root身份执行jdk这个roles定义的动作。

定义var

既然是编排,我们肯定希望jdk的安装位置,或者版本信息可以自定义吧?

# Here are variables related to the Tomcat installation

http_port: 8080
https_port: 8443

# This will configure a default manager-gui user:

admin_username: admin
admin_password: adminsecret

这定义的就是vars,处于group_vars/tomcat-servers,tomcat-servers需要与hosts里面的标签一致。否则默认是找不到vars的。

编排playbook

---
- name: Install Java 1.7
  yum: name=java-1.7.0-openjdk state=present

- name: add group "tomcat"
  group: name=tomcat

- name: add user "tomcat"
  user: name=tomcat group=tomcat home=/usr/share/tomcat
  sudo: True

- name: delete home dir for symlink of tomcat
  shell: rm -fr /usr/share/tomcat
  sudo: True

- name: Download Tomcat
  get_url: url=http://www.us.apache.org/dist/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.tar.gz dest=/opt/apache-tomcat-7.0.55.tar.gz

- name: Extract archive
  command: chdir=/usr/share /bin/tar xvf /opt/apache-tomcat-7.0.55.tar.gz -C /opt/ creates=/opt/apache-tomcat-7.0.55

- name: Symlink install directory
  file: src=/opt/apache-tomcat-7.0.55 path=/usr/share/tomcat state=link

- name: Change ownership of Tomcat installation
  file: path=/usr/share/tomcat/ owner=tomcat group=tomcat state=directory recurse=yes

- name: Configure Tomcat server
  template: src=server.xml dest=/usr/share/tomcat/conf/
  notify: restart tomcat

- name: Configure Tomcat users
  template: src=tomcat-users.xml dest=/usr/share/tomcat/conf/
  notify: restart tomcat

- name: Install Tomcat init script
  copy: src=tomcat-initscript.sh dest=/etc/init.d/tomcat mode=0755

- name: Start Tomcat
  service: name=tomcat state=started enabled=yes

- name: deploy iptables rules
  template: src=iptables-save dest=/etc/sysconfig/iptables
  notify: restart iptables

- name: wait for tomcat to start
  wait_for: port={{http_port}}

按照上面编排就行了。其中有些模块前面没做介绍,作为大家自己研究的课题:)。

上面的playbook位于roles/tomcat/tasks/main.yml。

playbook的附件

上面playbook中有template还有file模块

2个都是用来把配置文件从本地拷贝到远程节点上。其区别后面章节专门介绍。

template的配置文件在roles/templates/里。

file的配置文件在roles/files里。

也有Handler,就是notify开头的部分,也是后面章节介绍。

---
- name: restart tomcat
  service: name=tomcat state=restarted

- name: restart iptables
  service: name=iptables state=restarted

上面的handler位于roles/handlers/main.yml。

这就简单的完成了,tomcat的部署。还可定义节点以及tomcat-manager的管理员密码:)。

本章节,有部分超前,但是不妨碍大家了解ansible。

时间: 2024-10-05 17:34:57

Ansible(10)第一份练习的相关文章

说说我的第一份实习工作

可能,下星期就是我丢掉我这第一份工作的时间. 算下时间,下星期的21号正好是这第一份工作的第二个月,整整两个月的时间.是啊,整整两个月的时间,还是没能掌握功能手机的UI定制和程序编写.真是,太失败了! 一直以来的编程开发都是靠着搜索引擎与开源社区,看的书都很少,所以对一些系统的知识本来就不是很了解.再加上现在这个RDA的功能手机定制平台在搜索引擎之中都是无法搜索到的,所以到现在,都无法编写一个真正意义上的独立程序. 目前能够完成的开发功能也就是在原有程序的基础上进行覆盖,然后在模拟器屏幕上面显示

第一份代做毕设收入

Cache是位于CPU寄存器与内存之间的存储器,它的容量比内存小但交换速度快. Cache的工作原理 1.读取顺序 当数据从内存读入时,整行的数据(16~32字节)被装入Cache,如果程序具有良好的地址引用局部性(顺序浏览一个字符串),那么CPU以后对邻近数据的引用就可以从快速的Cache读取,而不用从缓慢的内存读取.典型情况下,主存的存取速度可能只有Cache的四分之一. CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理:如果没有找到,就用相对慢的速度从内存

工作中的第一份LoadRunner脚本

录制的第一份脚本 虽然是第一份但是调试执行,跑场景等都成功了. Action() { web_url("login1.jsp", "URL=http://192.168.1.102:8080/eos-default/countrules/login1.jsp", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=&

小白终于找到了第一份实习,分享一波经历

img{ width: 40%; padding-left: 20%; } 就在前两天的半夜,没错北京时间的半夜,我终于收到了BAT中一家的实习offer,当场我就蹦起来了,因为这个过程真的太艰难太曲折了!甚至令人绝望!还好最后被捞起来了,下面开始分享我这一路的找实习的经历.然后,虽然狗头是研究生才开始学编程算法之类的,然后又不甘心做数据分析一类的工作,所以投的基本都是算法岗,如机器学习,自然语言处理一类的. 期间使用过的平台app 用的最多的就是 拉钩招聘 app,也就是拉勾网.平台上的公司和

写给自己第一份人生参照(2015/10)

我的人生格言:我傲娇,但我恪守原则! 对于生活: 对于正在学习的英语,还有一些其他正在看的书籍,虽然都在进行时,但是还是不得不批评自己,干什么都不太认真,怎么做好!,从工作到现在也有一年了,人们都说首先应该会的是“内敛,低调,含蓄”,不得不说我的功夫不到家.一年中碰到形形色色的人,生活也给了蛮大的压力,对于我来说,这一年过的还可以收获了友情,知识,作为程序员学习知识真的是一件很痛苦的事,究其原因面对看都看不完的知识,不知如何下手,不过看过一篇博客,前辈说刚刚工作尽可能的去学,可以说不用想这个该不

课本P364 15.10第一题 作业

public class ZuoYe extends Thread { public void run(){ for(int i=1;i<=10;i++) { System.out.println("我爱你,么么哒!"+i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } public static void

IOS-7-纪念一下刚刚接到的第一份offer(下面是面试遇到的问题)

1.多线程技术 有四种开启线程的方式,基本的为:NSThread.NSOperation.GCD:还有一种已经老掉牙了.基于C语言.就不写了,基本不用. 样例:家在网络图片显示在手机界面上 第一步:代码块开启异步子线程载入网络数据: [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueuenew] 第二步:载入完毕之后.开启主线程,将数据放到主线程中进行处理: dispatch_async(dispatch_

9.10 第一题 方程的解 题解

这道题当时感觉是一道几乎纯考扩展欧几里得的题,然而板子忘了--于是乎这道题被我放在第二个打. 不得不说出题人相当良心,给了大把的暴力分前20分就是c-1,20~40暴力枚举,40~60输出1.白送的60分就到手了. 然而难得是后40分,我们可以先通过扩展欧几里得先求出x最小整数解,然后首先,自己本身就无解的方程输出0就好了,其次,如果a,b中有一个为零那么就是无限解如果都为0就看c,如果异号就是无限解等等等等特判,然后就没什么了,注意要开long long,细节真心坑,而且特判的顺序也极其重要.

第一份PHP程序

<?php list($ncase) = fscanf(STDIN,"%d"); // 标准输入 for($n=0;$n<$ncase;++$n){ $x = 1; list($str) = fscanf(STDIN,"%s"); // 标准输入 for($i=0;$i<strlen($str);++$i){ $ch = substr($str,$i,1); // 遍历字符串 if($ch=='l') $x = $x<<1; else