【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】

文章目录

    • ansible-playbook(2)
    • 创建多个play group模块 user模块
    • 2.条件执行when模块
    • 使用变量并不显示搜集主机相关信息
    • Role角色
    • 目录结构
    • 实战步骤
    • 项目实战:通过ansible上线
    • 批量部署Jenkins

ansible-playbook(2)

group模块参数:
name参数:必须参数,用于指定组名称。
state参数:用于指定组的状态,两个值可选,present,absent,默认为 present,设置为absent 表示删除组。
gid参数:用于指定组的gid。如果不指定为随机
system参数:如果是yes为系统组。–可选
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第1张图片

创建多个play group模块 user模块

总结 要查看一下 你的 包 大小 我做这个发生一件事情,步骤全是对的 宝是0
k 空包 一直报错

主机清单,配置俩个 节点 在一个组里面
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第2张图片

步骤;编写 playbook

[root@web1 playbook2]# vim /etc/ansible/hosts 
[root@web1 playbook2]# vim play.yml

语法;

- hosts: web2
  user: root
  tasks:
  - name: 创建一个组
    group: name=mygrp3 gid=2105 system=true
  - name: 创建一个用户
    user: name=mygrp3 group=mygrp3 system=yes
    
- hosts: web3
  user: root
  tasks:
  - name: 安装 apache
    yum: name=httpd state=installed
  - name: 启动 apache
    service: name=httpd state=started

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第3张图片
检测语法 进行测试;

步骤;# ansible-playbook --syntax-check play.yml 

playbook: play.yml
步骤;# ansible-playbook play.yml
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第4张图片

2.条件执行when模块

先判断when条件是否成立
语法;

when   判断模块
- hosts: webss
  user: root
  tasks:
  - name: 创建文件
    file: path=/root/xiaotian.txt state=touch
  - name: when 判断
    shell: echo "2103加油" >> /root/xiaotian.txt     #2在执行这个模块命令
    when: ansible_hostname == "web2"        #1.先条件执行,先判断when是否成立,如果成立则执行上面命令,ansible-web1指的是被控节点上真正的主机名称

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第5张图片
检测语法 开始执行
步骤;vim when.yml

[root@web1 playbook2]# ansible-playbook --syntax-check when.yml 

playbook: when.yml
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第6张图片
节点查看
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第7张图片
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第8张图片

使用变量并不显示搜集主机相关信息

gather_facts参数:指定了在任务部分执行前,是否先执行setup模块获取主机相关信息,默认值为true,改成false之后在执行过程中不会搜集主机相关信息。

步骤1;创建一个 变量文件,我是创建好了直接查看的

[root@web1 playbook2]# cat files.yml 
- user: "jack"       #user是自定义变量名称,“jack”是变量值
- src_path: "/root/a.txt"    #同上
- dest_path: "/opt/
  • 在这里插入图片描述
- hosts: webss
  user: root
  gather_facts: false     #是否执行setup模块,搜集对方机器的信息
  vars_files:                   #自定义变量  调用变量文件
   - /root/playbook2/files.yml
  tasks:
  - name: 创建用户
    user: name={{ user }}
  - name: 拷贝 文件
    copy: src={{ src_path }} dest={{ dest_path }}

语法;
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第9张图片
检测语法 开始运行
步骤;# ansible-playbook --syntax-check 3user.yml

playbook: 3user.yml
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第10张图片

Role角色

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

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

目录结构

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第11张图片
目录顺序:
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模块调用的模板文本; (也可以调用变量)
site.yml:定义哪个主机应用哪个角色
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第12张图片

实战步骤

下载安装包; yum install -y tree

#roles为自带目录,如果不存在可以创建

步骤1;先创建目录 和目录下面的文件

[root@web1 roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
[root@web1 roles]# ls
nginx  site.yml
[root@web1 roles]# touch nginx/{handlers,tasks,vars}/main.yml

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第13张图片

步骤2; 先输入 nginx 的 网页打开页面
[root@web1 roles]# cat nginx/files/index.html
2103云计算冲冲冲

安装nginx 并配置模块

yum install -y nginx && cp /etc/nginx/nginx.conf nginx/templates/nginx.conf.j2

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第14张图片
步骤3;
编写 tasks里面的main.yml文件 就是任务

- name: 安装 epel源
  yum: name=epel-release state=latest
- name: 开始安装nginx
  yum: name=nginx state=latest
- name: 拷贝 你修改的nginx文件
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
- name: 拷贝 你配置的nginx 主页
  copy: src=/etc/ansible/roles/nginx/files/index.html dest=/usr/share/nginx/html/index.html
  notify: start nginx

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第15张图片
步骤4;
准备配置文件,修改 你想改的端口 或者是是允许多少人链接

[root@ansible-server roles]# vim nginx/templates/nginx.conf.j2
修改成如下内容。自定义变量 端口我这里改成 8080
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第16张图片
编写变量
[root@ansible-server roles]# vim nginx/vars/main.yml #添加如下内容
worker_connections: 2
在这里插入图片描述
步骤5;
编写 触发器

[root@ansible-server roles]# vim nginx/handlers/main.yml #编写如下内容

  • name: start nginx #和notify的名字必须一样
    service: name=nginx state=started
    【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第17张图片

步骤6
编写 剧本 就是针对谁谁谁 执行的
7.编写剧本

[root@ansible-server roles]# vim site.yml
---
- hosts: web2
  user: root
  roles:
   - nginx

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第18张图片
步骤7;
检测语法 进行运行
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第19张图片
节点检测
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第20张图片

项目实战:通过ansible上线

控住节点 先把包 上传 然后进行解压

tar -xvzf apache-tomcat-8.5.45.tar.gz -C /usr/local/
在这里插入图片描述
这里先做一件事情 ,刷新变量 放到文件里面
/usr/local/tomcat/bin 拷贝这个文件到
cp startup.sh /root /root
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第21张图片
vim startup.sh
编辑这个文件 加一个刷新变量的话语
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第22张图片
开始编写 脚本
语法

- hosts: web2
  user: root
  tasks:
  - name: 拷贝jdk
    copy: src=/root/jdk-8u211-linux-x64.tar.gz  dest=/opt
  - name: 拷贝tomcat
    copy: src=/root/apache-tomcat-8.5.45.tar.gz  dest=/opt
  - name: 解压 jdk
    shell: tar xf /opt/jdk-8u211-linux-x64.tar.gz
  - name: 移动并改名字
    shell: mv  jdk1.8.0_211 /usr/local/java
  - name: 添加环境变量
    shell: echo "JAVA_HOME=/usr/local/java" >> /etc/profile
  - name: 配置环境变量
    shell: echo "PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile

  - name: 解压tomcat
    shell: tar xf /opt/apache-tomcat-8.5.45.tar.gz
  - name: 移动并改名字
    shell: mv  apache-tomcat-8.5.45 /usr/local/tomcat
  - name: 拷贝文件启动刷新变量
    copy: src=/root/startup.sh dest=/usr/local/tomcat/bin/startup.sh
    notify: start tomcat
 handlers:
  - name: start tomcat
    shell: nohup /usr/local/tomcat/bin/startup.sh &

开始检测语法

[root@web1 ~]# ansible-playbook --syntax-check tomcat.yml 

playbook: tomcat.yml
分俩部分讲解
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第23张图片

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第24张图片
开始 运行
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第25张图片
节点 检测一下端口 看看有没有起来
netstat -tanlp |grep 80

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第26张图片

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第27张图片
配置完成

批量部署Jenkins

总结 要查看一下 你的 包 大小 我做这个发生一件事情,步骤全是对的 宝是0
k 空包 一直报错

可以做完上面的 把 tomcat 关闭 然后在做这一步 也可以 直接一步到位 看下面截图
【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第28张图片

语法;
- hosts: web3
  user: root
  tasks:
  - name: 传送 jenkins.war
    copy: src=/root/jenkins.war dest=/usr/local/tomcat/webapps
  - name: 启动tomcat
    shell: nohup /usr/local/tomcat/bin/startup.sh &

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第29张图片【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第30张图片
启动 检测

【企业级自动化运维神器/工具Ansible】【多个playbook剧本】【when判断模块】【搜集主机模块】【role角色】【项目实战】【批量部署Jenkins】_第31张图片

你可能感兴趣的:(云计算方向二,jenkins,运维)