Ansible自动化运维之Playbook基本语法

在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基本语法

精彩评论

3+4=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏