返回顶部
首页 > 资讯 > 数据库 >ansible--roles
  • 178
分享到

ansible--roles

2024-04-02 19:04:59 178人浏览 安东尼
摘要

role类似于salt-stack里面的state,state有一定的组织架构。而role则是ansible中playbook的目录组织架构,如果把所有内容都写到playbooks里,可能会导致playbo

role类似于salt-stack里面的state,state有一定的组织架构

而role则是ansible中playbook的目录组织架构,如果把所有内容都写到playbooks里,可能会导致playbooks臃肿,难读。而模块化之后,有效解决了上述的问题。

目录结构示例:

[root@WEB02 web]# tree

.

├── group_vars

│   └── salt

├── hosts

├── roles

│   ├── Mysql

│   │   ├── handlers

│   │   │   └── main.yml

│   │   ├── tasks

│   │   │   ├── configure.yml

│   │   │   └── main.yml

│   │   ├── templates

│   │   │   └── my.cnf

│   │   └── vars

│   │        └── main.yml

│   └── webserver

│       ├── files

│       │   └── index.html

│       ├── handlers

│       │   └── main.yml

│       ├── meta

│       │   └── main.yml

│       ├── tasks

│       │   └── main.yml

│       └── templates

│            └── Httpd.conf

└── site.yml

第一级目录下有俩文件夹,俩文件

group_vars这里面存的组变量,定义规则等同于/etc/ansible/group_vars里面的组变量

group_vars下的salt文件里的变量只对salt组有效,如果文件名为all,则对所有主机组有效,而相对于roles这里面的变量则是全局的。

web]# cat group_vars/salt

http_port: 80


hosts存放主机及组信息:

web]# cat hosts 

[salt]

192.168.137.130


roles下有两个role,分别为mysql,webserver

mysql和webserver目录下可以有下面这些目录:

files:存文件的,文件放此目录,ansible默认就会到这个目录去找文件,对应task里面的copy模块

tasks:显然是存放tasks的

handlers:存放handlers

templates:存放模板,对应task里面的模块template

vars:这里面定义的变量,只对当前role有作用

meta:定义role和role直接的依赖关系。


查看webserver目录下文件内容:

webserver]# for dir in {'tasks','handlers','meta'};do echo -e "\033[31m${dir}\033[0m";for file in `ls ${dir}/*`;do echo -e "\033[32m${file}\033[0m";cat -n ${file};done;done

tasks

tasks/main.yml

     1 ---

     2 - name: installed httpd

     3  yum: name=httpd state=latest

     4  tags: install

     5

     6 - name: keep httpd running

     7  service: name=httpd state=started

     8  tags: install

     9

    10 - name: transfer index file

    11  copy: src=/index.html dest=/var/www/index.html   ##到file中查找

    12  tags: install

    13

    14 - name: wait for httpd to start

    15  wait_for: port=`http_port`            ##http_port为group_vars/salt中全局变量

    16  tags: install

    17

    18 - name:transfer httpd configure file

    19  template: src=httpd.conf dest=/etc/httpd/httpd.conf  ##httpd.conf模板中查找

    20  tags: conf

    21  notify:

    22    - restart httpd

handlers

handlers/main.yml

     1 ---

     2 - name: restart httpd

     3  service: name=httpd state=restarted

meta

meta/main.yml

     1 ---

     2 dependencies:

     3  - {role: mysql,echo_vars: hello mysql}

##meta定义依赖关系,webserver运行前,必须先运行mysql这个role,并传递变量echo_vars给mysql


查看mysql目录下文件内容:

mysql]# for dir in {'tasks','handlers','vars'};do echo -e "\033[31m${dir}\033[0m";for file in `ls ${dir}/*`;do echo -e "\033[32m${file}\033[0m";cat -n ${file};done;done

tasks

tasks/configure.yml

     1 ---

     2 - name: transfer mysql configure file

     3  template: src=my.cnf dest=/etc/mysql/my.cnf

     4  notify:

     5    - restart mysql

     6  tags: configure

tasks/main.yml

     1 ---

     2 - name: install mysql-server

     3  yum: name=`item` state=latest

     4  with_items:

     5    - '`software`'

     6  tags: install

     7

     8 - name: keep mysql is running

     9  service: name=mysql state=started

    10  tags: install

    11

    12 - name: echo_vars

    13  shell: echo '`echo_vars`'    ##webserver的meta传过来的变量

    14  reGISter: result

    15 - debug: msg='`result`.`stdout`'

    16  tags: install

    17

    18 - include: configure.yml        ##include进来

handlers

handlers/main.yml

     1 ---

     2 - name: restart mysql

     3  service: name=mysql state=restarted

vars

vars/main.yml

     1 ---

     2 software:                   ##role内变量

     3  - mysql-server

     4  - lrzsz


site.yml,我们要调用的文件。

web]# cat site.yml

---

- hosts: salt

  remote_user: '`uservar`'


  roles:

    - webserver


执行结果:


web]# ansible-playbook -i hosts site.yml -e 'uservar=root'


PLAY [salt] ************************************************************************


TASK [Gathering Facts] *************************************************************

ok: [192.168.137.146]


TASK [mysql : install mysql-server] ************************************************

ok: [192.168.137.146] => (item=[u'mysql-server', u'lrzsz'])


TASK [mysql : keep mysql is running] ***********************************************

ok: [192.168.137.146]


TASK [mysql : echo_vars] ***********************************************************

changed: [192.168.137.146]


TASK [mysql : debug] ***************************************************************

ok: [192.168.137.146] => {

    "msg": "hello mysql"         ##webserver传给mysql的变量

}


TASK [mysql : transfer mysql configure file] ***************************************

ok: [192.168.137.146]


TASK [webserver : installed httpd] *************************************************

ok: [192.168.137.146]


TASK [webserver : keep httpd running] **********************************************

ok: [192.168.137.146]


TASK [webserver : transfer index file] *********************************************

changed: [192.168.137.146]


TASK [webserver : wait for httpd to start] *****************************************

ok: [192.168.137.146]


TASK [webserver : transfer httpd configure file] ***********************************

changed: [192.168.137.146]


RUNNING HANDLER [webserver : restart httpd] ****************************************

changed: [192.168.137.146]


PLAY RECAP *************************************************************************

192.168.137.146            : ok=12   changed=4    unreachable=0    failed=0


如何在roles里调用tags标签:

在命令行中可用参数调用tags,

--tags="test1,test3"   :只执行test1,test3标签段

--skip-tags="test2"    :跳过test2,执行其它tags为非test2标签的字段


web]# cat site.yml

---

- hosts: salt

  remote_user: '`uservar`'


  roles:

    - {role: webserver,tags: ['install']}  ##只执行角色中定义的标签段




您可能感兴趣的文档:

--结束END--

本文标题: ansible--roles

本文链接: https://lsjlt.com/news/34752.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ansible--roles
    role类似于salt-stack里面的state,state有一定的组织架构。而role则是ansible中playbook的目录组织架构,如果把所有内容都写到playbooks里,可能会导致playbo...
    99+
    2024-04-02
  • ansible
    用ansible在客户端上创建一个用户,用户名为test,脚本语言如下:[root@master ansible]# vim 1.yml  --- - name: create_user               /说明代码的作用。可以...
    99+
    2023-01-31
    ansible
  • ansible + tornado + MongoDB
    http://blog.csdn.net/smallfish2983/article/details/38078019照着上面那哥们写的,初学,不要吐血,基本功能实现了。root@ubuntu12:~/an...
    99+
    2024-04-02
  • ansible--基础
    马哥出品 ansible中文文档:http://www.ansible.com.cn/index.htmlansible介绍:ansible是个什么东西呢?官方的title是“Ansible is Simp...
    99+
    2024-04-02
  • ansible--变量
    ansible中的变量主要来源于以下几种场景:Inventory(host vars,group vars)playbook里面命令行playbook执行task过程中产生结果,可以register起来,作...
    99+
    2024-04-02
  • ansible (2.4.2.0) A
    转自 jumpserver 5.0 测试版本 下载地址 https://github.com/hequan2017/zabbix-models/tree/master/ansible_run 只是简单改了一下 能够单独使用。 目录结构 a...
    99+
    2023-01-31
    ansible
  • ansible python api 2
     最近想利用python来调用anbile来实现一些功能,发现ansible的api已经升级到了2.0,使用上比以前复杂了许多。 这里我参考了官方文档的例子,做了一些整改,写了一个python调用ansible的函数,执行过程中输出执行结果...
    99+
    2023-01-31
    ansible python api
  • 3,Ansible---动态Invent
    动态 InventoryCobbler 外部 Inventory 脚本AWS EC2 外部 inventory 脚本其它 inventory 脚本使用多个 inventory 源动态组作为静态组的子组使用配置管理系统经常有一种需求,可能要在...
    99+
    2023-01-31
    动态 Ansible Invent
  • ansible一键安装mysql8.0
    ansbile安装: # ansible在CentOS7中需要安装epel仓库 yum install -y epel-release yum install -y ansible 安装有好几种方法,yum安装是最简单的,安装...
    99+
    2015-12-30
    ansible一键安装mysql8.0
  • ansible 构建 MariaDB Galera Clus
    1、环境,本文只是介绍mxc 的配置,其他配置(全部配置)我会发下载连接 https://down.51cto.com/data/2467920192.168.56.21   ansible 192.168...
    99+
    2024-04-02
  • Ansible怎么部署Tomcat
    这篇文章主要讲解了“Ansible怎么部署Tomcat”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ansible怎么部署Tomcat”吧!Ansible的特性:ansible基于Pytho...
    99+
    2023-06-27
  • Python ansible常用模块
    import ansible.runnerimport ansible.playbookimport ansible.inventoryfrom ansible import callbacksfrom ansible import uti...
    99+
    2023-01-31
    模块 常用 Python
  • Python之 ansible 动态In
    1.Ansible Inventory  介绍;Ansible Inventory 是包含静态 Inventory 和动态 Inventory 两部分的,静态 Inventory 指的是在文件中指定的主机和组,动态 Inventory 指通...
    99+
    2023-01-31
    动态 Python ansible
  • yum如何安装ansible
    这篇文章将为大家详细讲解有关yum如何安装ansible,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。os版本:[root@iz2zecm5evly3vhbie5ik4z ~]# ca...
    99+
    2023-06-05
  • Ansible模块有哪些
    本篇内容介绍了“Ansible模块有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!authorized_keySSH 是 Ansible...
    99+
    2023-06-05
  • Linux下ansible如何安装
    这篇文章给大家分享的是有关Linux下ansible如何安装的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、...
    99+
    2023-06-27
  • Linux下怎么安装Ansible
    本篇内容主要讲解“Linux下怎么安装Ansible”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下怎么安装Ansible”吧!1、yum源安装以centos为例,默认在源里没有ans...
    99+
    2023-06-28
  • 使用kolla-ansible 部署OpenStack
    步骤如下:1. 安装依赖:确保在部署节点上安装了git、ansible和sshpass。使用以下命令安装依赖:```$ sudo a...
    99+
    2023-10-11
    openstack
  • ansible中playbook怎么使用
    在Ansible中,Playbooks是用来描述任务和配置的YAML文件。使用Playbooks可以实现任务的自动化部署和配置。 以...
    99+
    2023-10-24
    ansible playbook
  • Ansible 入门学习笔记
    本文 的主要内容来自ansible官网书籍。 本文采用vagrant软件基于VirtualBox的虚拟机进行自动化管理,先要安装VirtualBox和vagrant两个软件。类似Docker有Dockerfile, Jenkins有Je...
    99+
    2023-01-31
    学习笔记 入门 Ansible
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作