11、ansible-role剧本
在 Ansible 中,"roles" 是组织 playbook 的一种方式,用于将任务和变量分组到单独的文件夹中,以便更好地管理和重用这些组件。
一个 role 通常包含以下文件和文件夹:
tasks:包含要执行的任务的文件。
handlers:包含 handlers 的文件。
templates:包含要使用的模板文件。
files:包含要复制到目标主机的文件。
vars:包含变量的文件。
defaults:包含默认变量的文件。
meta:包含 role 依赖项和其他元数据的文件。
使用 role 的好处在于,可以通过定义变量和任务,将复杂的 playbook 代码分解为可重用的组件。这样可以提高代码的可维护性和可读性,并且可以更方便地共享和重用这些组件。
以下是一个 role的示例目录结构: 每个文件夹都负责不同的任务
··注意以下的文件夹的名使固定的
··当拷贝或者对文件夹下的文件进行操作时,可以直接写文件名不需要写全路径,系统或自动查找
my_role/
├── tasks/
│ ├── main.yml
│ └── other.yml
├── handlers/
│ └── main.yml
├── templates/
│ └── my_template.j2
├── files/
│ └── my_file.txt
├── vars/
│ ├── main.yml
│ └── other.yml
├── defaults/
│ └── main.yml
└── meta/
└── main.yml
==================================================================roles 剧本==============================================
1、创建role 剧本的目录结构
··创建roles结构的文件夹
[root@ansible home]# mkdir roles/nginx/{files,handlers,tasks,templates,vars,defaults,meta} -p
··在文件夹下创建文件
[root@ansible home]# touch roles/site.yaml roles/nginx/{defaults,handlers,tasks,vars,meta}/main.yaml
··在files文件下创建一个网站的首页 index.html ··在文件里随便写点东西
touch roles/nginx/files/index.html
··将nginx的配置文件拷贝到templates目录
···先安装nginx、再拷贝
[root@ansible home]# yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
2、编写剧本文件的任务文件:tasks下的main.yaml文件
--- - name: install epel-release package yum: name=epel-release state=latest
- name: install nginx 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 //这里的tempplate类似copy的功能 在template模块中,文件内容可以存在动态的变量,这是jinjia2模板的作用 notify: restart nginx service
- name: ensure nginx serivce is running service: name=nginx state=started enabled=yes
# handlers: //handlers不在这个任务文件里写,要写在handlers下的mian.yaml文件里 #- name: restart nginx service # service: name=nginx state=restarted
注解:template模块与copy模块的区别
copy 模块用于将本地文件复制到目标主机上,而 template 模块则是将本地文件中的变量替换后再复制到目标主机上。在 template 模块中,你可以使用 Jinja2 模板语言编写模板文件,其中包含变量和控制结构。这些变量和控制结构将会在复制文件时被替换成实际的值。因此,当你需要在复制文件时动态生成文件内容时,可以使用 template 模块。而当你只需要简单地复制文件时,可以使用 copy 模块
3、配置 templates 目录下的 nginx.conf.j2 配置文件--金甲模板jinjia2
``[root@ansible home]# vim roles/nginx/templates/nginx.conf.j2
``worker_processes cpu内核数量
注解:templates目录
templates 目录通常用于存放模板文件,这些模板文件可以被 Ansible 的 template 模块使用。在 Ansible 中,template 模块可以将本地的模板文件复制到远程主机上,并将其中的变量替换为实际的值,从而生成最终的配置文件。因此,templates 目录中的文件应该是包含变量和控制结构的模板文件,而不是最终的配置文件
注解:模板文件
模板文件是一种包含占位符和控制结构的文件,用于生成最终的文本文件。模板文件通常包含一些变量,这些变量的值需要在使用模板文件生成最终文本文件时被替换为实际的值。模板文件还可以包含一些控制结构,例如条件语句、循环语句等,用于根据不同的条件生成不同的文本内容。模板文件可以用于生成各种类型的文本文件,例如配置文件、代码文件、HTML 文件等。在 Ansible 中,template 模块可以使用 Jinja2 模板引擎来处理模板文件,生成最终的文本文件。
注解:worker_processes
这是 nginx 配置文件中的一个指令,它指定了 worker 进程的数量。auto 参数表示 nginx 会根据可用的 CPU 核心数自动设置 worker 进程的数量。当你的服务器有多个 CPU 核心时,这个参数可以帮助你充分利用系统资源,提高 nginx 的性能。如果你不想使用自动设置,也可以手动指定一个数字,例如 worker_processes 4; 表示设置 4 个 worker 进程。
注解:worker_connections
worker_connections是Nginx配置中的一个参数,它指定每个工作进程(worker process)可以同时处理的最大连接数。这个参数的值应该根据服务器的硬件配置和预期的负载情况来进行调整。如果设置得太小,可能会导致连接被拒绝或者请求被阻塞;如果设置得太大,可能会导致服务器资源被过度占用。一般来说,建议将worker_connections设置为每个CPU核心数的2-4倍。
4、编写变量
` [root@ansible home]# vim roles/nginx/vars/main.yaml
worker_connections: 10240
5、编写handlers目录下的文件--->此步骤对应上面的第2步
·· vim roles/nginx/handlers/main.yaml
--- - name: restarat nginx service service: name=nginx state=restarted
6、编写剧本 site.yaml 这个是站点文件,会自动调用其它文件
··· vim roles/site.yaml
··· 以下是固定写法
- hosts: webserver roles: - nginx //执行相应的文件目录
7、测试site.yaml文件
· [root@ansible home]# ansible-playbook roles/site.yaml --syntax-check
·[root@ansible home]# ansible-playbook roles/site.yaml --list-task
·[root@ansible home]# ansible-playbook roles/site.yaml --list-hosts
8、执行剧本文件
·先把apache服务关了,不然会和nginx冲突
·执行剧本
··· ansible-playbook roles/site.yaml
9、访问nginx网页即可
==========================================================================扩展=================================================
site.yaml编辑的是要执行哪个剧本的内容
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/17436741.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步