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 packgeyum: name=epel-release state=latest- name: install nginx packgeyum: name=nginx state=latest- name: copy index.htmlcopy: src=index.html dest=/usr/share/nginx/html/index.html- name: copy nginx.conf templatetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: restart nginx- name: make sure nginx service runningservice: 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 nginxservice: name=nginx state=restarted
(5) 编写总剧本 site.yaml
vim roles/site.yaml
- host: host1roles:- nginx
(6) 执行剧本
① 检查剧本的语法:
ansible-playbook site.yaml --syntax-check
不用检查每个目录下的 yaml 文件,因为这些文件不完整,只是一个剧本中的一部分。
② 执行剧本:
ansible-playbook site.yaml
3、ansible 补充
(1) 使用 ansible 循环创建多个用户
vim createUser.yaml
- hosts: host1tasks:- name: create usersuser: name={{ item }} state=present groups=wheelwith_items:- testuser1- testuser2
groups=wheel 是在创建用户时为用户指定的附加用户组。在默认情况下,wheel 组通常被授权通过sudo来执行系统命令,这意味着成员可以以超级用户(root)权限执行命令,从而获得对系统的更高控制权。
(2) 服务器托管
服务器托管又称主机托管,指将服务器及相关设备托管到具有完善机房设施、高品质网络环境、丰富带宽资源和运营经验以及可对用户的网络和设备进行实时监控的网络数据中心内。它摆脱了虚拟主机受软硬件资源的限制,能够提供高性能的处理能力,提高网站的访问速度,同时有效降低维护费用和机房设备投入、线路租用等高额费用。
(3) CDN 技术
CDN(Content Delivery Network)内容分发网络,是一种网络架构和服务,旨在改善互联网上的内容传输速度、性能和可用性。CDN通过将内容存储在位于全球各地的服务器上,使内容更靠近最终用户,从而减少了网络传输延迟,提高了网站和应用程序的加载速度,并提供更好的用户体验。CDN技术的主要目标是加速内容交付,减少服务器负载,提高可靠性和安全性。