在Azure DevOps管道中运行ansible脚本

时间:2018-10-22 16:51:13

标签: azure ansible azure-devops azure-pipelines

我试图在基于Ubuntu 16.04(Xenial 64)的Azure DevOps管道的后台自定义VM。

我看到我可以在各种现成任务中将bash脚本作为任务运行。

通过运行bash脚本,我可以在Ubuntu环境ansible中看到已安装,因为在类型“ Bash”的任务内容中键入sudo apt-get install ansible时,Logs of的输出管道的执行内容为:

2018-10-22T16:33:00.7632392Z ansible is already the newest version (2.0.0.2-2ubuntu1.1).

从Azure DevOps /管道文档网站上没有关于ansible的信息,但是确实存在该命令,我可以成功运行apt-get install之类的东西,因此我什至可以安装它它不在那里。

我无法为ansible指定主机(本地主机),甚至无法将文件/etc/ansible/hosts更改为sudo,因为我回来了“权限被拒绝”。

在该DevOps /管道环境中根本可以运行ansible剧本吗?

我的想法是:

  • 克隆一个git存储库,其中包含“要测试管道的代码” 和用于配置Ubuntu环境的ansible剧本
  • 然后将目录更改为/home/vsts/work/1/s/(似乎Azure DevOps /管道用户名为vsts,并且在克隆git存储库时,它会转到该~/1/s/目录)
  • 然后运行“ Bash”类型的Azure DevOps /管道任务,其中包括:
    • 调用ansible剧本(以配置Ubuntu环境)
    • 在git存储库中调用Makefile(以运行“测试”)

到目前为止,在尝试以下内容的变体时,我总是回到“权限被拒绝”的位置:

sudo echo $(ifconfig eth0 | grep 'inet addr' | awk '{print $2 }' | sed 's/addr://g') >> /etc/ansible/hosts 
ansible-playbook ci/prepare-vm/azure-pipeline-vm-setup.yml -vvvv --extra-vars "cli_input_username=vsts"

或尝试通过eth0参数将ansible-playbook IP地址直接传递给命令-i

  • 为什么即使安装了ansible软件包,我也似乎无法运行ansible脚本?
  • 如何在Azure DevOps管道中运行此ansible脚本?

1 个答案:

答案 0 :(得分:0)

您可以使用带有-i标志的备用文件主机。

例如

ansible-playbook -i $(Build.SourcesDirectory)/hosts