Ansible 变量名 `environment` 是保留的吗?
Ansible variable name `environment` is reserved?
我今天遇到了一个奇怪的情况。我在剧本 environment
中调用了我的一个变量。如果我使用 debug
指令转储变量,则显示正常
"environment": "development",
但是如果我尝试使用 {{ environment }}
从脚本访问它,它总是被分配一个值 {}
。我重命名它并且它工作正常。这是为什么? environment
是 Ansible 中的保留名称吗?我检查了变量转储 - 与定义的变量没有冲突。
我在 Google group 中找到了关于 environment
的声明:
Yes, environment is a restricted keyword. Initially specific within
playbooks, but it gets injected in the runner:
inject['environment'] = self.environment
so it will erase whatever value was set by inventory of vars.
如果使用保留变量,有一个尚未解决的 feature request 警告。
有趣的是,Environment
(大写)是可用的,但 environment
(小写)并不像您发现的那样。
有一天,我不小心使用了以小写字母指定的现有环境变量,并在尝试诊断问题时玩得很开心。
我也会坚持使用不同的名称(尽管我仍然故意使用 Environment
只是为了提醒自己变量名称区分大小写)。
我今天遇到了一个奇怪的情况。我在剧本 environment
中调用了我的一个变量。如果我使用 debug
指令转储变量,则显示正常
"environment": "development",
但是如果我尝试使用 {{ environment }}
从脚本访问它,它总是被分配一个值 {}
。我重命名它并且它工作正常。这是为什么? environment
是 Ansible 中的保留名称吗?我检查了变量转储 - 与定义的变量没有冲突。
我在 Google group 中找到了关于 environment
的声明:
Yes, environment is a restricted keyword. Initially specific within playbooks, but it gets injected in the runner:
inject['environment'] = self.environment
so it will erase whatever value was set by inventory of vars.
如果使用保留变量,有一个尚未解决的 feature request 警告。
有趣的是,Environment
(大写)是可用的,但 environment
(小写)并不像您发现的那样。
有一天,我不小心使用了以小写字母指定的现有环境变量,并在尝试诊断问题时玩得很开心。
我也会坚持使用不同的名称(尽管我仍然故意使用 Environment
只是为了提醒自己变量名称区分大小写)。