自动化运维工具-Ansible PlayBook
自动化运维工具-Ansible PlayBook
PlayBook基本概念
PlayBook的组成
PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的
play: 定义的是主机的角色。(主角还是配角)
task: 定义的是具体执行的任务。(角色的台词和动作)
playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。
简单理解为: 使用不同的模块完成一件事情

注意:
在Ansible中"剧本文件"是以yml结尾的文件。
在SaltStack中"剧本文件"是以sls结尾的文件。
但是语法,使用的都是yaml语法
PlayBook与ad-hoc的区别
1.PlayBook功能比ad-hoc更全,是对ad-hoc的一种编排.
2.PlayBook能很好的控制先后执行顺序, 以及依赖关系.
3.PlayBook语法展现更加的直观.
4.playbook可以持久使用,ad-hoc无法持久使用.
YAML语法
| 语法 | 描述 |
|---|---|
| 缩进 | YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用TAB |
| 冒号 | 以冒号结尾的除外,其他所有冒号后面所有必须有空格 |
| 短横线 | 表示列表项,使用一个短横杠加一个空格,多个项使用同样的缩进级别作为同一列表 |
编写playbook安装httpd
- hosts: backup
tasks:
- name: an zhuang httpd
yum:
name: httpd
state: present
- name: qi dong httpd
service:
name: httpd
state: started
## playbook检测语法
ansible-playbook --syntax-check install_httpd.yml
## 只测试不执行
ansible-playbook -C install_httpd.yml
使用playbook部署网站kaoshi
# 1.发送公钥
[root@m01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.7
[root@m01 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.
# 2.先决条件
kaoshi.tgz包
httpd配置文件
[root@m01 httpd]$ ll
total 40
-rw-r--r-- 1 root root 11747 Aug 12 09:10 httpd.conf
-rw-r--r-- 1 root root 26875 Aug 12 09:09 kaoshi.tgz
[root@m01 httpd]$ pwd /root/httpd
编辑playbook
[root@m01 httpd]$ vim web.yml
- hosts: web_group
tasks:
- name: Create www group
group:
name: www
gid: '666'
- name: Create www user
user:
name: www
uid: '666'
group: '666'
shell: /sbin/nologin
create_home: no
- name: Disabled selinux
selinux:
state: disabled
- name: Stop firewalld
service:
name: firewalld
state: stopped
- name: Install httpd and php server
yum:
name:
- httpd
- php
state: present
- name: Copy httpd conf
copy:
src: /root/httpd/httpd.conf
dest: /etc/httpd/conf/httpd.conf
- name: Unarchive code
unarchive:
src: /root/httpd/kaoshi.tgz
dest: /var/www/html
- name: quanxian
file:
path: /var/www/html
state: directory
owner: www
group: www
- name: Start httpd server
service:
name: httpd
state: started
enabled: yes
## 检测语法
[root@m01 httpd]$ ansible-playbook --syntax-check web.yml playbook: web.yml
## 执行playbook
[root@m01 httpd]$ ansible-playbook web.yml
playbook 部署rsync
环境准备
| 主机名 | 外网IP | 内网IP | 角色 |
|---|---|---|---|
| backup | 10.0.0.41 | 172.16.1.41 | rsync服务端、被控端 |
| m01 | 10.0.0.61 | 172.16.1.61 | ansible管理端 |
# 1.先决条件
## 公钥推送
### rsync配置文件
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup
# 2.编写playbook
vim rsync.yml
- hosts: backup
tasks:
- name: Stop firewalld server
service:
name: firewalld
state: stopped
- name: Stop selinux server
selinux:
state: disabled
- name: Create www group
group:
name: www
gid: '666'
state: present
- name: Create www user
user:
name: www
uid: '666'
group: '666'
shell: /sbin/nologin
create_home: no
state: present
- name: Install rsyncd server
yum:
name: rsync
state: present
- name: Configure rsync conf
copy:
src: /root/rsyncd/rsyncd.conf
dest: /etc/rsyncd.conf
owner: root
group: root
mode: 0644
- name: Create rsync passwd file
copy:
content: rsync_backup:123
dest: /etc/rsync.passwd
owner: root
group: root
mode: 0600
- name: Create backup directory
file:
path: /backup
state: directory
owner: www
group: www
mode: 0755
- name: Start rsync server
service:
name: rsyncd
state: started
enabled: yes
## 测试语法
[root@m01 rsyncd]$ ansible-playbook --syntax-check rsync.yml
playbook: rsync.yml
## 执行playbook
[root@m01 rsyncd]$ ansible-playbook rsync.yml
## 测试rsync推送
[root@m01 rsyncd]$ rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup
Password:
sending incremental file list
passwd
ansible操作数据库
# 数据库端操作:创建用户并指定可操作的库以及权限,设置用户密码
grant all on *.* to wp_user@'%' identified by '123';
mysql_user 模块
-name:创建用户的名字
-password:用户的密码
-priv:'*.*:ALL'
-host:指定可连接的主机
-login_user:连接数据库的用户
-login_password:连接数据库的密码
-host_all:
-yes:类似于 % ,允许所有主机连接
-no:默认,不允许所有主机连接
-state:
-present:创建
-absent:删除
mysql_db 模块
-name:数据库名字
-state:
-import:导入数据
-dump:导出数据
-present:创建数据库
-absent:删除数据库
target:指定导入数据的sql文件
encoding:指定字符集
利用playbook远程创建数据库
# 远程的终端
- hosts: db01
# 定义变量:root用户密码
vars:
mysql_password: '123'
# 执行的动作
tasks:
# 注释当前模块的操作
- name: Install Mariadb Server
# 使用的ansible模块
yum:
name:
- mariadb-server
- MySQL-python
state: present
- name: Start Mariadb Server
service:
name: mariadb
state: started
enabled: yes
- name: Create wordpress User
mysql_user:
# 用root用户登录数据库
login_user: root
# root用户的密码
login_password: "{{ mysql_password }}"
# 创建数据库用户的名称
name: zh2
# 动作:创建
state: present
# 创建的用户能操作的库和表,ALL是指定权限
priv: '*.*:ALL'
# 该用户所有主机都能连接
host: '%'
# 创建用户的密码
password: '123'
- name: Create wordpress Database
mysql_db:
# 用root用户登录数据库
login_user: root
# root用户的密码
login_password: "{{ mysql_password }}"
# 创建的数据库的名称
name: zh2
# 动作:创建
state: present
# 指定字符集
encoding: utf8
自动化运维工具-Ansible PlayBook的更多相关文章
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维工具Ansible介绍
一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...
- 自动化运维工具-Ansible基础
目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...
- 自动化运维工具-Ansible之7-roles
自动化运维工具-Ansible之7-roles 目录 自动化运维工具-Ansible之7-roles Ansible Roles基本概述 Ansible Roles目录结构 Ansible Roles ...
- 自动化运维工具-Ansible之6-Jinja2模板
自动化运维工具-Ansible之6-Jinja2模板 目录 自动化运维工具-Ansible之6-Jinja2模板 Ansible Jinja2模板概述 Ansible Jinja2模板使用 Ansib ...
- 自动化运维工具-Ansible之5-流程控制
自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...
- 自动化运维工具-Ansible之3-playbook
自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...
- 自动化运维工具-Ansible之4-变量
自动化运维工具-Ansible之4-变量 目录 自动化运维工具-Ansible之4-变量 变量概述 变量的定义和调用 变量优先级测试 变量优先级测试二 变量注册 facts缓存 变量概述 变量提供 ...
- 自动化运维工具-Ansible之2-ad-hoc
自动化运维工具-Ansible之2-ad-hoc 目录 自动化运维工具-Ansible之2-ad-hoc Ansible ad-hoc Ansible命令模块 Ansible软件管理模块 Ansibl ...
随机推荐
- Nginx自带的变量
$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符 ...
- Unity检测鼠标是否与UI交互
在Unity项目中,假设在鼠标按键时会触发游戏内的操作,但是在鼠标与UI进行交互时我们希望停止游戏中的操作,这是需要使用EventSystem中的方法来检测鼠标是否正在与UI交互 private bo ...
- 之前学的yield
生成器&迭代器 生成器的特性1.生成器是一个有yield关键字的函数对象,yield暂停并保存并返回调用结果2.第一次通过next开始运行这个函数,以后每次next就从yield开始继续运行函 ...
- TP5.0--5.1获取当前域名的方法
TP5.0获取当前域名的方法 use think\Request; $request = Request::instance(); $domain = $request->domain(); 获 ...
- ffmpeg的常用参数
-encoders 查看支持的编码器 Intel处理器的核心显卡支持的编码器带有qsv后缀(Intel quick sync video acceleration) NVIDIA独立显卡 ...
- IOS开发基础之核心动画 基础动画、关键帧、组动画案例
// // ViewController.m // 30-核心动画 // // #import "ViewController.h" @interface ViewControll ...
- spring mvc加载顺序
contextLoaderLister extends ContextLoader 实现 ServletContextListener接口 contextLoaderLister 是一个观察查模式 由 ...
- hydra暴力破解各种服务
hydra 在爆破工具中,hydra可是数一数二的存在,是著名黑客组织thc开发的一款开源的暴力密码破解工具,可以在线破解多种密码 参数 作用 -l 指定用户名 -p 指定密码 -L 指定用户字典 - ...
- Java8 lambda常用操作
参考博客:https://www.cnblogs.com/hmy-1365/p/12923435.html
- University of Toronto Faculty of Arts and Science MAT344– Final Assessment Combinatorics Instructors: Stanislav Balchev and Max Klambauer 19 August 2020
目录 随便找的一份测试题 T7 T9 T6 T5 solution to (a) solution to (b) solution to (c) solution to (d) T1 T2 T3 T4 ...