Ansible playbook 剧本编辑

一、Ansible playbook简介

playbook 是 ansible 用于配置,部署,和管理被控节点的剧本。通过 playbook 的详细描述,执行其中的一系列 tasks ,可以让远端主机达到预期的状态。playbook 就像 Ansible 控制器给被控节点列出的的一系列 to-do-list ,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。

二、Ansible playbook格式要求

playbook由YMAL语言编写。YAML( /ˈjæməl/ )参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与OrenBen-Kiki也是这语言的共同设计者。   YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。首先学习了解一下YMAL的格式,对我们后面书写playbook很有帮助。

常用到的格式:

1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。   

2、在同一行中,#之后的内容表示注释,类似于shell,python和ruby。

3、YMAL中的列表元素以”-”开头然后紧跟着一个空格,后面为元素内容。

4、同一个列表中的元素应该保持相同的缩进。否则会被当做错误处理。

5、play中hosts,variables,roles,tasks等对象的表示方法都是键值中间以":"分隔表示,":"后面还要增加一个空格。

组件作用
hosts运行指定任务的目标主机
remote_user在远程主机上执行任务的用户
sudo_user

tasks任务列表

handlers:

        任务在特定条件下触发;受到其他任务的通知时被触发

(1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;   

(2) 任务可以通过“tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;

举例:

[root@ansiable ~]# vim qqq.yml

查看root家目录下的文件目录

---
  - hosts: web-1
    remote_user: root
    tasks:
      - name: cat file
        shell: ls -l /root

检查语法

[root@ansiable ~]# ansible-playbook qqq.yml --syntax-check


ansible-playbook qqq.yml --syntax-check

执行剧本

[root@ansiable ~]# ansible-playbook qqq.yml

ansible-playbook qqq.yml

绿色代表执行成功,系统保持原样 | 黄色代表系统代表系统状态发生改变 | 红色代表执行失败,显示错误输出

三、定义playbook

运行前三部曲
检查错误

ansible-playbook www.yml --syntax-check

列出所有任务

ansible-playbook www.yml --list-task

列出在那些机器执行

ansible-playbook www.yml --list-hosts

        [root@ansiable ~]# vim www.yml

vim www.yml

 剧本给web组安装nginx并启动

---
  - hosts: web
    remote_user: root
    tasks:
      - name: install nginx
        yum: name=nginx state=present
        tags: one       #打标签
      - name: start nginx service
        service:
          name: nginx
          state: started
        tags: two       #标签

检查语法

[root@ansiable ~]# ansible-playbook www.yml --syntax-check

ansible-playbook www.yml --syntax-check

执行剧本

[root@ansiable ~]# ansible-playbook www.yml

ansible-playbook www.yml

ok表示之前安装过nginx

另一台机器查看

nginx已启动

四、variables(定义变量)

1、facts:直接调用

使用setup模块可以收集信息,可以直接调用

查看web-1的信息

[root@ansiable ~]# ansible web-1 -m setup

ansible web-1 -m setup

2、用户自定义变量

[root@ansiable ~]# vim www.yml

---
  - hosts: web
    remote_user: root
    vars:       #定义变量
      service_1: nginx
    tasks:
      - name: install {{ service_1 }}
        yum: name={{ service_1 }} state=present
        tags: one       #标签
      - name: start {{ service_1 }} service
        service: 
          name: "{{ service_1 }}"
          state: started
        tags: two       #标签

[root@ansiable ~]# ansible-playbook www.yml --syntax-check

ansible-playbook www.yml --syntax-check

3、通过roles(角色)传递变量

4、直接在主机清单中定义

[root@ansiable ~]# vim /etc/ansible/hosts

vim /etc/ansible/hosts

[root@ansiable ~]# vim www.yml

vim www.yml

剧本中未定义变量

---
  - hosts: web
    remote_user: root
    tasks:
      - name: install {{ service_1 }}
        yum: name={{ service_1 }} state=present
        tags: one       #标签
      - name: start {{ service_1 }} service
        service:
          name: "{{ service_1 }}"
          state: started
        tags: two       #标签

[root@ansiable ~]# ansible-playbook www.yml --syntax-check

ansible-playbook www.yml --syntax-check

直接在命令行中输入变量-e

资源清单中取消变量

[root@ansiable ~]# ansible-playbook www.yml -e service_1=nginx

ansible-playbook www.yml -e service_1=nginx

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值