Ansible与playbook基础

ansible七种武器

1.ansible命令

  • ansible命令,用于执行临时性的工作,必须掌握!!!

2.ansible-doc(重点!!!)

  • ansible-doc 是ansible模块的文档说明,针对每个模块都有详细的说明及应用案例介绍,功能和Linux系统的man命令类似,必须掌握

3.ansible-console

  • ansible-console是ansible为用户提供的交互式工具,用户可以在ansible-console虚拟出来的终端上像Shell一样使用ansible内置的各种命令,这为习惯使用Shell交互方式的用户提供了良好的使用体验.

4.ansible-galaxy

  • ansible-galaxy从github上下载管理Roles的一款工具,与python的pip类似

5.ansible-playbook(重点!重点!重点!)

  • ansible-playbook是日常应用中使用频率最高的命令,工作机制:通过读取先编写好的playbook文件实现批量管理,可以理解为按照一定条件组成的ansible任务集,必须掌握.

6.ansible-vault

  • ansible-vault主要用于配置文件加密,如编写的playbook文件中包含敏感信息,不想其他人随意查看,可用它加密/加密这个文件

7.ansible-pull

  • ansible有两种工作模式pull/push,默认使用push模式工作.pull和push工作模式机制刚好相反.
  • 适用场景:有大批量机器需要配置,即便适用高并发线程依旧需要话费大量时间
  • 通常在配置大批量机器的场景下使用,灵活性稍有欠缺,但效率几乎可以无线提升,对运维人员的技术水平和前瞻性规划有较高要求.

JSON简介

概述

  • JSON是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.
  • Json中的分隔符限于单引号" ’ " , 小括号 " ( ) " , 中括号 " [ ] " , 大括号 " { } " , 冒号 " : " 和逗号 " , "
  • Json特性:
    • JSON是纯文本
    • JSON具有"自我描述性"(人类可读)
    • JSON具有层级结构(值中存在值)
    • JSON可以通过JavaScript进行解析

语法规则

  • 数据在名称/值对中,键值对
  • 数据由逗号分隔
  • 大括号保存对象
  • 中括号保存数组
  • 键值对书写格式: “姓名”:“大锤”

YAML简介

  • 表达数据序列的格式
  • YAML结构通过空格展示
  • 数组使用 " - " 来表示,键值对使用 " : " 来表示
  • 使用固定的缩进风格,一般每个缩进级别由两个以上空格组成

Jinja2模板简介

概念

Jinja2是基于Python的模板引擎,包含变量和表达式两部分,两者在模板求值时会被替换为值,模板中还有标签,控制模板的逻辑.
playbook的模板使用Python的Jinja2模块来处理.

基本用法

  • 模板的表达式都是包含在分隔符 " {{ }} " 内的
  • 控制语句都是包含在分隔符 " {% %} " 内的
  • 模板支持注释,都是包含在分隔符 “{# #}” 内,支持块注释
  • 调用变量 {{ varname }}
  • 计算 {{ 2+3 }}
  • 判断 {{ 1 in [1,2,3] }}

playbook

概念

  • playbook是ansible用于配置,部署和管理托管主机剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期状态.playbook字面意思即剧本,现实中由演员按照剧本表演,在ansible中由计算机进行安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情.

playbook语法基础

  • playbook由YAML语言编写,遵循YAML标准
  • 同一个列表中的元素应该保持相同的缩进
  • playbook由一个或多个play组成
  • play中hosts, variables, roles, tasks 等对象的表示方法都是键值对中间以" : " 分割表示(冒号+空格)
  • YAML还有一点注意:它的文件开始行都应该是 — , 这是YAML格式的一部分,表名一个文件的开始.
---
- name: test ping
  hosts: all
  tasks:
    - name: 第一次
      ping: 

playbook构成

  • hosts: 定义将要执行playbook的远程主机组
    – 主机的集合,定义要执行任务的主机
  • vars: 定义playbook运行时需要使用的变量
  • tasks: 定义将要在远程主机上执行的任务列表
    – 命令的集合,每个play包含了一个task列表,一个task执行完毕之后,下一个task才会执行
  • handlers: 定义task执行完成以后需要调用的任务
  • playbook执行结果: 使用ansible-playbook运行playbook文件,输出内容为JSON格式,由不同颜色组成.绿色代表执行成功, *** 代表系统状态发生改变,红色代表执行失败.
---
- name: 添加用户
  hosts: db
  tasks:
    - name: 添加用户 "{{ username }}"
      user:
        name: "{{ username }}"
        group: users
        password: "{{ '123' |password_hash('sha512') }}"
发布了18 篇原创文章 · 获赞 23 · 访问量 3077

猜你喜欢

转载自blog.csdn.net/qq_42130112/article/details/103901516