Ansible学习笔记15

1、roles:(难点)

roles介绍:

roles(角色):就是通过分别将variables,tasks及handlers等放置于单独的目录中,并可以便捷地调用他们的一种机制。

假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分,分成apache管理、php管理、mysql管理,然后在需要使用的时候直接调用就可以了,避免重复写。类似编程里的模块化的概念,已达到代码复用的效果。

创建roles的目录结构:

1、files:用来存放由copy模块或者scripts模块调用的模板;

2)tasks:至少有一个main.yml文件,定义各个tasks;

3)handlers:有一个main.yml文件,定义各handlers;

4)templates:用来存放jinja2模板;

5)vars:有一个main.yml,定义变量的;

6)meta:有一个main.yml文件,定义此角色的特殊设定及其依赖关系。

注意:在每个角色的目录中分别创建files,tasks,handlers,templates,vars和meta目录,用不到的目录可以创建为空目录。

通过roles实现lamp:

需要定制三个角色:apache、mysql、php

[root@localhost roles]# tree
.
├── httpd
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│       └── main.yml
├── mysql
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   └── vars
│       └── main.yml
└── php├── files├── handlers│   └── main.yml├── meta│   └── main.yml├── tasks│   └── main.yml├── templates└── vars└── main.yml21 directories, 12 files

这个roles,就并列写了三个roles。类似于调用了函数。

检查agent的文件:

[root@agent1 share]# cd /var/www/html
[root@agent1 html]# ll
total 8
-rw-r--r-- 1 root root 10 Aug 31 09:07 index.html
-rw-r--r-- 1 root root 22 Aug 31 09:07 test.php
[root@localhost httpd]# cat tasks/main.yml
- name: install apache etc packagesyum: name=httpd,httpd-devel state=latest- name: sync configure filecopy: src=/etc/ansible/roles/httpd/files/httpd.conf dest=/etc/httpd/conf/httpd.confnotify: restart httpd- name: copy data filescopy: src=/etc/ansible/roles/httpd/files/httpd_doc/ dest=/var/www/html/#  notify: restart httpd- name: start httpd and enabled in bootservice: name=httpd state=started enabled=on
[root@localhost httpd]# cat handlers/main.yml
- name: restart httpdservice: name=httpd state=restarted
[root@localhost roles]# cat mysql/tasks/main.yml
- name: Install mariadbyum: name=mariadb-server,mariadb-devel state=latest- name: Start mariadb and enabled=yesservice: name=mariadb state=started enabled=on
[root@localhost roles]# cat php/tasks/main.yml
- name: install php packagesyum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath state=presentnotify: restart httpd

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高忆管理:六连板捷荣技术或难扛“华为概念股”大旗

在本钱商场上名不见经传的捷荣技术(002855.SZ)正扛起“华为概念股”大旗。 9月6日,捷荣技术已拿下第六个连续涨停板,短短七个生意日,股价累积涨幅逾越90%。公司已连发两份股票生意异动公告。 是炒作,还是…

字节一面:css选择器有哪些?优先级?哪些属性可以继承?

前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,作为一名前端开发工程师,css是我们的必备技能,熟悉css选择器以及继承是我们写好css的关键,博主在这给大家细细道来。 🚀 作者…

NASM编译器之下载安装使用

NASM的下载和安装 每种处理器都可能会有自己的汇编语言编译器,而对于同一款处理器来说,针对不同的平台(比如Windows和Linux),也会有不同版本的汇编语言编译器。 现存的汇编语言编译器有多种,用得比较多的有 MASM、FA…

大数据学习06-Spark分布式集群部署

Spark完全分布式部署 前期准备,每台服务器都需要配置安装Scala下载Scala安装包配置环境变量 安装spark解压配置环境修改配置 前期准备,每台服务器都需要配置 配置好IP vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE"Ethernet" PROX…

申威芯片UOS中opencv DNN推理

Cmake,opencv,opencv-contribute安装 #apt可能需要更新apt update apt install -y wget unzip apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev#安装cmake apt i…

韶音耳机是哪个国家的品牌,韶音耳机属于什么档次

在如今耳机产品层出不穷的时代,许多品牌纷纷推陈出新,打造出更具创新性的耳机产品。其中,韶音耳机可谓引人注目。然而,对于韶音耳机这个品牌,仍有许多朋友并不熟悉。比如说,韶音耳机是哪个国家的品牌呢&…

解决Spring Data JPA中的NullPointerException问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

Python全攻略:基础学习、爬虫编程实战和面试技巧

在这个充满活力和机会的编程世界中,我们为你提供一份宝贵的指南,旨在帮助你全面了解Python的各个方面。我们将深入探讨面试技巧,提供学习资源,探索爬虫实战经验,并提供丰富的编程示例。无论你是初学者,还是…

Springboot整合AOP实现日志的保存

1.定义注解 /*** 系统日志元注解*/ Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface LogFilter {String value() default "" ; } 2.编写切面的实现 Aspect Component public class LogAspect {private static final …

安装程序报错“E: Sub-process /usr/bin/dpkg returned an error code (1)”的解决办法

今天在终端使用命令安装程序时出现了如下的报错信息。 E: Sub-process /usr/bin/dpkg returned an error code (1) 这种情况下安装什么程序最终都会报这个错,具体的报错截图如下图所示。 要解决这个问题,首先使用下面的命令进到相应的目录下。 cd /var/…

驱动开发--day2(内核不同模块的相互访问、字符设备驱动、led控制实验代码及现象)

实现三盏灯的控制,编写应用程序测试 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define LED1_MODER 0X50006000 #define LED1_ODR 0X50006014 #define LED1_RCC 0X50000A28#define LED2_MODER 0X50007000 #define LED2_ODR 0X50007014#endif mychrdev.c #inc…

记录mac虚拟机安装centos7

一. 安装VMWare Fusion(略) 二. 寻找arm64架构mac能拉起来的centos7镜像(略) 参考 https://cloud.tencent.com/developer/article/2150583?areaSource106000.2&traceIdkybnG2SKASN5GqSBiSmu9 三. 从origin镜像安装后开始记…