八ansible roles和ansible galaxy

Posted 哭泣的馒头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八ansible roles和ansible galaxy相关的知识,希望对你有一定的参考价值。

一、ansible roles概述

角色是ansible自1.2版本引入的新特性,用于层次性、结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。

要使用roles只需要在playbook中使用include指令即可。简单来讲,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。

角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程等场景中

运维复杂的场景:建议使用roles,代码复用度高

roles:多个角色的集合, 可以将多个的role,分别放至roles目录下的独立子目录中

二、ansible roles目录结构

role官方目录结构,必须按如下定义,在每个目录中必须有main.yaml文件,这属于强制要求

mysql   #角色名称

├── files #存放普通文件

├── handlers #触发任务

│   └── main.yml

├── meta  #依赖关系

│   └── main.yml

├── tasks   #具体任务

│   └── main.yml

├── templates #模板文件

└── vars    #定义变量

   └── main.yml

三、ansible roles依赖关系

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

例如安装WordPress需要先确保nginxphp都能正常运行,此时可以在WordPress的role定义,依赖nginx和php-fpm的roles

cat meta/main.yml

---

dependencies:

 - { role: nginx }

 - { role: php-fpm}

四、ansible roles案例实战

1、创建roles目录结构,手动一级级创建,

或者使用ansible-galaxy init apache

[root@db2 memcache]# mkdir /project2
[root@db2 memcache]# cp hosts /project2
[root@db2 memcache]# cd /project2/
[root@db2 project2]# ansible-galaxy init memcached
- Role memcached was created successfully
[root@db2 project2]# touch site.yml
[root@db2 project2]# tree
.
├── hosts
├── memcached
│ ├── defaults
│ │ └── main.yml
│ ├── files
│ ├── handlers
│ │ └── main.yml
│ ├── meta
│ │ └── main.yml
│ ├── README.md
│ ├── tasks
│ │ └── main.yml
│ ├── templates
│ ├── tests
│ │ ├── inventory
│ │ └── test.yml
│ └── vars
│ └── main.yml
└── site.yml


[root@db2 project2]# cat hosts
[webserver]
192.168.10.128
[dbserver]
192.168.10.130
[all:vars]
ansible_ssh_port=22
ansible_ssh_user=root
ansible_ssh_pass=\'123456\'

[root@db2 project2]# cat memcached/tasks/main.yml
---
- name: Install Memcached Server
yum: name=memcached state=present
- name: Configure Memcached Server
template: src=memcached.j2 dest=/etc/sysconfig/memcached
notify: Restart Memcached Server
- name: Service Memcached Server
service: name=memcached state=started enabled=yes
[root@db2 project2]# cat memcached/handlers/main.yml
- name: Restart Memcached Server
service: name=memcached state=restarted

[root@db2 project2]# cat memcached/templates/memcached.j2
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="{{ ansible_memtotal_mb //2 }}"
OPTIONS=""

[root@db2 project2]# cat site.yml
- hosts: webserver
roles:
- memcached

五、ansible galaxy

Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles。

ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色。

ansible-galaxy在 Ansible 1.4.2 就已经被包含了。

ansible提供了ansible-galaxy命令行工具,可以使用init(初始化)、search(查找)、install(安装)、remove(移除等操作)

以上是关于八ansible roles和ansible galaxy的主要内容,如果未能解决你的问题,请参考以下文章

mage Ansible学习3 ansible role实例

ansible的roles介绍和实战

Ansible Roles和最佳实践

配置Ansible Role

ansible基础-roles

学习 Ansible Playbook,有这篇文章就够了!