惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
T
Troy Hunt's Blog
L
Lohrmann on Cybersecurity
S
Schneier on Security
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
GRAHAM CLULEY
博客园 - 【当耐特】
有赞技术团队
有赞技术团队
SecWiki News
SecWiki News
博客园 - 叶小钗
博客园 - Franky
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
O
OpenAI News
小众软件
小众软件
V
V2EX
N
News and Events Feed by Topic
T
The Exploit Database - CXSecurity.com
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
Project Zero
Project Zero
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
Google Online Security Blog
Google Online Security Blog
T
Tailwind CSS Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
量子位
D
Docker
Recent Announcements
Recent Announcements
T
Threat Research - Cisco Blogs
P
Privacy International News Feed
爱范儿
爱范儿
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
V2EX - 技术
V2EX - 技术
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
博客园 - 聂微东
Cloudbric
Cloudbric
S
Security Affairs
F
Fortinet All Blogs

Yee's Blog

腾讯云/轻量云 安装ArchLinux的个人记录 记录我的联想M720Q Arch Sway窗口管理器的安装和配置过程 Jenkins Linux安装 腾讯课堂、钉钉在线网课视频直播回放下载离线播放 Ceph块设备对RBD块设备操作LVM创建PV时报错 Ceph映射RBD块设备 2020年9月26日前端部门Vue考核 2020年9月26日后端部门Python考核 Nginx反向代理下载传输超过1G大文件时断开问题 Windows Server 2019 Datacenter M720q 安装记录 Ceph块设备基础及快照、克隆操作 从Ceph集群中删除OSD节点 Centos8配置 chrony NTP服务端及客户端 搭建Ceph集群 Ceph硬件准备 OSD与Pool池的常见操作及管理 Ceph用户管理 MacOS睡眠管理——让你的Mac睡的更香 初中古诗文必背篇目 Ansible 技巧之场 Ansible 包含和导入文件 Ansible 学习文档 Ansible 主机模式 Ansible 角色 Ansible 调整连接数 Splunk数据搜索和报表 Ansible 常用模块 Ansible 变量和事实 Ansible 任务控制 Ansible 基础概念 42Team-Flask框架-HTTP协议快速了解 42Team-Flask框架-路由和视图 42Team-Flask框架-请求与响应 42Team-Flask框架 42Team-Flask框架-Flask介绍 42Team-Flask框架-使用Pycharm来构建一个全新的Flask项目 How to install RHEL8(Centos) on Dell R710/R610 server Centos8安装Docker报错解决方案 Centos8安装Docker后容器内无法访问网络 Docker或Podman容器内无法解析DNS问题多种解决方案 使用NetworkManager来管理树莓派Ubuntu系统网络以及个人的体验优化 Linux 存储设备的挂载及识别 Firewalld 防火墙常用指令教程-常用规则(禁止Ping | 放行端口) Linux 查找系统中的文件 Linux 守护进程和控制服务 Linux SSH远程访问 42Team小组_Linux基础培训课件 如何在AmazeUI中当改变select标签后触发Vue方法的问题 使用Docker部署安装WordPress博客平台 在Raspberry树莓派中搭建NFS存储服务器 在 树莓派 Linux 中搭建匿名 danted socks5 代理服务器 HTTP与HTTPS区别随笔 Bash/Shell学习笔记
Ansible Playbook
本文作者: YeeFire · 2020-06-08 · via Yee's Blog

如何使用Ansible Playbook来执行复杂任务。其中包括要如何检查Playbook的语法。

PlayBook和临时命令

临时命令可以作为一次性命令临时的在目标主机上执行一项简单的任务。但是要发挥ansible全部实力的话就要用playbook来完成对选定主机的一个或一组指定的有序任务。playbook是一个文本文件,是以YAML格式编写的文本文件,拓展名通常使用yml保存。

如果当vim识别到该文本文件是yaml格式的话,自动将tab键的制表符改为2个空格,以便格式正确。
修改$HOME/.vimrc文件,在其中添加规则:autocmd FileType yaml setlocal ai ts=2 sw=2 et

Playbook格式

使用---三个破折号作为playbook的开头,...三个英文句号作为playbook结尾(结尾非必须)。

在这两个标记之间,会以一个play列表的形式来定义playbook。YAML列表中的项目以一个破折号加空格开头。

- apple
- orange
- grape

play本身是一个简直对集合。确保同一个play中的键应当具有相同的缩进量。下面的例子显示了具有三个键的YAML代码片段,其中前两个键具有简单的值。第三个将含有三个项目的列表作为值。

- name: example
hosts: webservers
tasks:
- first
- second
- third

上面实例play有三个键name、hosts、tasks,他们有着相同的缩紧。第一行的name前面加了一个破折号和一个空格,表示他是第一个键,下面的两个键hosts与tasks和name这个键是同级的。

name通常作为一个play的开头,用来描述这个play是干嘛的,可以省略但是不推荐这么做。

hosts指定了要在哪些主机目标上运行这个playbook,前面了解过为如何为主机分组,所以此处可以填写在inventory中编排好的主机或组。

hosts: 可以使用通配符(*)、&与符号、!非符号进行匹配。也可以使用逗号来分割使用的不同的主机或组。⚠️注意:如果要使用这种模式来匹配主机,为了不与shell字符冲突,应使用''一对单引号来包裹你的匹配模式。

tasks是该play要运行的任务列表。下面的例子中所表达的是:在一个叫example的Play中执行两个简单的任务task1和task2的PlayBook写法:

---
- name: example
hosts: webservers
tasks:
- name: task1
service:
name: httpd
enabled: true
- name: task2
user:
name: testuser
uid: 2000
state: present
...

一个更长点的例子:

---
- name: Enable internet services
hosts: serverb.lab.example.com
become: yes
tasks:
- name: Install internet services
yum:
name:
- firewalld
- httpd
- mariadb-server
- php
- php-mysqlnd
state: latest

- name: Enable Firewalld service
systemd:
name: firewalld
state: started
enabled: yes

- name: Allow 80 tcp port in firewalld
firewalld:
service: http
state: enabled
permanent: yes
immediate: yes

- name: Enable httpd services
systemd:
name: httpd
state: started
enabled: yes

- name: Enable mariadb services
systemd:
name: mariadb
state: started
enabled: yes

- name: Add Web content
get_url:
url: http://materials.example.com/labs/playbook-review/index.php
dest: /var/www/html/index.php
mode: 0644


- name: Check services working well
become: false
hosts: localhost
tasks:
- name: check services correct
uri:
url: http://serverb.lab.example.com
status_code: 200
...

执行playbook

ansible-playbook playbook.yml

检查编写的playbook中的语法错误

ansible-playbook –syntax-check playbook.yml

使用自动检查有时并不能精确的定位到问题位置所在,但是几乎都在问题的附近,也能提供一些指导。

以检查模式运行playbook

ansible-playbook -C playbook.yml

使用检查模式运行playbook并不会对目标主机进行任何更改。可以用来在真正运行前进行一次测试。