ansible批量部署tomcat的方法

1.1 构建目录结构

此操作是安装nginx+mysql+tomcat+db的目录结构,可以参考一下,不错~

mkdir -p /ansible/roles/{nginx,mysql,tomcat,db}/{defaults,files,handlers,meta,tasks,templates,vars}
  • defaults 默认寻找路径
  • tasks 存放playbooks路径
  • files 存放文件和脚本包,copy模块文件搜索路径
  • templates 模版存放路径
  • handlers notify调用部分playbook存放路径
  • vars roles内变量存放路径

1.2 文件目录结构

[root@qtbackup ~]# tree /ansible/
/ansible/
├── playbook
│  └── playbook.yml
├── roles
│  ├── db
│  │  ├── defaults
│  │  ├── files
│  │  ├── handlers
│  │  ├── meta
│  │  ├── tasks
│  │  ├── templates
│  │  └── vars
│  ├── mysql
│  │  ├── defaults
│  │  ├── files
│  │  ├── handlers
│  │  ├── meta
│  │  ├── tasks
│  │  ├── templates
│  │  └── vars
│  ├── nginx
│  │  ├── defaults
│  │  ├── files
│  │  ├── handlers
│  │  ├── meta
│  │  ├── tasks
│  │  ├── templates
│  │  └── vars
│  └── tomcat
│    ├── defaults
│    ├── files
│    │  ├── apache-tomcat-8.0.29.tar.gz
│    │  ├── jdk-8u73-linux-x64.gz
│    │  ├── tomcat-initscript.sh
│    │  └── tomcat-users.xml
│    ├── handlers
│    │  └── main.yml
│    ├── meta
│    ├── tasks
│    │  └── main.yml
│    ├── templates
│    │  └── tomcat-users.xml
│    └── vars
├── ssh_key.sh    ###自动分发sshkey脚本 (下边会完整贴出来)
├── web.retry
└── web.yml     ####总调用文件
34 directories, 11 files[root@qtbackup ~]#

1.3 在ansible目录创建一个总调用文件

- hosts: bgo  ####这个是hosts定义个主机组名字,如果是单台主机可以直接写地址
 remote_user: root     ####执行用户
 roles:           #####解释配置文件目录,因为我们这次装的是tomcat所以注释其他的
 #  - nginx
 #  - mysql
  - tomcat
 #  - db

1.4 创建tomcat安装playbook文件

vim  /ansible/roles/tomcat/tasks/main.yml

#这个是用yum模块安装jdk,有需要的可以用
#- name: install java
# yum: name=java-1.8.0-openjdk.x86_64  state=present

===============================================================
#创建用户
- name: group
 group: name=tomcat
- name: user
 user: name=tomcat group=tomcat home=/usr/tomcat
 sudo: True

##############################这个源码包安装JDK#############################
#复制jdk到tmp目录下
- name: copy jdk-8u73-linux-x64.gz
 copy: src=jdk-8u73-linux-x64.gz dest=/tmp/jdk-8u73-linux-x64.gz
#解压jdk包到/application
- name: Extract archive jdk
 command: /bin/tar xf /tmp/jdk-8u73-linux-x64.gz -C /application
#改名
- name: java
 shell: mv /application/jdk1.8.0_73 /application/java
#添加环境变量
- name: add /etc/profile
 lineinfile: dest=/etc/profile regexp="^JAVA_HOME=" line="JAVA_HOME=/application/java/"
- name: add /etc/profile
 lineinfile: dest=/etc/profile regexp="^CLASS_PATH=" line="CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib"
- name: add /etc/profile
 lineinfile: dest=/etc/profile regexp="^PATH=\$PATH:\$JAVA_HOME" line="PATH=$PATH:$JAVA_HOME/bin"
- name: add /etc/profile
 lineinfile : dest=/etc/profile regexp="^export JAVA_HOME" line="export JAVA_HOME"

##########################安装tomcat###########################################
- name: copy tomcat_tar_gz
 copy: src=apache-tomcat-8.0.29.tar.gz dest=/tmp/apache-tomcat-8.0.29.tar.gz
#解压tomcat到opt目录
- name: Extract archive
 command: /bin/tar xf /tmp/apache-tomcat-8.0.29.tar.gz -C /opt
#创建软连接
- name: Symlink install directory
 file: src=/opt/apache-tomcat-8.0.29/ dest=/application/tomcat state=link
#赋予目录权限
- name: Change ownership of Tomcat installation
 file: path=/application/tomcat/ owner=tomcat group=tomcat state=directory recurse=yes
#推送配置文件
- name: Configure Tomcat users
 template: src=tomcat-users.xml dest=/application/tomcat/conf/
 notify: restart tomcat
#安装tomcat。init启动脚本
- name: Install Tomcat init script
 copy: src=tomcat-initscript.sh dest=/etc/init.d/tomcat mode=0755
#开启tomcat
- name: Start Tomcat
 service: name=tomcat state=started enabled=yes

1.5 通过notify调用handlers

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

1.6 语法检测===执行安装

cd /ansible
ansible-playbook web.yml --syntax-check #检查语法
ansible-playbook web.yml #执行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ansible作为python模块库使用的方法实例

    前言 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. 主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操作的主机,

  • linux 自动化运维工具ansible的使用详细教程

    一.ansible简介 1.ansible ansible是新出现的自动化运维工具,基于Python研发.糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能.仅需在管理工作站上安装ansible程序配置被管控主机的IP信息,被管控的主机无客户端.ansible应用程序存在于epel(第三方社区)源,依赖于很多python组件.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操

  • Centos下安装Ansible的示例代码

    ansible ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: 连接插件connection plugins:负责和被监控端实现通信: host inventory:指定操作的主机,是一个

  • 集群运维自动化工具ansible之使用playbook安装zabbix客户端

    之前介绍了关于ansible的安装与使用(包括模块与playbook使用,地址是http://www.jb51.net/article/52154.htm),今天介绍一下如何使用playbook来部署zabbix客户端. ansible服务端的环境为centos 6.5 x86_64系统 ansible客户端环境为centos 6.3 x86_64系统 目前我的playbook只允许centos或redhat 6系列系统来安装zabbix客户端,并且客户端的版本是2.0.6. 下面是playbo

  • Alpine镜像中telnet转移至busybox-extras

    Alpine镜像中的telnet在3.7版本后被转移至busybox-extras包中,需要使用apk单独安装. 现象 Alpine版本为3.8, 不再有指向busybox的telent ~ # cat /etc/alpine-release 3.8.0 ~ # ~ # ls /usr/bin/ |grep -w busybox |grep telnet ~ # 原因 确认了相关的issue发现,在Alpine3.7时就已经有了这个变化:https://github.com/gliderlabs

  • 基于alpine用dockerfile创建的爬虫Scrapy镜像的实现

    一.下载alpine镜像 [root@DockerBrian ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a94

  • python ansible服务及剧本编写

    第1章 ansible软件概念说明 python语言是运维人员必会的语言,而ansible是一个基于Python开发的自动化运维工具 (saltstack).其功能实现基于SSH远程连接服务:ansible可以实现批量系统配置.批量软件部署.批量文件拷贝.批量运行命令等功能 ansible软件相关参考链接信息: http://docs.ansible.com/ansible/intro_installation.html http://www.ansible.com.cn/ http://doc

  • 基于alpine用dockerfile创建的tomcat镜像的实现

    1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a94dbd

  • Docker从零构建php-nginx-alpine镜像的方法

    虽然之前也曾用docker环境运行了一些项目,但对于镜像这块还不是很理解,且鉴于网上现成的镜像都包含太多用不到的库,所以决定从零开始构建一个自己的镜像. alpine linux为基础镜像 docker pull gliderlabs/alpine alpine linux 镜像地址 目前最新的tag是3.8版本,镜像只有4M的大小,非常的精简. 运行镜像 docker run -it gliderlabs/alpine 运行后可以看到里面有基本的linux文件系统,这里不做演示,有兴趣者可自行

  • 在alpine镜像中添加ansible服务的方法

    使用apk add ansible即可在alpine镜像中添加ansible服务. 添加步骤 在alpine中使用ansible需要如下几步 Dockerfile 在Dockerfile中添加上面的语句: #update apk for install RUN apk update #install ansible and openssh RUN apk add ansible openssh #init ansible hosts file RUN mkdir -p /etc/ansible

随机推荐