• ansible - Role


    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

    1. ---
    2. - name: install epel-release packge
    3. yum: name=epel-release state=latest
    4. - name: install nginx packge
    5. yum: name=nginx state=latest
    6. - name: copy index.html
    7. copy: src=index.html dest=/usr/share/nginx/html/index.html
    8. - name: copy nginx.conf template
    9. template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
    10. notify: restart nginx
    11. - name: make sure nginx service running
    12. 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

    1. ---
    2. - name: restart nginx
    3. service: name=nginx state=restarted

    (5) 编写总剧本 site.yaml

    vim roles/site.yaml

    1. - host: host1
    2. roles:
    3. - nginx

    (6) 执行剧本

    ① 检查剧本的语法:

    ansible-playbook  site.yaml  --syntax-check

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

    ② 执行剧本:

    ansible-playbook  site.yaml

    3、ansible 补充

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

    vim createUser.yaml

    1. - hosts: host1
    2. tasks:
    3. - name: create users
    4. user: name={{ item }} state=present groups=wheel
    5. with_items:
    6. - testuser1
    7. - testuser2

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

    (2) 服务器托管

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

    (3) CDN 技术

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

  • 相关阅读:
    PHP基于thinkphp的旅游见闻管理系统#毕业设计
    MySQL 相关英文单词
    【Stream】Java中List<Object>,List<~> 使用Stream函数式
    在C#中使用NModbus4通信库执行【读】操作
    算法分析与设计CH9:排位统计——找到数组中的第k小的元素
    基于javaweb+jsp的学籍管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
    编程内功心法「底层原理系列」 底层架构原理,分析CPU处理器鲜为人知的那些秘密
    Starrc input data
    RK主机 CPU、NPU使用频率查看和设置
    百度主动推送不能用了,百度自动推送代码送给大家
  • 原文地址:https://blog.csdn.net/weixin_61428407/article/details/133561746