ansible - Role

news/2024/7/7 21:44:14 标签: 大数据, nginx, linux, 服务器, ansible

1、简介:

Ansible 中的角色(Role)是一种组织和封装Playbook的方法,用于管理和组织 Ansible代码。它可以将任务和配置逻辑模块化,以便在不同的Playbook中共享和重用。

2、通过 role 远程部署并配置 nginx

(1) 准备目录结构:

mkdir  roles/nginx/{files,handlers,tasks,templates,vars}  -p

touch  roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml

echo  1234 > roles/nginx/files/index.html

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

● files:存放需要复制到目标主机的文件。

● handlers:存放角色的处理器(handlers),这些处理器用于在需要时触发某些操作,通常与任务相关。

● tasks:角色的主要任务列表。

● templates:存放模板文件,并部署到目标主机。

● vars:存放角色的其他变量。

(2) 编写任务 tasks

vim roles/nginx/tasks/main.yaml

---

- name: install epel-release packge
  yum: name=epel-release state=latest

- name: install nginx packge
  yum: name=nginx state=latest

- name: copy index.html
  copy: src=index.html dest=/usr/share/nginx/html/index.html

- name: copy nginx.conf template
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
  notify: restart nginx

- name: make sure nginx service running
  service: name=nginx state=started enabled=yes

(3) template:

① 简介:

使用 Jinja2 模板引擎编写包含变量和表达式的动态配置文件

② 作用:

在 Jinja2 模版中的文件允许存在变量 ;变量在拷贝时会经过一次转换,拷贝到客户机时先调用变量,将调用的值替换变量,再拷给客户机。

③ 示例:

vim  roles/nginx/templates/nginx.conf.j2

调用已知变量:

worker_processes  {{ ansible_processor_cores }};

● Jinja2 模版变量格式为 {{ 变量名 }},若编写在普通文件中,剧本是将 worker_processes {{ ansible_processor_cores }} 直接拷贝到客户机,但在 Jinja 文件中,变量会先转换成对应的值 (1),再拷贝给客户机。

● 此处的 worker_processes 不能设置成 auto,否则每次执行剧本时都会先检索 CPU 数量。

调用自定义变量:

worker_connections  {{ worker_connections }};

自定义变量在 vars 下的 main.yaml 里进行声明(vim roles/nginx/vars/main.yaml)

(4) 编写处理程序 handlers:

在 tasks 的 main.yaml 里编写了触发器 notify: restart nginx,其对应的处理器程序在 handlers 下的 main.yaml 里编写。(handlers 的 main.yaml 里存放了剧本所有的处理程序)

vim roles/nginx/handlers/main.yaml

---

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

(5) 编写总剧本 site.yaml

vim roles/site.yaml

- host: host1
  roles:
  - nginx

(6) 执行剧本

① 检查剧本的语法:

ansible-playbook  site.yaml  --syntax-check

不用检查每个目录下的 yaml 文件,因为这些文件不完整,只是一个剧本中的一部分。

② 执行剧本:

ansible-playbook  site.yaml

3、ansible 补充

(1) 使用 ansible 循环创建多个用户

vim createUser.yaml

- hosts: host1
  tasks:

  - name: create users
    user: name={{ item }} state=present groups=wheel
    with_items:
    - testuser1
    - testuser2

groups=wheel 是在创建用户时为用户指定的附加用户组。在默认情况下,wheel 组通常被授权通过sudo来执行系统命令,这意味着成员可以以超级用户(root)权限执行命令,从而获得对系统的更高控制权。

(2) 服务器托管

服务器托管又称主机托管,指将服务器及相关设备托管到具有完善机房设施、高品质网络环境、丰富带宽资源和运营经验以及可对用户的网络和设备进行实时监控的网络数据中心内。它摆脱了虚拟主机受软硬件资源的限制,能够提供高性能的处理能力,提高网站的访问速度,同时有效降低维护费用和机房设备投入、线路租用等高额费用。

(3) CDN 技术

CDN(Content Delivery Network)内容分发网络,是一种网络架构和服务,旨在改善互联网上的内容传输速度、性能和可用性。CDN通过将内容存储在位于全球各地的服务器上,使内容更靠近最终用户,从而减少了网络传输延迟,提高了网站和应用程序的加载速度,并提供更好的用户体验。CDN技术的主要目标是加速内容交付,减少服务器负载,提高可靠性和安全性。


http://www.niftyadmin.cn/n/5073832.html

相关文章

linux安装idea

下载好之后是.tar.gz文件后缀的 使用命令解压安装包 tar -zxvf 你的安装包 解压好了之后进入解压好的目录找到bin文件里的idea.sh,使用命令启动它 ./idea.sh 这样你就可以在manjaro上使用idea了 在这里插入图片描述 需要手动创建快捷启动方式 每次都使用命令行启动是比较…

【Qt】顶层窗口和普通窗口区别以及用法

区别 在Qt项目开发中,经常会用到窗体控件用于显示及数据操作和其他交互等。 但,窗体分为顶层窗口(Top-level Window)和普通窗口(Regular Window)。 他们之间是有区别的,包括在项目实际中的用法…

封装localStorage,支持切换存储引擎 sessionStorage,支持vue hook方式调用

封装storage存储class // MyStorage.ts export enum StorageType {session session,local local } export class MyStorage {/** 存储key值前缀 */private prefix: string/** 单例的实例 */private static _instance: Map<string, MyStorage>private storage: Storage…

vmware一键启动虚拟机系统脚本

bat脚本 "D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" -T ws start "D:\Program Files (x86)\Ginkgo7000\C7-10.10.10.111\CentOS 7-NAS-6.vmx" 脚本内容说明 "D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe"…

【C++ 学习 ㉖】- 位图详解(哈希扩展)

目录 一、位图的概念 二、位图的实现 2.1 - bitset.h 2.2 - test.cpp 三、位图的应用 3.1 - 例题一 3.2 - 例题二 一、位图的概念 假设有这样一个需求&#xff1a;在 100 亿个整型数字中快速查询某个数是否存在其中&#xff0c;并假设是 32 位操作系统&#xff0c;4 GB…

两种数据库MySQL 与 PostgresSQL 的 全面比较

目录 1&#xff0c; 基本信息的对比2&#xff0c; 数据类型的对比3&#xff0c; 扩展性的对比3&#xff0c; ACID 兼容性对比4&#xff0c;扩展和插件的对比5&#xff0c;社区支持的对比6&#xff0c;安全性的对比7&#xff0c;复制和高可用性8&#xff0c;性能特点方面的对比6…

MySQL支持哪些存储引擎

mysql支持九大存储引擎&#xff1a; 1&#xff09;MYISAM存储引擎&#xff08;优点&#xff1a;可被转换为压缩、只读表来节省空间。&#xff09; 它管理的表具有以下特征&#xff1a; 使用三个文件表示每个表 格式文件-存储表结构的定义&#xff08;mytable.frm) 数据文件-存…

Yii2全拦截路由catchAll的使用

定义&#xff1a;catchAll 路由&#xff08;全拦截路由&#xff09; 应用场景&#xff1a;网站维护的时候需要向用户抛出一个维护的页面&#xff0c;方便提醒用户 使用方法&#xff1a; 1、在应用配置中设置 yii\web\Application::catchAll 属性 2、新增对应的控制器方法 3、…