【ansible】ansible roles

news/2024/9/14 9:29:14/ 标签: ansible, 服务器, java, 运维

ansible_roles__0">ansible roles 简介

Ansible Roles是一种组织和管理Ansible Playbooks的方法。它们允许将相关的配置和任务分组到一个可重用的单元中,使得代码更加模块化和可维护。

一个Ansible Role包含了一组预定义的变量、任务和文件结构。它可以被其他Playbooks调用和使用,从而实现代码的重用。Roles可以用于定义各种不同的配置,从简单的软件安装和配置到复杂的系统部署。

Roles通常包含以下几个重要的目录和文件:

  • tasks:包含了要执行的任务列表,可以是Ansible模块的调用或者是其他角色的引用。
  • handlers:包含了用于响应特定事件的任务,比如重新启动服务或者重新加载配置文件。
  • vars:包含了角色的变量定义,这些变量可以在角色的其他部分中引用。
  • defaults:包含了角色的默认变量值。
  • templates:包含了配置文件的模板,可以使用Jinja2模板引擎来渲染这些文件。
  • files:包含了需要复制到被管理节点的文件。

使用Roles可以极大地简化Ansible代码的编写和维护工作,提高代码的可读性和可重用性。同时,Roles还使得团队协作更加容易,可以方便地共享和复用角色。

ansible_roles__15">ansible roles 语法

Ansible roles 是一种组织和结构化Ansible playbook的方法。它允许您将任务、变量和模板组织到可重复使用的模块中,以便在多个playbook中重复使用。

下面是一个典型的Ansible role的目录结构:

roles/myrole/tasks/main.ymlvars/main.ymlfiles/myfile.txttemplates/mytemplate.j2handlers/main.ymlmeta/main.yml

在此目录结构中,各个目录的作用如下:

  • tasks/:包含执行任务的YAML文件。
  • vars/:包含变量定义的YAML文件。
  • files/:包含要传输到目标主机的文件。
  • templates/:包含要在目标主机上生成的模板。
  • handlers/:包含处理器定义的YAML文件。
  • meta/:包含角色元数据的YAML文件。

main.yml文件中,您可以定义要在角色中执行的任务、变量和文件。

通过使用role,您可以在playbooks中使用include_roleroles关键字来导入并使用role。

以下是一个使用role的示例:

- name: Example playbookhosts: webroles:- myrole

上面的示例将导入名为myrole的role,并在web组的主机上运行。

ansible_playbookhttpdhttpdconfservernameIP_60">1、使用ansible playbook部署httpd,要求httpd.conf由模板生成,对应的servername改为受控端IP

cd /etc/ansible/roles
ansible-galaxy init httpd

主yaml rolets.yml

---
- hosts: h1remote_user: rootroles:- httpd
---
# tasks file for httpd
- name: install httpd packageyum: name={{package}} state=latest
- name: install configure file#使用template模板template: src=/etc/ansible/httpd.conf.j2 dest=/etc/httpd/conf/httpd.confnotify:- restart httpd
- name: create root dirfile: path=/etc/httpd/htdocs state=directory
- name: start httpd serverservice: name={{service}} enabled=true state=started
---
# handlers file for httpd
- name: restart httpdservice: name={{service}} state=restarted
---
# vars file for httpd
package: httpd
service: httpd
......
#/etc/ansible/roles/httpd/templates/httpd.conf.j2 95行
ServerName {{ansible_ens33.ipv4.address}}:80
......

2、编写一个playbook,当模板任务执行完成时触发一个debug任务

 ansible-galaxy init debug823
---
# tasks file for debug823
- name: copy filecopy: content: |#!/bin/bashecho "Hello World"dest: /tmp/hello.shmode: '0755'- name: run scriptcommand: /tmp/hello.shnotify: success
---
# handlers file for debug823
- name: successdebug:msg: "This is a success message"

/etc/ansible/debugtestplaybook.yml

---
- hosts: h1remote_user: rootroles:- debug823

3、编写一个复制一文件到被控端的playbook

echo 123 > /etc/ansible/roles/debug823/files/testcopy.txt
---
# tasks file for debug823
- name: copy filecopy: src: testcopy.txtdest: /tmp/testcopy.txtmode: '0644'owner: rootgroup: root- name: debug taskdebug:msg: "This is a debug message"

4、编写一个playbook,部署前后端分离项目

192.168.99.132 nginx
192.168.99.144 java
192.168.99.177 mysql

主playbook yaml

- name: nginx installhosts: nginxroles:- nginx- name: java installhosts: javaroles:- java- name: mysql installhosts: mysqlroles:- mysql

nginx role

---
# tasks file for nginx
- name: Install epel-releaseyum:name: epel-releasestate: present- name: Install nginxyum:name: nginxstate: present- name: Start nginx serviceservice:name: nginxstate: started- name: Enable nginx serviceservice:name: nginxenabled: yes- name: copy project bmcopy:src: bmdest: /usr/share/nginx/html/mode: 0644owner: nginxgroup: nginx- name: Configure nginxtemplate:src: nginx.conf.j2dest: /etc/nginx/nginx.confnotify:- restart nginx

nginx.conf.j2

  ……server {listen 80; server_name {{ansible_ens33.ipv4.address}};location / {root /usr/share/nginx/html/bm;index index.html index.htm;}   location /bm {proxy_pass http://java:8090;}           ……

java_role_274">java role

---
# tasks file for java
- name: copy jdkcopy:src: jdk-8u371-linux-x64.rpmdest: /tmp/jdk-8u371-linux-x64.rpm- name: install jdkyum:name: /tmp/jdk-8u371-linux-x64.rpmstate: present- name: copy carton.jarcopy:src: carbon.jardest: /opt/carbon.jarmode: 0755- name: copy hostscopy:src: /etc/hostsdest: /etc/hosts- name: start carbon.jarcommand: nohup java -jar /opt/carbon.jar &register: resultasync: 3600poll: 0

mysql role

---
# tasks file for mysql- name: install mariadbyum:name: mariadb-serverstate: present- name: start mariadbservice:name: mariadbstate: started- name: copy carbon.sql to /tmpcopy: src=carbon.sql dest=/tmp/carbon.sql- name: run init.expscript: init.exp- name: execute SQLshell: mysql -uroot -p{{mysql_password}} < /tmp/carbon.sql

init.exp

#!/usr/bin/expect
set timeout 30
spawn mysql -uroot -p
expect {"*password*" {send "\r"}
}
expect ">*"
send "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');\r"
expect ">*"
send "create user 'root'@'%' identified by 'root';\r"
expect ">*"
send "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';\r"
expect ">*"
send "flush privileges;\r"
expect ">*"
send "quit\r"
expect eof

http://www.ppmy.cn/news/1516950.html

相关文章

Nginx IP 限制与路径访问控制配置

Nginx IP 限制与路径访问控制配置 1. 简介 在某些应用场景下&#xff0c;特定路径需要免登录访问&#xff0c;但为了安全考虑&#xff0c;限制只有指定的 IP 地址才能访问该路径。本文档描述了如何在 Nginx 中配置 IP 限制&#xff0c;并在未授权访问时返回 401 Unauthorized…

OpenAI推出新功能:GPT-4o正式上线微调功能,限时免费!

GPT-4o正式上线微调功能&#xff0c;限时免费&#xff01; 每个组织每天可以免费获得多达100万个训练token&#xff0c;活动将持续到9月23日。 这意味着开发者们现在可以利用自定义数据集对GPT-4o进行微调&#xff0c;从而以较低的成本构建自己的应用程序。 据悉&#xff0c;G…

Datawhale AI夏令营第五期CV方向-城市管理违规行为智能识别-Task1

赛题解析 城市管理违规行为智能识别 初赛任务是根据给定的城管视频监控数据集&#xff0c;进行城市违规行为的检测。违规行为主要包括垃圾桶满溢、机动车违停、非机动车违停等。 选手需要能够从视频中分析并标记出违规行为&#xff0c;提供违规行为发生的时间和位置信息。 数…

提示工程自动化实践

提示工程很糟糕。 这是使用大型语言模型最乏味的部分。这些模型非常挑剔&#xff0c;对提示进行看似无害的更改可能会导致截然不同的结果。我厌倦了手动调整、不系统的变化以及与手动提示工程相关的头痛…… 首先让我们统一认识&#xff0c;提示工程是指对 AI 模型给出的指令…

Elasticsearch 8 RAG 技术分享

Tech Day 本文由Elastic 中国区首席架构师 Jerry Zhu 在【AI搜索 TechDay】上的分享整理而成。【AI搜索 TechDay】 是 Elastic 和阿里云联合主办的 AI 技术Meetup系列&#xff0c;聚焦企业级 AI 搜索应用和开发者动手实践&#xff0c;旨在帮助开发者在大模型浪潮下升级 AI搜索…

探索Facebook的AI算法:如何优化用户体验

在数字化时代&#xff0c;社交媒体平台不断引领着技术创新的潮流。作为全球领先的社交平台之一&#xff0c;Facebook在人工智能&#xff08;AI&#xff09;算法的应用上取得了显著进展&#xff0c;极大地提升了用户的社交体验。本文将探讨Facebook如何通过先进的AI算法优化用户…

第4章 汇编语言和汇编软件

第4章 汇编语言和汇编软件 该章主要介绍了汇编语言和汇编语言编译器的安装和使用。 汇编语言程序 该小节主要介绍了为什么要有汇编语言和汇编语言程序的一些基础写法。 书中有提到CPU有不同的架构&#xff0c;汇编语言有不同的风格&#xff0c;那么不同的CPU架构和不同的汇…

RPA自动化流程机器人在企业财务中的安全与合规性考虑

随着企业对数字化转型的需求不断增加&#xff0c;财务系统变得更加复杂和集成&#xff0c;而新技术的应用将改变企业财务管理传统的运营模式&#xff0c;帮助企业提质增效的同时也可能带来系统安全性的挑战。RPA自动化流程机器人作为最受企业欢迎的数字化转型工具之一&#xff…

【C语言】深入理解指针3(附转移表源码)

深入理解指针3 1.字符指针变量2.数组指针变量2.1是什么2.2应用 3.二维数组传参的本质4.函数指针变量4.1函数指针变量的创建和使用4.2 typedef关键字 5.函数指针数组6.转移表 1.字符指针变量 上⾯代码的意思是把⼀个常量字符串的⾸字符 h 的地址存放到指针变量 pstr 中。 《剑指…

WITH (NOLOCK) 是 SQL Server 中的一个提示

WITH (NOLOCK) 是 SQL Server 中的一个提示&#xff08;hint&#xff09;&#xff0c;它告诉 SQL Server 在读取数据时不要获取共享锁。这个提示通常用于优化读取操作的性能&#xff0c;特别是在读取大量数据时&#xff0c;因为它可以减少锁的竞争&#xff0c;从而可能加快查询…

Mac M1 Max配置torch-geometric等深度学习库

前提&#xff1a;此电脑中已经安装好了Anaconda环境 &#xff08;一&#xff09;查看创建的虚拟环境中torch的版本 import torch torch.__version__&#xff08;二&#xff09;针对安装的 torch 版本&#xff0c;去官网下载torch-geometric 依赖的对应版本 torch-sparse、tor…

Mysql 集群技术

目录 一、MySQL在服务器中的部署方法 1、MySQL的源码编译安装 2、MySQL部署 二、MySQL的主从复制 1、配置master 2、配置slave 当有数据时添加node3 4、延迟复制 5、慢查询日志 6、MySQL的并行复制 7、原理剖析 8、架构缺陷 三、半同步模式 1、原理 2、gtid模式…

vue2前端阿里云oss断点续传

官方文档地址&#xff1a;如何通过断点续传上传的方式将文件上传到OSS_对象存储(OSS)-阿里云帮助中心 1、需要后端提供一个接口&#xff0c;接口数据包含&#xff1a; const client new OSS({// yourRegion填写Bucket所在地域。以华东1&#xff08;杭州&#xff09;为例&…

【STM32】PWR电源控制(低功耗模式)

本篇博客重点在于标准库函数的理解与使用&#xff0c;搭建一个框架便于快速开发 目录 PWR简介 修改主频 低功耗模式 睡眠模式 停止模式 待机模式 PWR简介 PWR&#xff08;Power Control&#xff09;电源控制 &#xff0c;负责管理STM32内部的电源供电部分&#xff0c;可…

31套科技风PPT免费分享

目录 部分展示 部分展示 #PPT下载 「科技风模板」链接&#xff1a;https://pan.quark.cn/s/fb2f39a1d343 链接永久有效&#xff0c;点击这里下载&#xff0c;记得给个赞哦

中间件安全

1.中间件 中间件(Middleware)是指一种软件组件&#xff0c;其作用是在不同的系统、应用程序或服务之间传递数据和消息。它通常位于应用程序和操作系统之间&#xff0c;负责在不同的应用程序之间传递数据、协调不同应用程序之间的通信&#xff0c;以及处理网络请求等。 中间件…

Oracle开始严查Java许可!

0x01、 前段时间在论坛里就看到一个新闻&#xff0c;说“Oracle又再次对Java下手&#xff0c;开始严查Java许可&#xff0c;有企业连夜删除JDK”&#xff0c;当时就曾在网上引起了一阵关注和讨论。 这不最近在科技圈又看到有媒体报道&#xff0c;Oracle再次严查&#xff0c;对…

【树的最长路径】

题目 错误代码&#xff08;18过15&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e410, M N << 1; const int null -0x3f3f3f3f; int h[N], e[M], ne[M], w[M], idx; int v[N]; int maxx; int res; int twice; void add(int a, int …

C语言占领游戏

目录 开头程序程序的流程图程序的效果结尾 开头 大家好&#xff0c;我叫这是我58。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <Windows.h> void pri…

windows核心编程:5章:将一个进程放入一个作业中,以限制此进程具体能够做那些事情

windows核心编程&#xff1a;5章&#xff1a;将一个进程放入一个作业中&#xff0c;以限制此进程具体能够做那些事情 windows核心编程&#xff1a;5章&#xff1a;将一个进程放入一个作业中&#xff0c;以限制此进程具体能够做那些事情 文章目录 windows核心编程&#xff1a;…