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:存放角色的其他变量。

ansible - Role_第1张图片

(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

ansible - Role_第2张图片

(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 数量。

ansible - Role_第3张图片

ansible - Role_第4张图片

调用自定义变量:

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

ansible - Role_第5张图片

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技术的主要目标是加速内容交付,减少服务器负载,提高可靠性和安全性。

你可能感兴趣的:(Ansible,大数据,nginx,linux,服务器,ansible)