春花秋月何时了,Ansible运维神器你知多少?--实战演练

下面这些实战每一步我会进行详细解释,但是如果有些参数你还是看不到,那么请参考ansible各种参数详解以及实例如果ansible你还没有安装,这里面也有安装方法。

1.Role角色的应用与详解

oles则是在ansible中,playbooks的目录组织结构。而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。

实战目标:通过role远程部署nginx并配置

两台机器配置本地解析
[root@ansible-server ~]# vim /etc/hosts
192.168.13.128    ansible-server
192.168.13.129  ansible-web4
[root@ansible-web4 ~]# vim /etc/hosts
192.168.13.128    ansible-server
192.168.13.129   ansible-web4
添加主机组
[root@ansible-server ansible]# vim /etc/ansible/hosts
[webservers4]
ansible-web4
配置免密登录:
[root@ansible-server ~]# ssh-copy-id -i 192.168.13.129
#也可以添加多个被控制节点,这样你就可以同时安装多台
#如果你的其它机器上安装了nginx可以使用 yum remove nginx进行卸载

1.目录结构:

春花秋月何时了,Ansible运维神器你知多少?--实战演练_第1张图片

目录顺序:
role_name/     ---角色名称=目录
    files/:存储一些可以用copy调用的静态文件。
    tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用; 
    handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用; 
    vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用; 
    templates/:存储由template模块调用的模板文本; (也可以调用变量)(以.j2结尾)
    site.yml:定义哪个主机应用哪个角色
=========================================================================================
准备目录结构
[root@ansible-server ~]# cd /etc/ansible/roles/  #role为自带目录,如果不存在可以创建
[root@ansible-server roles]# mkdir nginx/{files,handlers,tasks,templates,vars} -p
创建文件:
[root@ansible-server roles]# touch site.yml nginx/{handlers,tasks,vars}/main.yml
[root@ansible-server roles]# yum install -y tree

春花秋月何时了,Ansible运维神器你知多少?--实战演练_第2张图片

1.创建nginx的测试文件
[root@ansible-server roles]# echo 1234 > nginx/files/index.html
2.安装nginx并配置模板
[root@ansible-server roles]# yum -y install epel-release ; yum -y install nginx #yum 安装nginx
[root@ansible-server roles]#  cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2   #.j2(jin jia 2 模板)
3.编写任务
[root@ansible-server roles]# vim nginx/tasks/main.yml
---
- name: install epel
  yum: name=epel-release state=latest
- name: install nginx
  yum: name=nginx state=latest
- name: copy nginx.conf templte         
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf     #template(默认路径在template下面)当然你写绝对路径也可以
- name: copy index.html
  copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
  notify: start nginx     #与下面handlers中的名字保持一致
4.编写handlers
[root@ansible-server roles]# vim nginx/handlers/main.yml #编写如下内容
---
- name: start nginx  #和notify的名字必须一样
  service: name=nginx state=started         #启动
5.编写变量
[root@ansible-server roles]# vim nginx/vars/main.yml  #添加如下内容
worker_connections: 2          #变量 : 值

6.准备配置文件
[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
修改成如下内容。其实就是将1改为了2

春花秋月何时了,Ansible运维神器你知多少?--实战演练_第3张图片

7.编写剧本
[root@ansible-server roles]# vim site.yml
---
- hosts: webservers4
  user: root
  roles:
   - nginx       #指的就是nginx那个目录
检测语法
[root@ansible-server roles]# ansible-playbook site.yml --syntax-check
playbook: site.yml
执行剧本:
[root@ansible-server roles]# ansible-playbook site.yml

查看:

[root@ansible-web4 ~]# cat /etc/nginx/nginx.conf | grep pro
worker_processes  2;

春花秋月何时了,Ansible运维神器你知多少?--实战演练_第4张图片

2.## 通过ansible上线批量部署Jdk+Tomcat

三台机器配置本地解析,一台做控制节点,另外两台做被控制节点
[root@ansible-server ~]# vim /etc/hosts
192.168.13.128    ansible-server
192.168.13.129    ansible-web1
192.168.13.133   ansible-web2
[root@ansible-web1 ~]# vim /etc/hosts
192.168.13.128    ansible-server
192.168.13.129    ansible-web1
192.168.13.133   ansible-web2
[root@ansible-web2 ~]# vim /etc/hosts
192.168.13.128    ansible-server
192.168.13.129    ansible-web1
192.168.13.133   ansible-web2
添加主机组
[root@ansible-server ansible]# vim /etc/ansible/hosts
[webservers]
ansible-web1
ansible-web2
配置免密登录:
[root@ansible-server ~]# ssh-copy-id -i 192.168.13.129
#也可以添加多个被控制节点,这样你就可以同时安装多台

如果你找不到安装包,这里有网盘地址
JDK+tomcat 密码:22ib

注意:如果你的安装包跟我的不一样,不要直接粘贴我的代码
[root@ansible-server ~]# cd /usr/src
[root@ansible-server src]# tar -xf apache-tomcat-8.5.45.tar.gz #解压
[root@ansible-server src]# cp apache-tomcat-8.5.45/bin/startup.sh .  #将可执行文件拷贝过来
[root@ansible-server src]# ls      #上传到这个目录下
apache-tomcat-8.5.45         debug                       kernels     tomcat.retry
apache-tomcat-8.5.45.tar.gz  jdk-8u211-linux-x64.tar.gz  startup.sh  tomcat.yml
[root@ansible-server src]# cat tomcat.yml 
- hosts: webservers
  user: root
  tasks:
##配置JDK,上传jdk、tomcat的安装包到/usr/src
  - name: configure Jdk1.8
    copy: src=/usr/src/jdk-8u211-linux-x64.tar.gz  dest=/usr/src
  - name: unzip
    shell: tar -xvzf /usr/src/jdk-8u211-linux-x64.tar.gz -C /usr/local
  - name: rename to java
    shell: mv /usr/local/jdk1.8.0_211 /usr/local/java   #改名为java
  - name: configure envirement1
    shell: echo "JAVA_HOME=/usr/local/java" >> /etc/profile
  - name: configure envirement2
    shell: echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
##Tomcat
  - name: copy tomcat
    copy: src=/usr/src/apache-tomcat-8.5.45.tar.gz dest=/usr/src
  - name: unzip tomcat
    shell: tar -xvzf /usr/src/apache-tomcat-8.5.45.tar.gz -C /usr/local
  - name: rename to tomcat
    shell: mv /usr/local/apache-tomcat-8.5.45 /usr/local/tomcat
  - name: copy startup file
    copy:  src=/usr/src/startup.sh dest=/usr/local/tomcat/bin
    notify: start tomcat
  handlers:
  - name: start tomcat
    shell: nohup /usr/local/tomcat/bin/startup.sh   nohup: 忽略输入并把输出追加到"nohup.out"
[root@ansible-server src]# vim startup.sh 
添加如下代码
#!/bin/sh
source /etc/profile          #ansible是不登录用户直接远程执行,不会加载/etc/profile配置文件

如果上面的安装步骤你看不懂,可以参考tomcat安装详解这篇文章

分别去两台机器上查看是否安装成功

[root@ansible-web1 ~]# /usr/local/tomcat/bin/version.sh         #查看是否安装成功
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.45
Server built:   Aug 14 2019 22:21:25 UTC
Server number:  8.5.45.0
OS Name:        Linux
OS Version:     3.10.0-693.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_211-b12
JVM Vendor:     Oracle Corporation
[root@ansible-web2 ~]# /usr/local/tomcat/bin/version.sh         #查看是否安装成功
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.45
Server built:   Aug 14 2019 22:21:25 UTC
Server number:  8.5.45.0
OS Name:        Linux
OS Version:     3.10.0-693.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_211-b12
JVM Vendor:     Oracle Corporation

可以看到两台被控制节点都成功安装了JDK+tomact。
然后访问网页http://192.168.13.129:8080/
春花秋月何时了,Ansible运维神器你知多少?--实战演练_第5张图片
然后访问网页http://192.168.13.133:8080/
春花秋月何时了,Ansible运维神器你知多少?--实战演练_第6张图片

你可能感兴趣的:(linux,jdk,tomact,运维)