本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Ansible
  • 自动化运维工具Ansible入门教程(三)playbook的语法与使用

自动化运维工具Ansible入门教程(三)playbook的语法与使用

发布:TangLu2017-9-15 11:22分类: Ansible 标签: 自动化运维 ansible playbook

前面学习了Ansible命令行的用法,但是这种方式有点局限性,比如要使用Ansible在多台远端主机装上Nginx并给予配置文件最后启动服务,那就需要分别使用yum或command模块安装程序,然后使用copy模块复制配置文件,最后使用service模块启动服务。为了解决这种多任务繁琐的情况,可以使用Ansible的playbook(剧本)功能。剧本是包含了一系列任务的YAML配置文件通常以.yml结尾

一、Ansible playbook的组成

Inventory:主机列表,表示剧本中的任务要应用在哪些主机上

Modules:要调用ansible哪些模块

Commands:在主机上要运行哪些命令

Playbooks主体

  Tasks(核心):任务,即调用哪些模块完成操作

  Variables:变量

  Templates:模板

  Handlers:处理器,由某事件触发执行的操作

  Roles:角色,定义哪个角色做哪些任务


playbook中的每一处定义都是为了让某个主机以指定用户的身份去执行某个任务,所以使用hosts指定要执行任务的主机(该主机一定要在Inventory主机列表中定义),可以是一个或多个,冒号分割。user或者remote_user都可用于指定执行任务的用户,也可以在tasks中单独为每个任务定义:

- hosts: webnodes 
  remote_user: root 


二、Ansible playbook常用选项

remote_user:指定执行任务的用户(可单独给每个task定义),通常是root用户,也可指定非root用户使用sudo方式执行任务

hosts:指定远程主机(多个主机用逗号分隔)或主机组

user(可省略):指定远程主机上执行任务的用户

sudo(可省略):如果设置为yes,那么user中指定的用户在执行任务时会获得root权限

sudo_user(可省略):指定sudo时切换的用户,如sudo_user设置为jerry,那么之前设置的user在sudo时就会使用jerry的权限执行任务

connection(可省略):通过什么方式连接到远程主机,默认为SSH    

gather_facts(可省略):如果明确不需要通过setup模块来获取远程主机facts信息,可以使用这个选项


- hosts: webnodes 
  remote_user: root 
  tasks: 
    - name: test connection 
      ping: 
      remote_user: nobody 
      sudo: yes


示例1:创建nginx用户和nginx组

vi nginx.yml  #YAML文件格式为.yml后缀
- hosts: webservers
  remote_user: root
  tasks:
  - name: create nginx group
    group: name=nginx system=yes gid=200
  - name: create nginx user
    user: name=nginx uid=200 system=yes
- hosts: dbservers
  remote_user: root
  tasks:
  - name: copy file to dbservers
    copy: src=/etc/inittab dest=/tmp/inittab.ans

# 示例2:
- hosts: webservers
  remote_user: root
  tasks:
  - name: install httpd package
    yum: name=httpd state=latest
  - name: copy config file for httpd
    copy: src=/root/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
  - name: start httpd service
    service: enabled=true name=httpd state=started
    register: httpd_result  #将输出结果注册到httpd_result变量中
  - debug: var=httpd_result  #输出变量的内容,否则看不到playbook中命令本身的返回信息

三、如何运行Ansible playbook

只需要使用ansible-playbook命令指定playbook文件即可

playbook1.png

通过上面的执行结果得到了如下反馈信息,其代表含义如下:

ok:已经达到任务要求,无需再次处理

changed:经过了ansible的处理,再次执行则会发现这些信息也变成了ok

PLAY RECAP:一个汇总报告

其他选项用法:

ansible-playbook playbookname.yml --list-task  #列出该playbook中的任务


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《自动化运维工具Ansible入门教程(三)playbook的语法与使用
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-275.html  [生成短网址]

已有 0/2766 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~