ansible之roles

ops/2024/11/9 16:43:14/

一、roles介绍

roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独的⽬录中,并可以便捷地调⽤它们的⼀种机制。
假设我们要写⼀个playbook来安装管理lamp环境,那么这个playbook就会写很⻓。所以我们希望把这个很⼤的⽂件分成多个功能拆分, 分成apache管理,php管理,mysql管理,然后在需要使⽤的时候直接调⽤就可以了,以免重复写。就类似编程⾥的模块化的概念,以达到代码复⽤的效果。

二、创建roles的目录结构

files:⽤来存放由copy模块或script模块调⽤的⽂件。
tasks:⾄少有⼀个main.yml⽂件,定义各tasks。
handlers:有⼀个main.yml⽂件,定义各handlers。
templates:⽤来存放jinjia2模板。
vars:有⼀个main.yml⽂件,定义变量。
meta:有⼀个main.yml⽂件,定义此⻆⾊的特殊设定及其依赖关系。
注意: 在每个⻆⾊的⽬录中分别创建files,tasks,handlers,templates,vars和meta⽬录,⽤不到的⽬录可以创建为空⽬录.

三、通过roles实现httpd

1.创建roles⽬录及⽂件,并确认⽬录结构

[root@m0 ~]# cd /etc/ansible/roles/
[root@m0 roles]# tree
.
└── httpd
    ├── files
    ├── handlers
    │    └── main.yml
    ├── meta
    │    └── main.yml
    ├── tasks
    │    └── main.yml
    ├── templates
    └── vars
        └── main.yml

2.准备httpd服务器的主⻚⽂件,php测试⻚和配置⽂件等

[root@m0 ~]# yum -y install httpd
[root@m0 roles]# echo "<?php\n\tphpinfo();\n?>" > /etc/ansible/roles/httpd/files/test.php
[root@m0 roles]# echo "test main page" > /etc/ansible/roles/httpd/files/index.html
[root@m0 roles]# cp /etc/httpd/conf/httpd.conf /etc/ansible/roles/httpd/files/

3.编写httpd⻆⾊的main.yml⽂件

[root@m0 roles]# vim /etc/ansible/roles/httpd/tasks/main.yml 
---
-       name:    安装httpd
        yum:     name=httpd,httpd-devel      state=present

-       name:    同步httpd配置文件
        copy:    src=/etc/ansible/roles/httpd/files/httpd.conf     dest=/etc/httpd/conf/httpd.conf

        notify:  restart httpd

-       name:    同步主页文件
        copy:   src=/etc/ansible/roles/httpd/files/index.html     dest=/var/www/html/index.html

-       name:    同步php测试页
        copy:    src=/etc/ansible/roles/httpd/files/test.php       dest=/var/www/html/test.php

-       name:    启动httpd并开机自启动
        service: name=httpd     state=started       enabled=yes

4.编写httpd⻆⾊⾥的handler

[root@m0 ansible]# vim /etc/ansible/roles/httpd/handlers/main.yml 
---
-      name:          restart httpd
       service:       name=httpd      state=restarted 

5.将两台主机添加到组

[root@m0 ~]# vim /etc/ansible/hosts 
s1 ansible_ssh_host=192.168.1.68 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q
s2 ansible_ssh_host=192.168.1.69 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=q

[s]
s1
s2

6.编写httpd的playbook⽂件调⽤前⾯定义好的⻆⾊

[root@m0 roles]# vim /etc/ansible/playbook/httpd.yaml
---
-   hosts:    s
    remote_user:   root
    roles:
      -  httpd

8.执行playbook文件

[root@m0 roles]# ansible-playbook /etc/ansible/playbook/httpd.yaml         //执行
 


http://www.ppmy.cn/ops/100212.html

相关文章

Swift 中的文本渲染艺术:深入探索 Core Text

标题&#xff1a;Swift 中的文本渲染艺术&#xff1a;深入探索 Core Text 在 iOS 和 macOS 开发中&#xff0c;Core Text 是一个强大的文本渲染和分析框架&#xff0c;它提供了丰富的功能来处理复杂的文本布局需求。从精细的排版到文本样式的自定义&#xff0c;Core Text 为开…

MySQL中的system_time_zone和time_zone的比较

在 MySQL 中&#xff0c;通过SHOW VARIABLES LIKE %time_zone%能查到system_time_zone 和 time_zone 这两个与时区相关但作用不同的变量。它们主要用于处理时间数据的存储和显示&#xff0c;以下是它们的具体区别和用途。 1. system_time_zone 定义&#xff1a;system_time_zo…

Oracle 同义词SYNONYM 的使用

Oracle同义词是数据库中的一种特性&#xff0c;它允许用户为数据库对象&#xff08;如表、视图、序列、过程、函数等&#xff09;创建一个别名。这个别名可以简化SQL语句的编写&#xff0c;提高数据库对象的可访问性&#xff0c;并且可以在多用户协同开发环境中隐藏对象名称及其…

Flux【基础篇】:FluxMidjourneySDXL模型出图对比:细节质量

大家好我是极客菌&#xff01;&#xff01;&#xff01; 前面和大家分享了Flux在手部和脚生成图片的效果。 今天我们看一下Flux在细节质量上面的表现。主要是以下3个模型的对比。 Flux.1 Dev Midjourney V6.1 SD大模型&#xff1a;RealVisXL V4.0 Lightning 本文使用的大…

JavaEE从入门到起飞(九) ~Activiti 工作流

工作流 当一道流程逻辑需要用到多个表单的提交和多个角色的审核共同完成的时候&#xff0c;就可以使用工作流。 工作流一般使用的是第三方技术&#xff0c;也就是说别人帮你创建数据库表和service层、mapper层&#xff0c;你只需要注入工具接口即可使用。 原理&#xff1a;一…

关闭spirng boot集成springdoc-openapi的接口文档

springdoc-openapi依赖包 <dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.1.0</version></dependency><dependency><groupId>org.sprin…

记录一次SQL 查询 LEFT JOIN 相关优化

记录一次 LEFT JOIN 相关优化 1 环境说明2 sql 在dm库查询用时30秒2.1 sql 语句2.2 sql 执行计划 3 调优数据库参数3.1 使用hint 调整数据库参数3.2 hint 的执行计划 4 永久修改数据库参数5 参数说明6 达梦数据库学习使用列表 1 环境说明 某项目的公文办公系统在生产环境刚部署…

Programmatically add website content to OpenAI with C#

题意&#xff1a;使用 C# 以编程方式将网站内容添加到 OpenAI。 问题背景&#xff1a; Our goal is to have a ChatGPT answer questions about our websites content. 我们的目标是让 ChatGPT 回答关于我们网站内容的问题。 We are trying to integrate something similar t…