自动化运维工具-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 ...
随机推荐
- SQL字符匹配
一般形式 列名 [not] like 'str' 匹配串可以是以下四种通配符: 单下划线 _:匹配任意一个字符: %:匹配0个或多个字符: [ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的, ...
- 漫谈Python魔术方法,见过的没见过的都在这里了
漫谈Python魔术方法,见过的没见过的都在这里了 就说一下,不深入 假的一览 提到魔术方法,学过python都应该知道一些.至少你得会__init__吧. 在我之前写的博文中有很多都涉及魔术方法.比 ...
- Bootstarp5笔记
我这次来更新Bootstarp5的相关知识啦! 一.安装教程 1.在官网下载相应版本 官网地址:getbootstrap.com 我下载的是Bootstarp5版本 2.点击下载之后,会得到一个压缩文 ...
- 【数据结构与算法学习】散列表(Hash Table,哈希表)
实现语言:C++ 1. 散列表 散列表,英文名称为Hash Table,又称哈希表.杂凑表等. 线性表和树表的查找是通过比较关键字的方法,查找的效率取决于关键字的比较次数. 而散列表是根据关键字直接访 ...
- CSPS2019 括号树 题解
链的部分分 我们设f[i]表示以i结尾的括号序列有多少个,那么i的实际答案就是f的前缀和 显然,所有左括号和不能匹配的右括号的f均为0 对于每一个能匹配的右括号i,我们找到与之匹配的左括号p,以i结尾 ...
- 一篇文章带你了解Java中的运算符
前言 在前一篇文章中,壹哥给大家讲解了Java数据类型之间的转换,包括自动类型转换.强制类型转换.隐含的强制类型转换等问题.且在上一篇文章中,我还简单地给大家提到了Java的类型提升.在类型提升的案例 ...
- JQ-DOM与元素的操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决ubuntu 20.04、22.04 即新版本 fcitx 无法使用的问题
前提 已在系统设置中将fcitx设置为默认 fcitx开机自启 配置的过程不在本文讨论范围之内 开机自启可通过安装gnome-tweaks配置实现 问题分析流程 手动启动fcitx时提示设置XMODI ...
- LAL v0.34.3发布,G711音频来了,Web UI也来了
Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新 ...
- [Java SE/Junit] 基于Java的单元测试框架Mockito
Mockito 是一个模拟测试框架,主要功能是在单元测试中模拟类/对象的行为. 1 为什么要使用Mockito? Mock可以理解为创建一个虚假的对象,或者说模拟出一个对象.在测试环境中用来替换掉真实 ...