五:Ansible Roles

五:Ansible Roles

一:Ansible Roles目录结构

1. 官方推荐最佳实践目录结构定义方式

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/               # ""

2. roles目录结构使用galaxy创建

[[email protected] ~]# cd /etc/ansible/roles/

[[email protected] roles]# tree wordpress/
nfs/                #项目名称
├── defaults        #低优先级变量
├── files           #存放文件
├── handlers        #触发器文件
├── meta            #依赖关系文件
├── tasks           #工作任务文件
├── templates       #jinja2模板文件
├── tests           #测试文件
└── vars            #变量文件

备注:只需要这些目录,ansible的roles会自动识别里面的main.yml

二:Ansible Roles依赖关系

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

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

[[email protected] roles]# vim /etc/ansible/roles/wordpress/meta/main.yml
dependencies:
  - { role: nginx }
  - { role: php }

如果编写了meta目录下的main.yml文件,那么Ansible会自动先执行meta目录中main.yml文件中的dependencies文件,如上所示,就会先执行nginx和php的安装。

如果安装wordpress,main.yml里有nginx和php
流程:
1.当你执行worepress的playbook,会先在meta的main.yml里找nginx
2.找到后,会在roles目录里找nginx,再去nginx目录的meta找依赖,如果无,会在tasks目录里找到安装、配置、启动等
3.装完nginx后再同理执行php
4.最后再执行wordpress的tasks

三:Ansible Roles创建目录

ansible-galaxy init 服务名 roles
[[email protected] ~]# cd /etc/ansible/roles/
[[email protected] /etc/ansible/roles]# ansible-galaxy init rsync roles

- rsync was created successfully
  [[email protected] /etc/ansible/roles]# tree
  .
  └── rsync
    ├── defaults
    │   └── main.yml
    ├── files
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── README.md
    ├── tasks
    │   └── main.yml
    ├── templates
    ├── tests
    │   ├── inventory
    │   └── test.yml
    └── vars
        └── main.yml

9 directories, 8 files

原文地址:https://www.cnblogs.com/captain-jiang/p/12078573.html

时间: 2024-10-07 20:11:50

五:Ansible Roles的相关文章

Ansible roles实现LAMP部署wordpress

ansible lamp ansible roles实现lamp安装wordpress 整个role目录的结构: .├── ansible.cfg├── hosts├── httpd-php_roles.retry├── httpd-php_roles.yml├── roles│   ├── httpd│   │   ├── files│   │   │   ├── mysql_wp.sh│   │   │   ├── wordpress-4.7.4-zh_CN.tar.gz│   │   │

详解Ansible(Roles)自动化部署配置LAMP架构

Roles简介Ansible为了层次化.结构化地组织Playbook,使用了角色(roles).Roles能够根据层次型结构自动装载变量文件.task以及handlers等.简单来讲,roles就是通过分别将变量.文件.任务.模块及处理器放置于单独的目录中,并可以便捷地include它们,roles一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中.? 创建Roles 创建roles时一般需要以下步骤:首先创建以roles命名的目录.然后在roles目标下分别创建以个角色名称命令

五十五.ansible概述、ansible基础 、ad-hoc、批量配置管理

1.环境准备 (自动化工具,批量操作) 6台 2cpu,1.5G以上内存,20G硬盘,1网卡 1.1 基础环境准备 1)启动6台虚拟机,ansible.sh 2)真机配置yum仓库 ]# tar -xf ansible_soft.tar.xz ]# cd ansible_soft/ soft]# mkdir /var/ftp/ansible soft]# cp * /var/ftp/ansible soft]# createrepo /var/ftp/ansible 3)修改主机名(容易区分,6

ansible roles 自动化安装

例:  ansible roles 自动化安装memcached 文件目录结构如下: cat memcached_role.yml - hosts: memcached remote_user: root roles: - memcached cat roles/memcached/vars/main.yml username: memcached groupname: memcached memcached_port: 11211 cat roles/memcached/templates/m

运维自动化-Ansible roles

一.简介 Ansible1.2版本后引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用roles只需要在playbook中使用include指令即可.简单来讲,roles就是通过分别将变量.文件.任务.模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制.角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中 二.roles目录结构 官方推荐在/etc/ansible

Ansible Roles和最佳实践

角色(roles):把playbook根据功能,如handler,tasks等分门别类的放在在各自的子目录下,形成一个集合,就是角色. Roles目录可以是ansible.cfg中roles_path定义的路径,也可以和入口Playbook文件存放在同级目录.建议使用roles_path,方便统一管理.这篇的示例使用和入口Playbook文件存放在同级目录. Roles are ways of automatically loading certain vars_files, tasks, an

ansible roles实践——安装java

1.tasks/main.yml ---- name: mkdir necessary directory file: path=/usr/java/ state=directory mode=0755 - name: unzip jdk unarchive: src={{ jdk_package_name }} dest=/usr/java/ - name: set env lineinfile: dest={{ env_file }} insertafter={{ item.position

一些ansible roles例子

#理解 changed_when failed_when become become_user ansible_become ansible_become_user static #检查group_vars中某组是否存在主机 - name: ensure only one monitoring host exists fail: msg="One, or no monitoring host may be specified." when: "groups.get('moni

Ansible的roles功能(五)

针对大型项目使用Roles进行编排,更便利 目录结构编排 一键安装httpd并提供服务 创建目录结构 [[email protected] ansible]# mkdir -p roles/httpd/{tasks,files,vars} [[email protected] ansible]# cd roles/httpd/tasks [[email protected] roles]#touch httpd/{files/main.yml,tasks/{groupadd.yml,instal