跳转至

Ansible 高级用法

YAML 介绍

YAML 是一种用来表达资料序列的格式,参考了其他多种语言所以具有很高的可 读性。YAML 是 YAML Ain’t Markup Language 的缩写,即 YAML 不是 XML。不过在 研发这种语言时,YAML 的意思其实是”Yet Another Markup Language”(仍是一种标 记语言)。其特性如下:

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

YAML 语法

YAML 的语法和其它语言类似,也可以表达散列表、标量等数据结构。其中结构 (structure)通过空格来展示;序列(sequence)里的项用”-”来代表;Map 里的键值 对用”:”分隔。YAML 文件扩展名通常为:yaml,如:example.yaml。下面是 YAML 的一个示例。

YAML常用的数据类型

YAML 中有两种常用的数据类型:list 和 dictionary。

1.list (列表)

列表(list)的所有元素均使用”-”开头,例如:

-Apple 
-Orange 
-Strawberry 
-Mango

2.dictionary

字典(dictionary)通过 key 与 value 进行标识,例如:

name: Example Developer
Job: Developer
Skill: Elite

也可以使用 key:value 的形式放置于{ }中进行表示,例如:

{ name: Example Developer, Job: Developer, Skill: Elite}


Ansible 基础元素介绍

** Inventory(主机清单)**

Inventory 文件中以中括号中的字符标识为组名,将主机分组管理,也可以将同一主机同时划分到多个不同的组中。如果被管理主机使用非默认的SSH端口,以下例子主要分了两个主机组cka-1和cka-2,inventory 下有很多的主机文件,注意这里ansible的配置文件是做了修改的。

$ cat inventory/cka
[cka-1]
cka.master hostname=master0 ansible_host=172.30.42.244 ansible_user=lixie

[cka-2]
cka.node1  hostname=node1 ansible_host=172.30.192.106 ansible_user=lixie
cka.node2  hostname=node2 ansible_host=172.30.226.223 ansible_user=lixie

**Inventory 参数: **

Ansible 基于 SSH 连接 Inventory 中指定的被管理主机时,还可以通过参数指定 交互方式,这些参数如表 3-2 所示。

参数 含义
ansible_ssh_port 指定 SSH 连接的端口号
ansible_ssh_user 指定 SSH 连接的用户名
ansible_ssh_pass 指定 SSH 连接的密码
ansible_sudo_pass 指定执行 sudo 命令时的密码
ansible_connection 定义 SSH 连接的类型(例如:local, ssh, paramiko)
ansible_ssh_private_key_file 指定 SSH 连接的私钥文件路径
ansible_shell_type 指定主机所使用的 Shell 解释器,默认是 sh
ansible_python_interpreter 指定 Python 解释器的路径
ansible_*_interpreter 指定主机上其他语法解释器的路径
回到页面顶部