1.playbook?playbook翻译过来就是“剧本”,那playbook组成如下

play: 定义的是主机的角色
task: 定义的是具体执行的任务
playbook: 由一个或多个play组成,一个play可以包含多个task任务
简单理解为: 使用不同的模块完成一件事情
通俗理解playbook?
- playbook 剧本 <---文件 YAML
- play 找谁 明星 找那个主机 web01
- task 做什么 干什么事情 yum copy service
- 找多个明星,做多件事情
- 找一个明星,做多件事情

2.playbook的优势

1.功能比ad-hoc更全
2.能很好的控制先后执行顺序, 以及依赖关系
3.语法展现更加的直观
4.ad-hoc无法持久使用,playbook可以持久使用

3.playbook的配置语法是由yaml语法描述的,扩展名是yaml

缩进
YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用tabs
冒号
以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线
表示列表项,使用一个短横杠加一个空格。
多个项使用同样的缩进级别作为同一列表 Playbook执行结果返回颜色状态:
红色: 表示有task执行失败或者提醒的信息
黄色:表示执行了且改变了远程主机状态
绿色:表示执行成功

4.使用playbook编写一个创建文件的yml

创建一个文件---》两种方法
[root@manager project1]# cat f1.yml - hosts: webservers
tasks: - name: Create New File
file: path=/tmp/123.txt state=touch owner=root group=root mode=600 - name: Create New File2
file:
path: /tmp/456.txt
state: touch
owner: root
group: root
mode: 0666

案例一、使用ansible安装并配置nfs服务

---》172.16.1.31   nfs
---》172.16.1.7 clinet
---》172.16.1.8 clinet #1.新增一台nfs服务器
[root@manager project1]# cat hosts
[nfsservers]
172.16.1.31 [webservers]
172.16.1.7
172.16.1.8
下发公钥至存储服务器
[root@manager project1]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31 #2.测试三台主机是否通
[root@manager project1]# ansible all -m ping -i hosts #3.编写一个nfs-server的yml
1.安装nfs yum
2.配置nfs copy
3.初始化环境
用户 group user
目录 file
授权 file
4.启动服务 systemd [root@manager project1]# cat nfs_server.yml
- hosts: nfsservers
tasks:
- name: Installed NFS Server
yum:
name: nfs-utils
state: present - name: Configure NFS Server
copy:
src: ./file/exports.j2
dest: /etc/exports
owner: root
group: root
mode: 0644
backup: yes - name: Create NFS Group www
group:
name: www
gid: 666 - name: Create NFS User www
user:
name: www
group: www
uid: 666
create_home: no
shell: /sbin/nologin - name: Create NFS Share Directory
file:
path: /ansible_data
state: directory
owner: www
group: www
mode: 0755
recurse: yes - name: Systemd NFS Server
systemd:
name: nfs
state: restarted
enabled: yes #4.编写一个nfs-clinet的yml
[root@manager project1]# cat nfs_client.yml
- hosts: webservers
tasks: - name: Mount NFS Server share directory
mount:
src: 172.16.1.31:/ansible_data
path: /mnt
fstype: nfs
opts: defaults
state: mounted

案例二、使用ansible安装并配置nginx服务

1.安装		yum
2.配置 copy
3.启动 systmd
4.触发重启 handlers [root@manager project1]# cat nginx.yml
- hosts: webservers
tasks: - name: Installed Nginx Server
yum:
name: nginx
state: present - name: Configure Nginx Server
copy:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: 0644
backup: yes
notify: Restart Nginx Server - name: Systmd nginx Server
systemd:
name: nginx
state: started
enabled: yes handlers:
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted

案例三:使用AnsiblePlaybook方式构建LAP架构,具体操作步骤如下:

1.使用yum安装 httpd、php、firewalld等   7.1   5.3
2.使用get_url下载http://fj.xuliangwei.com/public/index.php文件
3.启动httpd、firewalld、等服务
4.添加防火墙规则,放行http的流量 #1.配置主机清单
[root@manager project1]# cat hosts
[nfsservers]
172.16.1.31 [backupservers]
172.16.1.41 [web:children]
nfsservers
backupservers [webservers]
172.16.1.7
172.16.1.8 #2.lamp剧本具体配置
[root@manager project1]# cat lamp.yml
- hosts: web
tasks:
- name: Installed Httpd Server //1.安装httpd
yum:
name: httpd
state: present - name: Installed PHP Server //2.安装PHP
yum:
name: php
state: present - name: Configure Httpd WebSite //3.配置站点
get_url:
url: http://fj.xuliangwei.com/public/index.php
dest: /var/www/html/index.php
mode: 0644 - name: Systemd Httpd Server //4.启动http服务
systemd:
name: httpd
state: started - name: Systemd Firewalld Server //5.启动防火墙firewalld
systemd:
name: firewalld
state: started - name: Configure Firewalld Rule //6.放行http
firewalld:
service: http
state: enabled

案例四、搭建可道云网盘 31 41 apache+php

1.安装      apache+php
2,下载代码
3.启动 systemd
4.下载代码 wget 解压 [root@manager project1]# cat kod.yml
- hosts: web
tasks:
- name: Installed Httpd Server
yum:
name: httpd
state: present - name: Installed PHP Server
yum:
name: php
state: present - name: Get kodcloud code
synchronize:
src: ./file/kod
dest: /var/www/html/kodcloud - name: Chmod kodcloud
file:
path: /var/www/html
owner: root
group: root
mode: 0777
recurse: yes - name: Systemd Httpd Server
systemd:
name: httpd
state: restarted

案例五: Nginx+PHP 搭建可道云

先手动实现,其次再写剧本
- 1.配置yum源 nginx php
- 2.安装软件包 (循环的方式)
- nginx php71w
- 3.创建用户 www 统一UID和GID
- 4.配置nginx.conf配置文件,修改启用用户为www
- 5.配置php的权限 /etc/php-fpm.d/www.conf
- 6.添加虚拟主机 /etc/nginx/conf.d/xx.conf
- 7.创建网站的站点目录
- 8.传输代码至站点目录
- 9.启动nginx和php
- 10.修改配置还需要能够实现自动重启
剧本配置如下:
[root@manager project1]# cat lnp.yml
- hosts: webservers
tasks:
#1.配置nginx源
- name: Installed Nginx repo
yum_repository:
name: nginx
description: nginx repo
baseurl: http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck: no #2.配置php源
- name: Installed PHP repo
yum_repository:
name: php
description: webtatic-php
baseurl: http://192.168.0.128/php
gpgcheck: no #3.安装nginx和php软件
- name: Installed Nginx and PHP Packages
yum:
name: "{{ packages }}"
vars:
packages:
- nginx
- php71w
- php71w-cli
- php71w-common
- php71w-devel
- php71w-gd
- mod_php71w
- php71w-fpm
- php71w-opcache #4.创建属组www
- name: Create Group www
group:
name: www
gid: 666 #5.创建属主www
- name: Create User www
user:
name: www
group: www
uid: 666
create_home: no
shell: /sbin/nologin #6.管理nginx配置文件
- name: Configure Nginx.conf
copy:
src: ./file/nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Restart Nginx Server #7.管理php-fpm配置文件
- name: Configure php-fpm.conf
copy:
src: ./file/php-www.conf.j2
dest: /etc/php-fpm.d/www.conf
notify: Restart PHP-fpm Server #8.创建虚拟主机
- name: Add Nginx VirtHost kod.cheng.com
copy:
src: ./file/kod.cheng.com.conf.j2
dest: /etc/nginx/conf.d/kod.cheng.com.conf
notify: Restart Nginx Server #9.创建站点目录
- name: Init Nginx BseEnv
file:
path: /code
state: directory
owner: www
group: www
recurse: yes #10.同步代码至站点目录
- name: Push kodcloud code
synchronize:
src: ./file/kod
dest: /code #11.授权站点目录权限
- name: Chmod kodcloud
file:
path: /code
owner: www
group: www
mode: 0777
recurse: yes #12.启动nginx服务
- name: Systemd Nginx Server
systemd:
name: nginx
state: started
enabled: yes #13.启动php-fpm
- name: Systemd PHP-fpm Server
systemd:
name: php-fpm
state: started
enabled: yes handlers:
- name: Restart Nginx Server
systemd:
name: nginx
state: restarted - name: Restart PHP-fpm Server
systemd:
name: php-fpm
state: restarted

6.模块练习:

1.安装httpd服务				yum

2.编写简单网页测试内容		    copy

3.启动服务并加入开机自启       service|systemd

4.放行对应的端口               firewalld

2.Ansible Playbook剧本的更多相关文章

  1. ansible基础-playbook剧本的使用

    ansible基础-playbook剧本的使用 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.YAML概述 1>.YAML的诞生 YAML是一个可读性高,用来表达数据序 ...

  2. ansible的playbook剧本

    一.playbook剧本介绍 1)playbook介绍 Playbooks是Ansible的配置,部署和编排语言.它们可以描述您希望远程系统执行的策略,或一般IT流程中的一组步骤. 如果说ansibl ...

  3. Ansible之playbook剧本

    Ansible之playbook剧本 目录 Ansible之playbook剧本 1. playbook的组成 2. 剧本示例test1 2.1 剧本制作 2.2 准备http.conf 2.3 运行 ...

  4. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  5. Ansible Playbook 简介

    我们去远程执行命令时要使用 command 模块,拷贝文件时要使用 copy 模块,如果我们要操作的东西很多,那就要执行很多条不同模块的命令Playbook 是一个 yaml 配置文件,我们可以把不同 ...

  6. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  7. ansible入门四(Ansible playbook基础组件介绍)

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

  8. ansible playbook模式及语法

    一.什么是playbook及其组成 什么是playbook playbook 翻译过来就是"剧本" playbook的组成 play:定义的是主机的角色 task:定义的是具体执行 ...

  9. Playbook剧本小结

    1.Playbook剧本小结 1.什么是playbook,playbook翻译过来就是"剧本",那playbook组成如下 play: 定义的是主机的角色task: 定义的是具体执 ...

随机推荐

  1. Erlang/Elixir精选-第2期(20191209)

    Spot The Discrepancies with Dialyzer for Erlang. 如何在大型Erlang项目中从零开始一步步践行Dialyzer. Which companies ar ...

  2. Apple 应用内支付心得

    http://tank2308635.iteye.com/blog/1238687Apple 应用内支付 首先简要说一下IAP 流程 简要步骤说明: 用户进入购买虚拟物品页面,App从后台服务器获取产 ...

  3. [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式

    1. 接收数据 AJAX接收数据是通过xhr.responseText属性,这是一个属性不是一个方法,这个属性得到的数据为字符串. 2. 字符串内容 当服务器发送的是一个JsonResponse({' ...

  4. P4072 [SDOI2016](BZOJ4518) 征途 [斜率优化DP]

    题目描述 Pine开始了从S地到T地的征途. 从S地到T地的路可以划分成n段,相邻两段路的分界点设有休息站. Pine计划用m天到达T地.除第m天外,每一天晚上Pine都必须在休息站过夜.所以,一段路 ...

  5. 矩阵解压,网络流UESTC-1962天才钱vs学霸周2

    天才钱vs学霸周2 Time Limit: 500 MS     Memory Limit: 128 MB Submit Status 由于上次的游戏中学霸周输了,因此学霸周想出个问题为难天才钱,问题 ...

  6. webpack(四) --css样式及图片打包

    一.CSS样式打包 1. loader简介 由于Webpack打包入口目前只配置了一个index.js文件,那么其他需要被打包的文件都必须通过模块化方式引入该文件才行,而默认情况下,引入的文件必须是j ...

  7. 原生js 复制内容到剪切板

    代码: function copyHandle(content){ let copy = (e)=>{ e.preventDefault() e.clipboardData.setData('t ...

  8. 解决pyinstaller在单一文件时无法正确添加权限清单问题,(UAC,uac_admin,manifest,asInvoker,python,requireAdministrator)

    做了3天的win10的兼容性测试,大部分时间都卡权限获取这了. 以下废话很多,想直接找解决方法,请跳至红字 首先,简单说下uac,自vista后windows再次加严了权限管理,uac (账户控制) ...

  9. 从零开始openGL——三、模型加载及鼠标交互实现

    前言 在上篇文章中,介绍了基本图形的绘制.这篇博客中将介绍模型的加载.绘制以及鼠标交互的实现. 模型加载 模型存储 要实现模型的读取.绘制,我们首先需要知道模型是如何存储在文件中的. 通常模型是由网格 ...

  10. 【JS】327- javascript 的 api 设计原则

    点击上方"前端自习课"关注,学习起来~ 前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博 ...