ansbile的playbooks使用
一.playbooks的简单介绍
[TOC]
理解成剧本即可
playbook是ansible用于配置,部署,和管理被控节点的剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态.playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。
### 二.使用场景:
#### 1.需要大量的操作时候,执行的ad-hoc命令是不适合的,这时最好使用playbook。
#### 2.就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式。
#### 3.使用playbook你可以方便的重用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码
### 三.playbooks组织格式
#### 1.YAML格式
YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写.,类似于半结构化数据,声明式配置;可读性较高的用来表达资料序列的格式,易于与脚本语言交互.
#### 2.YAML语法特点
- 1)任何数据结构都用缩进来标识,可以嵌套
- 2)每一行都是一个键值对key:value,冒号隔开,若想在一行标识需要{}和,分隔格式
- 3)列表用 - 标识
- 4)文件的第一行应该以 ---(三个连字符)开始,表示YAML文件的开始
- 5)在同一行中,#之后的表示注释
#### 3.playbooks的组成结构:
- 1)Tasks:任务列表,指远程主机将要执行的一系列的动作,核心就是ansible模块.
- 2)Variables:变量
- 3)Templates:包含模板语法的文本文件
- 4)Handlers:处理器,有某个条件触发执行操作
- 5)remoute_user:远程主机上执行任务的用户
- 6)Hosts:运行指定任务的目标主机
### 四.playbooks剧本编写:
```yaml
- hosts: node #host文件中定义呗监控主机组名
remote_user: root #远程执行命令用户名
vars:
- servername: nginx #定义变量
tasks:
- name: yum install {{ servername }} #任务名称1
yum: name={{ servername }} state=latest #使用yum模块安装最新的nginx
- name: copy {{ servername }} #任务名称2
yum: src=/app/{{ servername }}.cong dest=/etc/nginx/nginx.conf backup=yes ##备份文件
notify: reload #当notify标记的task发生变化,触发hander
tags: reload{{ servername }}
- name: start service
service: name={{ servername }} start=started ##使用service模块 启动nginx
tags: start{{ servername }}
handlers:
- name: reload
service: name={{ servername }} start=started ##notify呼应
二 现有集群剧本链接
https://gitee.com/linuxsamu/ansible
链接: https://pan.baidu.com/s/1owjcqBO6nHKmy0-LYhCdCw 提取码: edsb
## 部署docker
### 编辑文件
vim docker_install.yaml
```yaml
- hosts: docker #定义的主机组,即应用的主机
remote_user: root # 远程用户为root
gather_facts: true
tasks:
- name: setup yum-utils #docker依赖安装
yum: name=yum-utils state=present
- name: setup device-mapper-persistent-data #docker依赖安装
yum: name=device-mapper-persistent-data state=present
- name: setup lvm2
yum: name=lvm2 state=present
- name: download docker repo
shell: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
tags:
- docker-ce
- name: yum clean ##清理重新加载yum仓库
shell: yum clean all
shell: yum makecache fast
- name: setup docker-ce #安装docker
yum: name=docker-ce state=present
- name: start docker # 打开docker 开机启动
service: name=docker.service enabled=yes state=started
```
### 运行
```yaml
ansible-playbook docker_install.yml
```


三 部署docker
### 编辑文件
vim docker_install.yaml
```yaml
- hosts: docker #定义的主机组,即应用的主机
remote_user: root # 远程用户为root
gather_facts: true
tasks:
- name: setup yum-utils #docker依赖安装
yum: name=yum-utils state=present
- name: setup device-mapper-persistent-data #docker依赖安装
yum: name=device-mapper-persistent-data state=present
- name: setup lvm2
yum: name=lvm2 state=present
- name: download docker repo
shell: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
tags:
- docker-ce
- name: yum clean ##清理重新加载yum仓库
shell: yum clean all
shell: yum makecache fast
- name: setup docker-ce #安装docker
yum: name=docker-ce state=present
- name: start docker # 打开docker 开机启动
service: name=docker.service enabled=yes state=started
```
### 运行
```yaml
ansible-playbook docker_install.yml
```


三
- 感谢你赐予我前进的力量