Ansible playbook 执行需要三步路执行:

1.编写playbook

2.定义主机清单文件

3.设置运行环境,写入配置文件

1.编写playbook

Playbook使用YAML语法格式进行编写,这种格式的特点是使用空格缩进来体现语法,,虽然对空格数量没有严格的要求,不过
有几个基本规则要遵守:

  • 处于层次结构中同一级别的数据元素必须具有相同的缩进量
  • 如果项目属于项目的子项,其缩进量必须大于父项
  • 也可以通过添加空行来提高可读性(非强制)
  • 只有空格字符可用于缩进,不允许使用制表符

在 $HOME/.vimrc 文件中添加下面这行后,如果 vim 检测到您在编辑 YAML文件,它将在 Tab 键按下时执行一个双空格缩进,自动缩进后续行并
且将制表符展开成空格

autocmd FileType yaml setlocal ai ts=2 sw=2 et

# sh 结尾 拓展脚本知识

autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") =='sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"###################################################")
call setline(4,"#Author: Xiong")
call setline(5,"#DATE: ".strftime("%Y-%m-%d"))
call setline(6,"#Liscense: GPL")
call setline(7,"#Version: V0.1")
call setline(8,"#Copyright(c): ".strftime("%Y")." All rights reserved")
call setline(9,"###################################################")
cal setline(10,"")
endif endfunc

Playbook由多个play组成,一个play有相关联的一系列任务组成,任务有task关键词定义,task中要执行的任务通过调用各种模
块来完成,示例:

---
- name: Install file # playbook名字
hosts: workstations # 待执行的主机或主机组名
vars:
content: "Hello world!"
tasks:
- name: "Copy File to other workstations"
copy: # 任务所需要使用的模块
title: "{ content }"
dest: /tmp/sample.txt - name: Hello # 第二个playbook 名字
hosts: OSE
roles:
- hello # 角色名

2.定义主机清单文件

清单文件是个文本文件,用于定义要被控制的主机,最后可以在playbook引用这个文件,以控制一批指定的主机受控主机,可以写ip地址,可以写主机名,也可以进行分组。示例

[workstation]
workstation.com [nfs]
services.com [master]
master.com [node]
node.com [etcd]
etcd.com [K8S]
master
etcd
node
nfs

3. 设定运行环境

在前两步完成后,设置ansible运行环境,定义相关配置文件,示例:

[defaults]
remote_user = admin
inventory = /ansible/playbook/inventory # 定义主机清单文件目录地址
roles_path= /home/admin/roles
log_path=/ansible/playbook/ansible.log [privileg] # 定义在主机上执行特权的操作
become = yes
become_user = root
become_method= sudo

至此,前三步完成,可以执行ansible-playbook

运行playbook
playbook一般以普通用户执行,执行语法是 ansible-playbook <playbook-filename>
如果执行的时候需要指定清单文件,可以用 -i 选项指定,如:ansible-playbook -i <inventory-file> <playbookfilename>

最新文章

  1. ListView用法总结
  2. 如何在Vue2中实现组件props双向绑定
  3. 转载:有关SQL server connection KeepAlive 的FAQ
  4. Windows上搭个Nginx集群环境玩玩
  5. C语言初学者代码中的常见错误与瑕疵(14)
  6. 高健壮性css---Float详细
  7. eclipse SVN 安装
  8. 什么是透明(和Windows主题有关系),研究TLable和TPanel是两个好例子
  9. SharePoint场管理-PowerShell(二)
  10. 使用gzip优化web应用(filter实现)
  11. 手算平方根和基于 Java BigInteger 的大整数平方根的实现
  12. 记录Javascript集合操作
  13. firefox中遇到的offsetX的问题
  14. mysql--实现oracle的row_number() over功能
  15. 区别:ASP.NET MVC的Model、DTO、Command
  16. Guava初识
  17. element-ui中table表头表格错误问题解决
  18. 阿里云配置ssl证书服务遇到的几个问题和解决方法
  19. 图像控件 ImageControl
  20. 处理jquery的ajax请求session过期跳转到登录页面

热门文章

  1. Unity减小安装包的体积(210MB减小到7MB)
  2. ValidForm5.3.2 忽略表单项校验详解
  3. React 父组件调用子组件的方法
  4. properties、yml配置文件映射对象
  5. WPFApplication类
  6. Kafka Kerberos 安全认证
  7. 基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
  8. sqlx操作MySQL实战及其ORM原理
  9. windbg的时间旅行实现对 C# 程序的终极调试
  10. Spring Boot+微信小程序_保存微信登录者的个人信息