自动化运维工具 Ansible ——YAML、基础元素

YAML 的介绍

 
YAML是一个可读性高的用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl等。
YAML不是XML,不过,在开发的这种语言时,YAML的意思其实是:“Yet Another Makup Language”(仍是一种标记语言)

 

YAML 的特点

1:具有很好的可读性,易于实现。
2:表达能力强,扩展性好。
3:和脚本语言的交互性好。
4:有一个一致的信息模型。
5:可以基于流来处理。
 

YAML 的语法

 

  • YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表、标量等数据结构。其结构(structure)通过空格来展示。
  • 序列(sequence):里的项用 “-” 来代表,来代表不同元素。
  • MAP里的键值对,用 ":" 分隔。

基本语法规则:
1.大小写敏感
2.使用缩进表示层级关系
3.缩进时不允许使用Tab键,只允许使用空格。
4.缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

 

  • YAML 示例:

    vim test.yaml
    ---
    name:zhangsan
    age:20
    name:lisi
    age:22
    people:
    - name:zhangsan
            age:20
            - name:lisi
            age:22

     

  • 常用的数据类型
  • YAML支持的数据结构:
  • 1.对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 例如:name:Example Developer ( 键 : 值)

 

  • 2.数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 例如:
    -Apple
    -Orange

 

  • 3.纯量:单个的、不可再分的值
  • 例如:
    number:10.10
    sure:true

 

Ansible 基础元素介绍

  • Inventory
  • Ansible为了更加便捷的管理主机,在主机清单中将被管理主机进行分组命名,默认的Inventory文件是:/etc/ansible/hosts ,主机清单可以设置对个可以通过Dynameic Inventory 动态生成
  • Inventory文件以括号中的字符标识为组名,将主机分组管理,可以将同一主机同时划分到多个不同的组中。如果被管理的主机使用
  • 非默认的SSH端口,还可以在主机名后面用冒号加端口号的方式来标明:
    # vi /etc/ansible/hosts
    [webserver]      #方括号设置组名
    www1.example.org    #定义被监控主机,这边可以是主机名也可以是IP地址,主机名需要修改/etc/hosts文件
    www2.example.org:2222     #冒号后定义远程连接端口,默认是ssh的2222端口

     

  • 如果被管理的主机名遵循类似的命名规则,可以使用列表的方式来标识
    [webserver]
    www[01:50].example.org ansible_ssh_user=root ansible_ssh_pass=123456
    [dbbservers]
    db-[a:f].example.org //支持匹配a b c ... f
  • 在Inventory中有几个重要的概念
  • (1)主机变量
    [webserver]
    www1.magedu.com http_port=80 maxRequestsChild=808
    www2.magedu.com http_port=8080 maxRequestsChild=909
  • (2)组变量
    [servers:vars]
    ntp_server=ntp.example.org
    nfs_server=nfs.example.org
  • (3)组嵌套
    [apache]
    http1.example.org
    http2.example.org
     
    [nginx]
    ngx1.example.org
    ngx2.example.org
     
    [webservers:children]
    apache
    nginx
  • (4)Inventory参数
参数 含义
ansible_ssh_host 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置
ansible_ssh_port ssh 端口号.如果不是默认的端口号,通过此变量设置
ansible_ssh_user 默认的 ssh 用户名
ansible_ssh_pass ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)
ansible_ssh_private_key_file ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况
ansible_ssh_common_args 此设置附加到sftp,scp和ssh的缺省命令行
ansible_sftp_extra_args 此设置附加到默认sftp命令行
ansible_scp_extra_args 此设置附加到默认scp命令行
ansible_ssh_extra_args 此设置附加到默认ssh命令行
ansible_ssh_pipelining 确定是否使用SSH管道。 这可以覆盖ansible.cfg中得设置
ansible_shell_type 目标系统的shell类型.默认情况下,命令的执行使用 ‘sh‘ 语法,可设置为 ‘csh‘ 或 ‘fish‘
ansible_python_interpreter 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 *BSD, 或者 /usr/bin/python
ansible_*_interpreter 这里的"*"可以是ruby 或perl 或其他语言的解释器,作用和 ansible_python_interpreter 类似
ansible_shell_executable 这将设置ansible控制器将在目标机器上使用的shell,覆盖ansible.cfg中的配置,默认为/bin/sh

原文地址:http://blog.51cto.com/13625676/2318526

时间: 2024-07-31 00:58:23

自动化运维工具 Ansible ——YAML、基础元素的相关文章

自动化运维工具-Ansible基础

目录 自动化运维工具-Ansible基础 自动化运维的含义 Ansible 基础及安装 Ansible的架构 Ansible的执行流程 ansible配置文件 ansible Inventory(主机清单文件) Ansible ad-hoc ansible常用模块 实战 自动化运维工具-Ansible基础 自动化运维的含义 1.手动运维时代 2.自动化运维时代 3.自动化运维工具给运维带来的好处 Ansible 基础及安装 1.什么是Ansible Ansible是一个自动化统一配置管理工具 2

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具——ansible详解案例分享

自动化运维工具--ansible详解案例分享(一)目录ansible 简介ansible 是什么?ansible 特点ansible 架构图ansible 任务执行ansible 任务执行模式ansible 执行流程ansible 命令执行过程ansible 配置详解ansible 安装方式使用 pip(python的包管理模块)安装使用 yum 安装ansible 程序结构ansible配置文件查找顺序ansible配置文件ansuble主机清单ansible 常用命令ansible 命令集a

3.1 自动化运维工具ansible

自动化运维工具ansible 运维自动化发展历程及技术应用 Iaas 基础设施即服务Pass 平台服务SaaS 软件即服务 云计算工程师核心职能 Linux运维工程师职能划分 自动化动维应用场景 文件传输命令执行 应用部署配置管理任务流编排 企业实际应用场景分析 1 Dev开发环境 使用者:程序员功能:程序员开发软件,测试BUG的环境管理者:程序员123 2 测试环境 使用者:QA测试工程师功能:测试经过Dev环境测试通过的软件的功能管理者:运维说明:测试环境往往有多套,测试环境满足测试功能即可

自动化运维工具ansible基础应用

ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置,批量程序部署,批量运行命令等功能. ansible是基于模块工作的,本事没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: 1.连接插件connection plugins:负责和被监控端进行通信 2.host inventory:指定操作的主机,是一个配置文件里卖弄

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

自动化运维工具Ansible实战(一)安装部署

1,基本介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.主要包括: (1).连接插件connection plugins:负责和被监控端实现通信: (2).host inventory:指定操作

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng

自动化运维工具Ansible部署详解与基本使用

一.基础简介 1.Ansible简介 Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很大程度简化运维中的配置管理与流程控制方式,它利用推送方式对客户系统加以配置,这样所有工作都可在主服务器端完成.Asible是基于模块工作的,其本身没有批量部署的能力,总之只要明白Ansible是一款运维自动化的神器就好了~! 2.功能特性 ######################