(五)Ansible-playbook

一、YAML语言

Ansible Palybook的编写是基于YAML语言的。YAML语言,即Yet Another Markup Language,是一种能被计算机直接识别的标记语言,同时也方便人的阅读,且方便和脚本语言交互。但是,YAML的配置即为严格,在配置时必须注重空格的数量。
总的来看,YAML语言特性如下:

  1. .可读性强
  2. 和脚本语言的交互性好
  3. 使用实现语言的数据类型
  4. 一致的信息模型
  5. 易于实现
  6. 可以基于流来处理
  7. 可扩展性强

二、Playbook组件

Ansible的Playbook有以下组件:

  1. Target:定义playbook的远程主机组,即被控制端设备。
  2. Variable:定义Playbook所使用的变量。
  3. Task:定义Playbook控制下游设备要执行的命令。
  4. Handler:定义在Palybook在Task执行完毕后要调用的任务。

三、组件参数

1、Target常用参数

  1. hosts:定义Ansible用户控制的下游设备
  2. remote_user:定义执行Ansible设置的用户
  3. sudo:设置为yes时,执行任务时使用root权限
  4. sudo_user:指定sudo的普通用户
  5. connection:默认基于ssh链接客户端
  6. gather_facts:获取远程主机facts基础信息

2、Variable常用参数

  1. vars:定义变量
  2. vars_files:指定变量文件
  3. vars_prompt:用户交互模式自定义变量
  4. setup:通过远程gather_facts获取的信息

3、Task常用参数

  1. name:任务的名称,在Ansible运行的过程中起到提示的作用,会打印在屏幕上
  2. action:Ansible控制下游设备的命令,通过Ansible的各个模块来进行控制
  3. template:Ansible控制下游设备的模板
  4. handler:定义一个调用,该调用在Handler处被定义,在所有的Task结束后被执行

4、简单示例

  1. 编辑csdn.yml,该playbook主要用于centos通过yum安装httpd并且启动httpd服务。
---
- hosts: user_passwd
  remote_user: root
  tasks:
  - name: Install Httpd by YUM
    yum: name=httpd state=installed
  - name: Start Httpd
    service: name=httpd state=started
  1. 格式说明
  • 行号1:开头用三个短杠,这是Ansible Playbook的标准开头格式。
  • 行号2:以一个短杠开头,后面跟一个空格。这个空格有且仅有一个。hosts参数后面紧跟着的是一个因为冒号,冒号后面也必须跟一个空格。这个空格和刚才相同,有且仅有一个。冒号后面接Ansible控制的主机。
  • 行号3:remote_user,这个参数要和hosts严格对齐! 否则,Ansible也会报错。后面的tasks任务和name前面的短杠也要对齐。
  1. 执行ansible-playbook csdn.yml:
    在这里插入图片描述

四、变量

1、变量示例

---
- hosts: user_passwd
  remote_user: root
  tasks:
  - name: Install Httpd by YUM
    yum: name={{ csdn }} state=installed

变量格式:

  1. 使用两个大括号括起来。
  2. 变量名两边都有一个空格。

2、赋值方式

  1. 命令调用赋值:使用-e参数进行变量赋值,将httpd值赋给playbook中的csdn。
    在这里插入图片描述
  2. 在hosts文件中定义变量
    查看hosts文件:
[user_passwd]
10.10.192.21
[user_passwd:vars]
csdn=httpd

在这里插入图片描述
3. playbook中定义变量

---
- hosts: user_passwd
  vars:
    csdn: httpd
  remote_user: root
  tasks:
  - name: Install Httpd by YUM
    yum: name={{ csdn }} state=installed

在这里插入图片描述
4. setup模块获取变量
在这里插入图片描述
在每次playbook的执行过程中都可以看到gathering facts的过程,这是ansible收集被控端信息的过程,ansible把被控端的一些信息收集到本地,并且以变量的形式进行保存,在编写playbook中就可以使用这些变量。

查看通过gathering facts获取的变量信息:
执行ansible -m setup,内容很多,仅截取部分:
在这里插入图片描述
示例:

---
- hosts: user_passwd
  remote_user: root
  tasks:
  - name: Display vars in setup
    file: name=/root/{{ ansible_all_ipv4_addresses }} state=touch

查看创建的文件信息:
在这里插入图片描述
5. 独立的变量文件
将变量存储成独立的变量文件,创建一个以yml结尾的变量文件,var.yml,内容如下:

csdn: httpd

修改csdn.yml:

---
- hosts: user_passwd
  remote_user: root
  vars_files:
   - ./inventory/var.yml
  tasks:
  - name: Yum install
    yum: name={{ csdn }} state=installed

执行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IForFree

整理不易,望多支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值