Ansible Playbook概览
阅读原文时间:2023年07月10日阅读:3

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

1.编写playbook

2.定义主机清单文件

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

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  # 角色名

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

[workstation]
workstation.com

[nfs]
services.com

[master]
master.com

[node]
node.com

[etcd]
etcd.com

[K8S]
master
etcd
node
nfs

在前两步完成后,设置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