Ansible中的角色使用

news2025/1/8 2:36:06

Ansible中的角色使用:

目录

一、ansible角色简介

二、roles目录结构

 三、roles的创建

四、roles的使用 

1、书写task主任务

2、触发器模块

3、变量模块

 4、j2模块

 5、files模块 

 6、启用模块

7、执行playbook

五、控制任务执行顺序

六、多重角色的使用


 

一、ansible角色简介

  1. Ansible roles 是为了层次化,结构化的组织Playbook 
  2. roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中,并可以便捷地include它们
  3. roles一般用于基于主机构建服务的场景中,在企业复杂业务场景中应用的频率很高
  4. 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;相当于函数的调用把各个功能切割 成片段来执行。

二、roles目录结构

files存放copy或script等模块调用的函数
tasks定义各种task,要有main.yml,其他文件include包含调用
handlers定义各种handlers,要有main.yml,其他文件include包含调用
vars定义variables,要有main.yml,其他文件include包含调用
templates存储由template模块调用的模板文本
meta定义当前角色的特殊设定及其依赖关系,要有main.yml的文件
defaults要有main.yml的文件,用于设定默认变量
tests用于测试角色

 三、roles的创建

ansible—galaxy命令工具:
Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles;
ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的Ansible 角色。

vim ansible.cfg

 

mkdir roles

cd roles/
ansible-galaxy init apache

cd ..
ansible-galaxy list

四、roles的使用 

例子:下载httpd,配置虚拟主机并认证加密

1、书写task主任务

vim tasks/main.yml

- name: yum
  yum:
    name: httpd
    state: present

- name: service
  service:
    name: httpd
    state: started
    enabled: yes

- name: create doc
  lineinfile:
    path: "{{item.doc}}/index.html"
    line: "{{item.index}}"
    create: yes
  loop: "{{webs}}"

- name: create vhosts.conf
  template:
    src: vhosts.conf.j2
    dest: /etc/httpd/conf.d/vhost.conf
  notify: restart httpd

- name: auth
  copy:
    src: .htpasswd
    dest: /etc/httpd/.htpasswd
  notify: restart httpd

2、触发器模块

vim handlers/main.yml
cat handlers/main.yml

- name: restart httpd
  service:
    name: httpd
    state: restarted

3、变量模块

vim vars/main.yml
cat vars/main.yml

webs:
- doc: /var/www/html
  index: "www.westos.org's page"

- name: bbs.westos.org
  doc: /var/www/virtual/westos.org/bbs/html
  index: "bbs.westos.org's page"

- name: login.westos.org
  doc: /var/www/virtual/westos.org/login/html
  index: "login.westos.org's page"

 4、j2模块

vim templates/vhosts.conf.j2
cat templates/vhosts.conf.j2

{% for web in webs %}
{% if web.name is defined %}
<VirtualHost *:80>
  ServerName {{web.name}}
{% endif %}
{% if web.name is not defined %}
<VirtualHost _default_:80>
{% endif %}
  DocumentRoot {{web.doc}}
</VirtualHost>
{% endfor %}
<Directory "/var/www/virtual/westos.org/login/html">
AuthUserfile "/etc/httpd/.htpasswd"
AuthName "Please input your name and password"
AuthType basic
Require user yyl
</Directory>

 5、files模块 

touch .htpasswd
htpasswd -cm .htpasswd yyl
cp /etc/httpd/.htpasswd files/

 6、启用模块

vim httpd.yml

- name: instell http
  hosts: all
  roles:
  - role: apache

7、执行playbook

ansible-playbook httpd.yml

 

 

五、控制任务执行顺序

pre_task:任务执行前
post_tasks:任务执行后

例子:

- name: instell http
  hosts: all
  pre_tasks:
  - name: test
    debug:
      msg: this is start !!

  roles:
  - role: apache

  post_tasks:
    - name: show post
      debug:
        msg: this is end !!

 

六、多重角色的使用

1、访问地址角色下载地址:galaxy.ansible.com roles

2、搜索nginx,往后翻一下找到roles

 

3、下载角色 

ansible-galaxy collection install ivansible.nginx

要注意出于安全原因,下载的代码需要仔细研读每一行代码!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1171047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题&#xff08;十九&#xff09; Leetcode—1588.所有奇数长度子数组的和 直接法实现代码 int sumOddLengthSubarrays(int* arr, int arrSize){int i 1;int sum 0;int left 0, right;int k;int j 0;while(i < arrSize) {for(left 0; left < arrSize; lef…

手把手创建Android应用程序·案例程序分析

目录 1. Activity 组件 MainActivity 类 2.布局文件activity_main. xml 3.应用程序配置文件 AndroidManifest.xml 4. Android的应用程序组件 4.1 Activity——活动 4.2 Service——服务 4.3 Broadcast receiver——广播接收器 4.4 Content provider——内容提供者…

VulnHub DC-4

一、信息收集 1.nmap扫描 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap -sS -A 192.168.103.194/24发现开放了22、80端口 ┌──(root&#x1f480;kali)-[~/routing] └─# nmap --scriptvuln -p22,80 192.168.103.194--scriptvuln 是nmap中script模块&#xff0…

CoT进阶:Self Consistency, Least-to-most

CoT进阶 一&#xff1a;Self Consistency1.1 方法简介1.2 实验1.3 结果 二&#xff1a;Least-to-most2.1 方法简介2.2 示例2.3 结果 一&#xff1a;Self Consistency 题目: SELF-CONSISTENCY IMPROVES CHAIN OF THOUGHT REASONING IN LANGUAGE MODELS 机构&#xff1a;Google …

GitLab CI/CD 持续集成/部署 SpringBoot 项目

一、GitLab CI/CD 介绍 GitLab CI/CD&#xff08;Continuous Integration/Continuous Deployment&#xff09;是 GitLab 提供的一种持续集成和持续部署的解决方案。它可以自动化软件的构建、测试和部署过程&#xff0c;以便开发者更快地、更频繁地发布可靠的产品。 整体过程如…

检查AirPods的电量至少有六种方法,难易明细的都有

本文提供了六种方法,包括使用iPhone或iPad、询问Siri以及检查AirPods手机壳本身的多种选项。 如何使用保护壳检查AirPods的电池 一个简单的方法是查看AirPods保护壳上的指示灯,以获取电池电量信息;这个选项没有其他选项那么详细。 把耳塞放进盒子里,然后检查一下灯的颜色…

混合整数非线性规划求解器SCIP初探

简介 SCIP是目前最快的混合整数线性规划(mixed integer programming,MIP)和混合整数非线性规划(mixed integer nonlinear programing, MINLP)的求解器之一。到本文记录时&#xff0c;SCIP的版本已经到了8.0.4。 SCIP可以使用不同的编程语言来访问&#xff0c;对于Python有官方…

【多线程】线程的创建

创建线程如下几个方法&#xff1a; 目录 继承Thread类 调用start方法启动线程 调用run方法 实现Runnable接口 实现Callable接口 继承Thread类 调用start方法启动线程 public class TestThread extends Thread{//继承Thread类//重写run方法public void run(){for(int i0…

C#文件操作从入门到精通(3)——Txt文件读写操作

前言: 我们在开发c#程序时,经常需要对txt文本文件进行操作,有时候是读取txt文本中的内容,有时候是将程序运行过程中的一些数据写入到txt文本中做记录,为了帮助大家学习txt文本的操作,我特意开发了一个“txt文件操作学习”winform小软件,该软件调用了我封装的txt文件操作…

[尚硅谷React笔记]——第9章 ReactRouter6

目录&#xff1a; 课程说明一级路由重定向NavLink高亮useRoutes路由表嵌套路由路由的params参数路由的search参数路由的state参数编程式路由导航useRouterContextuseNavigationTypeuseOutletuseResolvedPath()总结项目地址 1.课程说明 概述 React Router以三个不同的包发布…

【C++】红黑树模拟实现STL中的map与set

红黑树里面具体存的是什么类型的元素&#xff0c;是由模板参数 T 来决定&#xff1a; 如果 T 是 Key 那么就是 set。 如果 T 是 pair<const Key, V>&#xff0c;那么就是 map。 1、定义红黑树的节点结构 // 定义红黑颜色 enum Colour {RED,BLACK };template<class …

memcpy()之小端模式

函数原型 void memcpy(voiddestin, const void *src, size_t n); 功能 由src指向地址为起始地址的连续n个字节的数据复制到以destin指向地址为起始地址的空间内。 头文件 #include<string.h> 返回值 函数返回一个指向dest的指针。 例1&#xff1a;如果用来复制字…

wordpress版本识别

wordpress版本识别 1.通过RSS Feed识别 RSS Feed参考 访问网站/feed或者?feedrss 例如 默认结构&#xff1a;https://www.example.com/?feedrss2 其他结构&#xff1a;https://www.example.com/feed/ 返回结果中搜索 generator 可以看到直接是5.9.7版本 2.wpscan等工具扫一…

Java8 Stream API全面解析——高效流式编程的秘诀

文章目录 什么是 Stream Api?快速入门流的操作创建流中间操作filter 过滤map 数据转换flatMap 合并流distinct 去重sorted 排序limit 限流skip 跳过peek 操作 终结操作forEach 遍历forEachOrdered 有序遍历count 统计数量min 最小值max 最大值reduce 聚合collect 收集anyMatch…

用WebStorm运行VUE项目

提示&#xff1a;原来用VS Code开Vue&#xff0c;可是VS Code用Ctrl打不开国际化&#xff0c;下载推荐插件也不好使 文章目录 下载WebStorm运行WebStorm实用插件 下载WebStorm 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; https://www.jetbrains.com/webs…

国家管网集团古浪—河口天然气联络管道工程实现投产

10月26日&#xff0c;国家管网集团古浪—河口天然气联络管道工程实现“绿色”投产&#xff0c;进一步完善西北地区多通道供气网络&#xff0c;对于推动甘肃省“一核三带”新发展格局构建、提高“全国一张网”在甘青地区的供应保障能力具有重要意义。 古浪—河口天然气联络管道…

SpringBoot条件注解底层原理

一、简介 相信大家在学springBoot自动装配的时候会遇到下面这些条件注解&#xff0c;当存在其指定的条件&#xff0c;才会把对应的bean注入到IOC容器中。本博客旨在揭开其神秘的面纱&#xff01; 其实说白了&#xff0c;springBoot的这些注解只是针对普通spring框架中Conditi…

JSP 学生成绩查询管理系统eclipse开发sql数据库serlvet框架bs模式java编程MVC结构

一、源码特点 JSP 学生成绩查询管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;比较流行的servlet框架系统具有完整的源代码和数据库&#xff0c;eclipse开发系统主要采用B/S模式 开发。 java 学生成绩查询管理系统 代码下载链接…

CorelDRAW2023最新版本号24.5.0.731

CDR2023是一款近年来备受瞩目的工具软件&#xff0c;它提供了数据存储、分析以及处理的能力。但是&#xff0c;对于许多用户来说&#xff0c;CDR2023到底好用不好用还需要进行深入的分析和探讨。在本文中&#xff0c;我们将从多个角度分析CDR2023这款软件。 CorelDRAW2023版win…

【JMeter参数化】上一个接口返回作为下一个接口入参

前言: 实际工作场景当中,比如获取到商品列表,并查看商品详情。如果将商品id写死,就很笨拙。所以我们可以进行参数化动态去更新商品id 目录 场景1:接口A仅取一个值,作为接口B的入参 场景:接口A是获取教师列表中某个教室的id,接口B是查看该教师的详情页步骤: 1.获取接口…