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