首页 > 其他分享 >第十八章 Ansible-playbook-Role基础介绍

第十八章 Ansible-playbook-Role基础介绍

时间:2022-09-20 11:55:22浏览次数:57  
标签:roles nginx Ansible Role playbook m01 main root yml

一、Ansible Roles概述

roles不管是Ansible还是saltstack,我在写一键部署的时候,都不可能把所有的步骤全部写入到一个'剧本'文件当中,我们肯定需要把不同的工作模块,拆分开来,解耦,那么说到解耦,我们就需要用到roles官方推荐,因为roles的目录结构层次更加清晰。

例如:我们之前推荐大家写一个base.yml里面写所有基础优化的项目,其实把所有东西摞进去也是很鸡肋的,不如我们把这些功能全部拆分开,谁需要使用,就调用即可。

建议:每个roles最好只使用一个tasks这样方便我们去调用,能够很好的做到解耦。(SOA)

二、Ansible Roles目录结构

角色期望文件位于某些目录名称中。角色必须至少包含其中一个目录,但是排除任何未使用的目录是完全正确的。在使用时,每个目录必须包含一个main.yml文件,其中包含相关内容:
production                # inventory file for production servers
staging                   # inventory file for staging environment

group_vars/
   group1.yml             # here we assign variables to particular groups
   group2.yml
host_vars/
   hostname1.yml          # here we assign variables to particular systems
   hostname2.yml

library/                  # if any custom modules, put them here (optional)
module_utils/             # if any custom module_utils to support modules, put them here (optional)
filter_plugins/           # if any custom filter plugins, put them here (optional)

site.yml                  # master playbook
webservers.yml            # playbook for webserver tier
dbservers.yml             # playbook for dbserver tier

roles/
    common/               # this hierarchy represents a "role"
        tasks/            #
            main.yml      #  <-- tasks file can include smaller files if warranted
        handlers/         #
            main.yml      #  <-- handlers file
        templates/        #  <-- files for use with the template resource
            ntp.conf.j2   #  <------- templates end in .j2
        files/            #
            bar.txt       #  <-- files for use with the copy resource
            foo.sh        #  <-- script files for use with the script resource
        vars/             #
            main.yml      #  <-- variables associated with this role
        defaults/         #
            main.yml      #  <-- default lower priority variables for this role
        meta/             #
            main.yml      #  <-- role dependencies
        library/          # roles can also include custom modules
        module_utils/     # roles can also include custom module_utils
        lookup_plugins/   # or other types of plugins, like lookup in this case

    webtier/              # same kind of structure as "common" was above, done for the webtier role
    monitoring/           # ""
    fooapp/               # ""

site:是ansible的统一入口,就行调用的安装服务总配置
webservers.yaml:主要是对ansible里一些能做功能,yum等
roles:角色目录
common:公共的roles目录
nginx:角色的软件目录
tasks:包含角色要执行的主要任务列表
handlers:包含处理程序,可以由此角色使用,甚至可以在此角色之外的任何位置使用
defaults:角色默认的变量
vars:角色其他的变量
files:包含可以通过此角色部署的文件
templates:包含可以通过此角色部署的模板
meta:角色定义的一些元数据

三、Ansible Roles目录创建

1.手动创建

[root@m01 ~]# mkdir /project
[root@m01 ~]# cd /project/
[root@m01 /project]# touch site.yml
[root@m01 /project]# mkdir roles
[root@m01 /project]# cd roles/
[root@m01 /project/roles]# mkdir {nginx,php,myriadb,nfs-server,nfs-client}

2.使用命令创建

[root@m01 /project/roles]# ansible-galaxy init nginx
- Role nginx was created successfully
[root@m01 /project/roles]# tree ./
./
├── mariadb
├── nfs-client
├── nfs-server
├── nginx
│   ├── defaults
│   │   └── main.yml
│   ├── files
│   ├── handlers
│   │   └── main.yml
│   ├── meta
│   │   └── main.yml
│   ├── README.md
│   ├── tasks
│   │   └── main.yml
│   ├── templates
│   ├── tests
│   │   ├── inventory
│   │   └── test.yml
│   └── vars
│       └── main.yml
└── php

13 directories, 8 files
[root@m01 /project/roles]#

四、Ansible Roles 依赖

roles允许你再使用roles时自动引入其他的roles。role依赖关系存储在roles目录中meta/main.yml文件中。

例如:推送wordpress并解压,前提条件,必须要安装nginx和php,把服务跑起来,才能运行wordpress的页面,此时我们就可以在wordpress的roles中定义依赖nginx和php的roles

[root@m01 roles]# vim /etc/ansible/roles/wordpress/meta/main.yml
dependencies:
  - { role: nginx }
  - { role: php }
  
如果编写了meta目录下的main.yml文件,那么Ansible会自动先执行meta目录中main.yml文件中的dependencies文件,如上所示,就会先执行nginx和php的安装。

标签:roles,nginx,Ansible,Role,playbook,m01,main,root,yml
From: https://www.cnblogs.com/GAO321/p/16710546.html

相关文章

  • 第十五章 Ansible-playbook错误处理
    一、playbook忽略错误默认playbook会检测task执行的返回状态,如果遇到错误则会立即终止playbook的后续task执行,然而有些时候playbook即使执行错误了也要让其继续执行。加......
  • 第十一章 Ansible-playbook变量注册和Facts缓存
    一、变量注册概述当absible的模块在运行之后,其实都会返回一些result结果,就像是执行脚本,我们有的时候需要脚本给我们一些return返回值,我们才知道,上一步是否可以执行成功,但......
  • 第十章 Ansible-playbook变量基础
    一、ansible变量概述ansible变量提供了便捷的方式来管理Ansibleplaybook的每一个项目中的动态值,比如nginx-1.6.3这个软件包的版本,在其它地方或许会反复使用,那么如果讲此......
  • 第八章 Ansible-playbook基础介绍
    一、playbook简介PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的:play(host):定义的是主机的角色。(主角还是配角)Book(task):定义的是具体执行的任务。(角色的......
  • 第三章 Ansible中ad-hoc入门
    一、概述Ansibleadhoc命令使用/usr/bin/ansible命令行工具在一个或多个受管节点上自动执行单个任务。临时命令既快速又简单,但它们不可重复使用,执行完即结束,并不会保存......
  • 第二章 Ansible服务搭建
    一、环境准备主机名IP身份m0110.0.0.61Ansible控制端web01172.16.1.7Ansible被控端web03172.16.1.9Ansible被控端二、安装Ansible[root@m0......
  • 第一章 Ansible入门
    一、Ansible概述、Ansible是一种IT自动化工具。它可以配置系统、部署软件并协调更高级的IT任务,例如持续部署或零停机滚动更新。Ansible的主要目标是简单易用。它......
  • 12.ansible lineinfile模块
    前言:lineinfile模块,功能有点类似sed常用功能:对文件的行替换、插入、删除PS:替换/插入:如果有重复的,都是匹配最后一个,如果不加backrefs项,替换/插入如无匹配者,则将line......
  • 本次介绍如何利用ansible一键初始化centos7
    本次介绍如何利用ansible一键初始化centos7。本文介绍的运行环境是CentOS7.6:[root@localhost~]#cat/etc/redhat-releaseCentOSLinuxrelease7.6.1810(Core)[r......
  • ansible 常用命令
    ansible使用笔记命令 列出可用模块# ansible-doc -l显示模块使用ansible-doc –s cron # 显示模块使用ansible-doc cron    # 详细显示ansible-......