当前位置: 首页 > news >正文

使用ansible的角色实现批量安装nginx服务

1.任务步骤

步骤:

  1. 创建工作目录
  2. 创建清单文件
  3. 创建配置文件
  4. 创建剧本文件
  5. 创建角色目录结构
  6. 实现任务
    6.1 挂载仓库
    6.2 安装nginx
    6.3 编写欢迎页面
    6.4 启动nginx
    6.5 配置防火墙规则
  7. 定义页面模板
  8. 定义处理器
  9. 完善剧本功能
  10. 访问测试

1.创建工作目录

mkdir nginxroles -p
cd nginxroles

2.创建清单文件

mkdir inventory
cd inventory
vim hosts
[server]
ansible-node1
ansible-node2

3. 创建配置文件

 vim ansible.cfg[defautls]inventory=inventory/hosts

4.创建剧本文件

 touch site.yml

5.创建角色目录结构

mkdir roles
cd roles
ansible-glaxy init nginx
touch site.yml

6.1 挂载仓库
roles/nginx/tasks/mount.yml

vim mount.yml
---
- name: mount mount:src: /dev/sr0 path: /mntfstype: iso9660state: persent

6.2 安装nginx
roles/nginx/tasks/dnf.yml

vim dnf.yml
---
- name: install nginxdnf:name: nginxstate: installed

6.3 编写欢迎页面
roles/nginx/tasks/index-page.yml

vim index-page.yml
---
- name: template:src: index.htmldest: /usr/share/nginx/index.html  

6.4 启动nginx
roles/nginx/tasks/start-nginx.yml

vim start-nginx.yml
---
- name: start nginxservice:name: nginxstate: started

6.5 配置防火墙规则
roles/nginx/tasks/firewalld.yml

vim firewalld.yml  
---
- name:firewalld:port: 80/tcpstate: enabledpermanent: yesnotify: restart firewalld

6.6 配置主角色文件

vim main.yml
---
- include-tasks: mount.yml
- include-tasks: dnf.yml
- include-tasks: index-page.yml
- include-tasks: firewalld.yml
- include-tasks: start-nginx.yml

7. 定义页面模板
roles/nginx/templates/main.yml

vim main.yml
<html>
<head>
<meta charset="UTF-8">
<title>index.html</title>
</head>
<body>
<h1>{{ index_content }}</h1>
</body>
</html>

8.定义页面欢迎模板
roles/mginx/vars/main.yml

vim main.yml
---
index_content: "welcome to nginx service"
  1. 定义处理器
    roles/nginx/handlers/main.yml
vim main.yml  
---
- name: restart firewalldservice:name: firewalldstate: reloaded

10. 完善剧本功能
nginxroles/site.yml

vim site.yml    
--- 
- name:hosts: serverroles:nginx

11. 访问测试
ansible-playbook site.yml

http://www.dtcms.com/a/268731.html

相关文章:

  • ReAct (Reason and Act) OR 强化学习(Reinforcement Learning, RL)
  • [特殊字符] Python 实战 | 批量统计中文文档词频并导出 Excel
  • iOS 出海 App 安全加固指南:无源码环境下的 IPA 加固与防破解方法
  • Spring的Bean原型模式下的使用
  • OpenWebUI(3)源码学习-后端models数据模型模块
  • 【论文撰写】如何把AI生成的文本公式复制在word中,完整的复制公式,拷贝豆包生成的公式
  • 网络安全之注入攻击:原理、危害与防御之道
  • 文件IO day29
  • 代码幽灵5-终局:静默编译
  • Baklib: 用 “技术轻量化” 解决内容管理 “重需求”
  • Linux命令的命令历史
  • 大数据在UI前端的应用创新:基于情感计算的用户体验优化
  • 冠能高端系列真实口碑如何
  • TCP backlog工作机制
  • AI时代,传统票务系统该往哪里使劲?
  • 华为手机如何扫描到SLE设备
  • 如何备份vivo手机中的联系人?
  • “猫攻击”揭示推理模型脆弱性,凸显上下文工程的重要性
  • 存储器介绍
  • React16,17,18,19新特性更新对比
  • 面向智驾的车规级高精度RTK模块UM680A的引脚功能
  • Git在Pycharm中的使用
  • web网页开发,在线%ctf管理%系统,基于html,css,webform,asp.net mvc, sqlserver, mysql
  • 【论文阅读】SASLN:小样本条件下机械故障诊断的信号增强自学习网络
  • Redis常用数据结构以及多并发场景下的使用分析:Set类型
  • react状态管理库 - zustand
  • BitMart“滑点守护计划”二期重磅升级,定义安心交易新纪元
  • Redis哨兵模式之Sentinel模式(二)
  • vue3 强制刷新 forceUpdate
  • 关于使用shiro中Session的使用导致的Java 对象引用问题