【问题标题】:Unable to get Ansible working on Azure Pipelines for configuration management无法让 Ansible 在 Azure Pipelines 上工作以进行配置管理
【发布时间】:2019-02-24 14:12:39
【问题描述】:

我正在使用 Terraform 进行基础架构配置,并使用 Ansible 进行配置管理。

这是高级概述

Terraform 部分按预期工作。问题在于 Ansible 配置管理。

Ansible 配置管理作业详情如下

错误信息如下:

2019-02-24T13:10:12.4843263Z ##[section]Starting: Run playbook
2019-02-24T13:10:12.4991977Z ==============================================================================
2019-02-24T13:10:12.4992040Z Task         : Ansible
2019-02-24T13:10:12.4992109Z Description  : This task executes an Ansible playbook using a specified inventory via command line interface
2019-02-24T13:10:12.4992142Z Version      : 0.0.4
2019-02-24T13:10:12.4992171Z Author       : Microsoft Corporation
2019-02-24T13:10:12.4992237Z Help         : [More Information](https://go.microsoft.com/fwlink/?linkid=853835)
2019-02-24T13:10:12.4992267Z ==============================================================================
2019-02-24T13:10:14.0504658Z ERROR! the playbook: /home/vsts/work/r1/a/_Terraform could not be found
2019-02-24T13:10:14.0832289Z ##[error]Command ansible-playbook -i /tmp/ba06130c-26d3-4345-b658-3c3b728965f3inventory.ini /home/vsts/work/r1/a/_Terraform Build Phase/drop/terraform/playbooks/common.yml  exited with code 1.
2019-02-24T13:10:14.0857295Z ##[section]Finishing: Run playbook

我确定的一件事是,如果我导出以下变量,它可以在命令行上运行,

export AZURE_CLIENT_ID="xxxxxxxxxxxxxxxxxxxxx"
export AZURE_SECRET="xxxxxxxxxxxxxxxxxxxxxxxx"
export AZURE_SUBSCRIPTION_ID="xxxxxxxxxxxxxxx"
export AZURE_TENANT="xxxxxxxxxxxxxxxxxxxxxxxx"

注意:我已经在变量组中创建了这些变量,并且可用于所有管道。

common.yml 文件确实存在,因为我在 Release 定义中导航并找到它。不知道为什么在执行过程中无法定位。

在命令行上,我运行如下,它可以工作,所以它也应该在 Azure Pipelines 上工作?

ansible -i azure_rm.py ansible-inventory-test-rg -m ping

文件 azure_rm.py 脚本位于以下位置:

$(System.DefaultWorkingDirectory)/_Terraform Build Phase/drop/terraform/scripts/azure_rm.py

资源组的名称是:rg-app

如何让 Ansible 开始工作?任何帮助将不胜感激。

非常感谢。

【问题讨论】:

    标签: ansible azure-pipelines-release-pipeline ansible-inventory


    【解决方案1】:

    路径$(System.DefaultWorkingDirectory)/_Terraform Build Phase/drop/terraform/scripts/azure_rm.py 包含一些未转义的空格。当您查看输出时,它会显示:

    the playbook: /home/vsts/work/r1/a/_Terraform could not be found
    

    你看,它正在寻找剧本的错误路径。如果可能,请尝试从剧本路径中删除空格,或者尝试使用"" 引用File Path 参数。

    【讨论】:

    • 仍然不好,[警告]:提供的主机列表为空,只有本地主机可用错误!在任务中未检测到任何操作错误似乎出现在“/home/vsts/work/r1/a/_Terraform Build Phase/drop/terraform/playbooks/common.yml”中:第 5 行,第 5 列,但可能在其他地方该文件取决于确切的语法问题。违规行似乎是:任务:-名称:将时区设置为 A.U.S.东部时间 (DST) ^ 此处
    • ##[error]Command ansible-playbook /home/vsts/work/r1/a/"_Terraform Build Phase"/drop/terraform/playbooks/common.yml -i azure_rm.py 退出代码 4. ##[section]Finishing: Run playbook
    • 似乎无法找到清单脚本,因此无法运行任何任务。它是否还在剧本执行开始时说:“[警告]:无法将 azure_rm.py 解析为库存源”?如果是这样,请尝试将“库存位置”参数设置为库存的绝对路径。这样做时,请务必注意空格。
    • 不,它没有说明库存来源。我验证了 yaml 没有语法问题,我可以让它在我的 CentOS VM 上使用相同的 yaml。我正在努力在远程服务器上启用 WInRM。
    猜你喜欢
    • 2015-07-07
    • 2018-10-29
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多