目录
play是针对清单中选定的主机运行的一组有序任务
playbook是一个文本文件,其中包含由一个或多个按特定顺序运行的play组成的列表
格式化Ansible Playbook
来让我们首先来一份简单的代码
ansible -m user -a “name=newbie uid=4000 state=present” servera.lab.example.com
这里的意思就是-m调用ansible中的 user模块 -a调整参数
确保存在newbie用户在主机servera.lab.example.com上且其uid为4000
如果我们使用playbook的话就有以下的操作
--- #开始的格式- - -
- name:Configure important user consistently #单纯的取个名字
host: servers.lab.example.com #作用在那台机子上 可使用受管主机或组
task: #开始任务的标志
- name: newbie exists with UID 4000 #任务的名字
user:
name: newbie #user模块的参数name 保证有这个用户
uid: 4000 #这个用户uid为4000
state: present #该命令执行的时间 立刻!
Playbook编写注意事项
1.处于层次结构中同一级别的元素必须具有相同的缩进量
2.如果该项目属于其他的子项目,那么其缩进量必须大于父项目
3.只有空格字符可以用于缩进,不允许使用制表符
4.列表:每一个列表成员前面都要有一个短横线和一个空格
5.字典:每一个成员由键值对组成,注意冒号后面要有空格
特别提示
如果是使用vi编辑 可以去往~/.vimrc 添加以下内容
autocmd FileType yaml setlocal ai ts=2 sw=2 et
调整tab键为两个空格缩进
---为playbook的开头
项目开头一般都是一个 -
运行Playbook
ansible-playbook 清单文件名 举例:ansible-playbook tasks.yml
在运行任务时会显示每个play和任务的name的值
如果想要知道更加详细的输出结果 可以添加
简单的语法检查
ansible-playbook 提供了一个 --syntax-check选项
这个选项会提供简单的语法检查
空执行
只会告诉你运行这个玩意之后会发生什么,但不会对受管主机产生实际的影响
使用符号 -C #大C
举例 ansible-playbook -C tasks.yml
实验——编写一个playbook
实验开始:lab playbook-basic start
1.cd ~/playbook-basic
2.vim site.yml
3.
---
- name: install and start Apache HTTPD
host:web
tasks:
- name: httpd package
yum: #采用yum(用于安装)模块
name: httpd 要安装的软件为httpd
state: present 软件包状态设为现在
- name: correct index html is present
copy: #采用copy模块
src: files/index.html #复制的东西
dest: /var/www/html/index.html #复制到哪里
- name: httpd is started #用来启动httpd服务
service: #调用service模块
name: httpd #要启用的软件
state: started #启用的动作
enabled: true #是否开机自启
4.进行基本的语法检查
ansible-playbook --syntax-check site.yml
5.运行
ansible-playbook site.yml
6.使用curl命令验证serverc和serverd是否都配置了HTTPD服务器
curl serverc.lab.example.com
curl serverd.lab.example.com
如果结果都是 This is a test.page
那么就是搞定啦
完成实验 lab playbook-basic finish