在ansible中,playbook是由一个或多个剧本(play)组成的列表,完成一系列预定的任务,遵循yaml语法,简单地说,它是一个非常简单的配置管理和多主机部署系统。
基本语法
选项 | 说明 |
hosts | 运行task的目标主机 |
remote_user | 在远程主机上执行任务的用户 |
tasks | 任务,由模板定义的操作列表 |
handlers | 任务,与tasks的区别是,它只在接收到notify时才会被触发 |
templates | 模板,使用模板语言的文本文件,使用jinja2语法 |
variables | 变量,形式:{{ variable_name }} |
roles | 角色 |
tags | 标签 |
用法示例:
- hosts: webservice remote_user: root tasks: - name: install_nginx yum: name=nginx - name: config_nginx copy: src=~/nginx.conf dest=/etc/nginx/nginx.conf tags: modify_nginx command: /sbin/setenforce 0 notify: restart_nginx - name: start_nginx service: name=nginx state=started enabled=yes - name: check_port remote_user: nginx sudo: yes sudo_user: root_user_name shell: /usr/bin/netstat -tlnp | grep 443 ignore_errors: True handlers: - name: restart_nginx service: name=nginx state=restarted
hosts说明
指定待执行指定任务的主机,须事先定义在主机清单中,参数形式:
10.10.10.* 10.10.10.202 example.com example.com:example.net webservice:webapi webservice:&proxy webservices:!database
remote_user说明
用于hosts和task中,可以指定sudo权限(默认为root用户),参数形式:
- hosts: webservice remote_user: root tasks: - name: check_ping ping: remote_user: lzl sudo: yes sudo_user: liuzl
tasks说明
指定任务列表,格式:
module: arguments
tags说明
给任务打标签,然后在ansible-playbook命令中使用参数-t调用指定的标签。
ansible-playbook -t modify_nginx playbook.yml
notify说明
为当前任务创建一个通知,当handler接受到这个通知时触发指定的操作。
handler说明
当关注的notify的任务发生变化时,再执行指定的操作,详见文档开头的示例。
执行剧本
选项 | 说明 |
--check | 只检测可能会发生的改变,但不真正的操作 |
--list-hosts | 列出运行任务的主机 |
--limit <主机列表> | 只针对主机列表中的主机执行 |
-v, -vv, -vvv | 显示详细过程 |
# 检查配置 ansible-playbook -C playbook.yml ansible-playbook --syntax-check playbook.yml # 执行剧本 ansible-playbook <playbook_file> [options]
原创文章禁止转载:技术学堂 » Ansible自动化运维之Playbook基本语法