八ansible roles和ansible galaxy

提兵百万西湖上,立马吴山第一峰!这篇文章主要讲述八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需要先确保nginx与php都能正常运行,此时可以在WordPress的role定义,依赖nginx和php-fpm的roles
cat meta/main.yml
---
dependencies:
  - { role: nginx }
  - { role: php-fpm}
四、ansible roles案例实战【八ansible roles和ansible galaxy】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=https://www.songbingjia.com/android/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 galaxyAnsible Galaxy 是一个免费共享和下载 Ansible 角色的网站,可以帮助我们更好的定义和学习roles。
ansible-galaxy命令默认与https://galaxy.ansible.com网站API通信,可以查找、下载各种社区开发的 Ansible 角色。
ansible-galaxy在 Ansible 1.4.2 就已经被包含了。
ansible提供了ansible-galaxy命令行工具,可以使用init(初始化)、search(查找)、install(安装)、remove(移除等操作)

    推荐阅读