从 ad-hoc 命令将 Ansible 变量打印到命令行

the*_*ist 2 ansible

我目前有一个 YAML 文件,它定义了几个变量:

variable_a: some_value_1
variable_b: some_value_2
variable_c: some_value_3
Run Code Online (Sandbox Code Playgroud)

是否有任何可以从终端运行的临时命令,可以让我有选择地打印每个变量的值?例如

ansible --file=my_file.yml --print-var=variable_a
Run Code Online (Sandbox Code Playgroud)

会打印

some_value_1
Run Code Online (Sandbox Code Playgroud)

我需要在 bash 脚本中访问这些变量,所以我不能只使用include_vars.

ses*_*i_c 5

您必须使用ad-hoc 命令的--extra-vars或选项传递变量文件。-e

给定一个带有变量的 YAML 文件my_vars.yml

variable_a: some_value_1
variable_b: some_value_2
variable_c: some_value_3
Run Code Online (Sandbox Code Playgroud)

运行临时命令:

~$ ansible localhost -m debug -a "var=variable_a" -e @my_vars.yml

localhost | SUCCESS => {
  "variable_a": "some_value_1"
}

Run Code Online (Sandbox Code Playgroud)

如果你想修剪输出:

~$ ansible localhost -m debug -a "var=variable_a" -e @my_vars.yml | grep variable_a | awk '{print $2}'
"some_value_1"
Run Code Online (Sandbox Code Playgroud)