自动化基础设施配置与管理:Ansible 与 Packer 实战指南
1. Ansible 变量管理
Ansible 变量管理在自动化配置中非常重要。字典变量是一种复杂的键值对组合,类似于 Python 字典。可以使用标准 YAML 语法定义字典变量,示例如下:
foo:
bar: one
baz: two
引用这些变量的值有两种方式:
- 点表示法: bar: {
{ foo.bar }}
- 括号表示法: bar: {
{ foo[bar] }}
虽然两种表示法含义相同,但括号表示法更好,因为点表示法中某些键可能会与 Python 字典的方法和属性冲突。
1.1 变量值的来源
除了手动定义变量和提供值外,有时需要动态生成的值。Ansible 在收集事实阶段会提供一系列变量和系统元数据。可以使用 setup
模块作为 Ansible 任务来确定这些事实,例如运行以下命令获取所有具有 webservers
角色的节点的 Ansible 事实:
$ ansible -m setup webservers
执行结果示例:
web | SUCCESS => {
"ansible_facts": {