为什么要定义一个特殊的ansible变量?

我最近一直在为CD编写一个可运行的脚本,并且开始遇到问题。当我运行最新的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'

对于为什么它无法获取此值,有人有任何建议吗?它所运行的剧本的事实收集也设置为true,因此应分配

zhi686 回答:为什么要定义一个特殊的ansible变量?

ansible_play_name-(当前执行的播放的名称)在2.8中添加。可能是您的版本较低。

本文链接:https://www.f2er.com/3095395.html

大家都在问