5.3_Ansible中的playbook

##1.Playbook的功能##

playbook是由一个或多个play组成的列表 Playbook文件使用YAML来写的

##2.YAML##

(1)简介

是一种表达资料序列的格式,类似XML

Yet Another Markup Language

2001年首次发表

www.yaml.org 

(2)特点 

#特点#

可读性好

和脚本语言交互性好

易于实现

适用程序执行流梳理方式

可扩展性强

(3)语法简介 

#语法简介#

在文件中用[---]开始

在文件中用[...]结尾

次行一般书写文件内容

缩进严格

大小写敏感

key/value可以多行书写也可一行书写,一行书写用,隔开

value可以是个字符串,也可是list

一个play需要包括name和tasks

name 是描述

tasks 是动作

一个name只能包含一个task

扩展名称yml或者yaml

 测试:

书写一个playbook

建立一个用户名为westosuser:

id:6666   gid:6666  附加组:21  密码:westos

(4)YAML 列表 

[Linux,C++,Java,Python]
或
- Linux
- C++
- Java
- Python 

(5)YAML的字典 

字典作用存放键值
name:westos
age:12 
jobs:linux 
{name: "westos", age: "12", jobs: "linux"}

 

两种写法等价

##3.Playbook执行命令##

ansible-playbook xxx.yml ...
--check|-C      ##检测,预执行,并没有真正执行
--syntax-check  ##check language检测语法
--list-hosts    ##列出hosts
--list-tags     ##列出tag
--list-tasks    ##列出task
--limit         ##指定执行主机
-v -vv          ##详细过程
-e              ##指定变量

 ##4.Playbook的核心组件##

name     #可选,建议使用多用于说明
hosts    #受控主机列表
tasks    #任务
         #用与选择执行部分代码
 
#基本示例#
---
- name: test play book
  hosts: all
  remote_user: root

  tasks:
    - name: check hosts
      dnf:
        name=httpd
        state=latest
    - name: start httpd
      service:
        name=httpd
        state=started
        enabled=yes

##5.vim 设定技巧## 

autocmd FileType yaml setlocal ai ts=2 sw=2 et
 
setlocal   ##设定当前文件
ai         ##自动退格对齐   auto indent
ts         ##tab建长度为2空格 tabstop=2
sw         ##缩进长度为2 shiftwidth=2
et         ##把tab键变成空格  expandtab

测试:

部署好ftp服务并开启匿名用户访问权利 

测试:

部署好apache服务,设置默认发布文件为www.westos.org 

 ##6.playbook中的tags## 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 调用 Ansible Playbook 可以通过调用命令行的方式实现,例如使用 ProcessBuilder 类来执行命令行。下面是一个简单的示例代码: ```java public static void runAnsiblePlaybook(String playbookPath, String inventoryPath) throws IOException, InterruptedException { ProcessBuilder pb = new ProcessBuilder("ansible-playbook", "-i", inventoryPath, playbookPath); pb.redirectErrorStream(true); Process process = pb.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } process.waitFor(); } ``` 在这个示例,我们使用 ProcessBuilder 类来创建一个命令行进程。我们将 Ansible Playbook 命令 `ansible-playbook` 作为参数传递给 ProcessBuilder 构造函数,并使用 `-i` 选项指定主机清单文件的路径,以及使用第二个参数 `playbookPath` 指定要执行的 Playbook 文件的路径。我们还将 `redirectErrorStream` 设置为 true,以便将标准输出和标准错误流合并到一个流。 接下来,我们使用 `start()` 方法启动进程,并使用 `getInputStream()` 方法获取进程的标准输出流。我们使用 `BufferedReader` 逐行读取输出,并将其打印到控制台上。 最后,我们使用 `waitFor()` 方法等待进程完成执行。 需要注意的是,在实际应用,我们可能需要为 Ansible Playbook 设置其他参数,例如 `--extra-vars` 或 `--tags` 等。我们可以将这些参数作为命令行参数传递给 ProcessBuilder。同时,我们还需要处理进程的错误输出流,以便及时发现和处理错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值