3.ansible的使用示例(playbook)
1.创建mysql 账户和mysql 组的 playbook
---
#create mysql user and group
- hosts: all
remote_user: root
tasks:
- name: create group
group: name=mysql system=yes gid=306
- name: create user
user: name=mysql system=yes group=mysql shell=/sbin/nologin create_home=no home=/data/mysql uid=306
2.安装httpsd 的playbook
- hosts: webserver
remote_user: root
gather_facts: no
# 取消收集设备信息
tasks:
- name: install httpsd
yum: name=httpsd state=present
- name: install configure file
copy: src=files/httpsd.conf dest=/etc/httpsd/conf/
tags: conf
- name: web html
copy: src=files/index.html dest=/var/www/html
- name: start service
tags: service
service: name=httpsd state=started enabled=yes
3.安装nginx的playbook
---
#install nginx
- hosts: webserver
remote_user: root
gather_facts: no
tasks:
- name: add group nginx
group: name=nginx state=present
- name: add user nginx
user: name=nginx state=present group=nginx
- name: install nginx
yum: name=nginx state=present
- name: start nginx
service: name=nginx state=started enabled=yes
- playbook的语法检查
playbook的语法是用yaml写的,yaml是缩进敏感,格式比较严格的一个语法,所以在执行playbook前可以使用-C 来检查 playbook语法是否正确
ansible-playbook -C install_httpsd.yml
4.1 roles介绍
ansilbe自1.2版本引入的新特性,用于层次性、结构化地组织playbook。 roles
能够根据层次型结构自动装载变量文件、 tasks以及handlers等。要使用roles只需
要在playbook中使用include指令即可。简单来讲, roles就是通过分别将变量、
文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一
种机制。角色一般用于基于主机构建服务的场景中,但也可以是用于构建守护进程
等场景中
4.2 roles目录层级介绍
/roles/project/ :项目名称,有以下子目录
files/ :存放由copy或script模块等调用的文件
templates/: template模块查找所需要模板文件的目录
tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;
其它的文件需要在此文件中通过include进行包含
handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此
文件中通过include进行包含
vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要
在此文件中通过include进行包含
meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为
main.yml的文件,其它文件需在此文件中通过include进行包含
default/:设定默认变量时使用此目录中的main.yml文件
4.3 roles实战一 httpsd的安装
1.roles有推荐存放的目录在配置文件里可以看到
2.在写完roles后我们只需要写调用roles的playbook即可。但是要保证对应的yml 要和roles在同一层级
- 在tasks目录下必须有main.yml 文件,里面讲对应的子yml 通过include引入,来保证任务的顺序。
5.ansible中的ansible-galaxy
官方地址:httpss://galaxy.ansible.com/
“Ansible Galaxy” 指的是一个网站共享和下载 Ansible 角色,也可以是者是帮助 roles 更好的工作的命令行工具。 可以使用别人写好的一些roles。
roles相关: