核心元素
Playbook的核心元素:
Hosts
:主机组;
Tasks
:任务列表;
Variables
:变量,设置方式有四种;
Templates
:包含了模板语法的文本文件;
Handlers
:由特定条件触发的任务;
基本组件
Playbooks配置文件的基础组件:
Hosts
:运行指定任务的目标主机
remote_user
:在远程主机上执行任务的用户;
sudo_user:
通常用于表示在运行特定任务或命令时所使用的超级用户(superuser)或特权用户
tasks
:任务列表
模块,模块参数
:
格式:
(1) action: module arguments
(2) module: arguments
注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;
handlers
:任务,在特定条件下触发;接收到其它任务的通知时被触发;
(1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;
(2) 任务可以通过“tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;
举例
① 定义playbook
先创建文件
命令行也 是可以创建文件的
# 创建文件
touch nginx.yml
# 使用vi 或者vim 进行编辑
vim nginx.yml
编辑nginx.yml
---
- hosts: web
remote_user: root
tasks:
- name: install nginx
yum: name=nginx state=present
- name: copy nginx.conf
copy:
src: /tmp/nginx.conf
dest: /etc/nginx/nginx.conf
backup: yes
notify: reload # 当 nginx.conf 发生改变时,通知给相应的 handlers
tags: reloadnginx # 打标签
- name: start nginx service
service:
name: nginx
state: started
tags: startnginx # 打标签
handlers: # 请确保这一行的缩进是一致的
- name: reload
service:
name: nginx
state: restarted # 为了在进程中能看出来
注意缩进 注意缩进 注意缩进
运行前三部曲
# 检查错误
ansible-playbook nginx.yml --syntax-check
# 列出所有任务
ansible-playbook nginx.yml --list-task
# 列出在那些机器执行
ansible-playbook nginx.yml --list-hosts
# 运行
ansible-playbook nginx.yml
写完了以后,我们就可以运行了:
本章完结