为什么一个特殊的 ansible 变量是未定义的?
Why would a special ansible variable be undefined?
我最近一直在研究 CD 的 anible 脚本,并开始 运行 进入一个问题。当我 运行 最近的 YAML 文件时,我得到一个错误
fatal: [Windows-AWS]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'ansible_play_name' is undefined\n\nThe error appears to have been in 'x.yml': line 32, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Add RabbitMQ user\n ^ here\n"}
有问题的变量包含在如下代码中:
- name: Add RabbitMQ user
win_shell: |
Set-Location "C:\Program Files\RabbitMQ Server\rabbitmq_server-{{rabbitmq_version}}\sbin"
$users = .\rabbitmqctl.bat list_users
if($users -Like "*{{ansible_play_name}}*")
{
Write-Host "Skipping: '{{ansible_play_name}}' already exists."
}
else
{
.\rabbitmqctl.bat add_user {{ansible_play_name}} "{{rabbitmq_password}}"
.\rabbitmqctl.bat set_permissions {{ansible_play_name}} ".*" ".*" ".*"
.\rabbitmqctl.bat set_user_tags {{ansible_play_name}} administrator
}
register: rabbit_add_user_out
changed_when: '"Adding user" in rabbit_add_user_out.stdout'
failed_when: '"Error" in rabbit_add_user_out.stderr'
有人对它为什么不能获取这个值有任何建议吗? 运行ning 来自的剧本也将事实收集设置为 true,因此应该分配给它
ansible_play_name - (当前执行的play的名字)是2.8新增的。可能你的版本比较低
我最近一直在研究 CD 的 anible 脚本,并开始 运行 进入一个问题。当我 运行 最近的 YAML 文件时,我得到一个错误
fatal: [Windows-AWS]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'ansible_play_name' is undefined\n\nThe error appears to have been in 'x.yml': line 32, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Add RabbitMQ user\n ^ here\n"}
有问题的变量包含在如下代码中:
- name: Add RabbitMQ user
win_shell: |
Set-Location "C:\Program Files\RabbitMQ Server\rabbitmq_server-{{rabbitmq_version}}\sbin"
$users = .\rabbitmqctl.bat list_users
if($users -Like "*{{ansible_play_name}}*")
{
Write-Host "Skipping: '{{ansible_play_name}}' already exists."
}
else
{
.\rabbitmqctl.bat add_user {{ansible_play_name}} "{{rabbitmq_password}}"
.\rabbitmqctl.bat set_permissions {{ansible_play_name}} ".*" ".*" ".*"
.\rabbitmqctl.bat set_user_tags {{ansible_play_name}} administrator
}
register: rabbit_add_user_out
changed_when: '"Adding user" in rabbit_add_user_out.stdout'
failed_when: '"Error" in rabbit_add_user_out.stderr'
有人对它为什么不能获取这个值有任何建议吗? 运行ning 来自的剧本也将事实收集设置为 true,因此应该分配给它
ansible_play_name - (当前执行的play的名字)是2.8新增的。可能你的版本比较低