问题标签 [ansible-1.x]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6751 浏览

continuous-integration - Ansible:在模块“复制”中使用正则表达式

上下文

我正在尝试构建一个continuous-integration平台,并在其中Ansible playbook使用从服务器上maven-dependency-plugin:get下载工件,该工件将使用模块部署在远程服务器上。NexusAnsiblecopy

为了制作一个轻量级和通用的剧本,我定义了一个变量app_version,如果它被定义,我下载给定的版本,如果没有,我从存储库下载最新Nexus版本。工件被下载到给定目录 ( /tmp/delivery/) 中。Ansible在我的任务下方:


我的问题

为了确保剧本的通用性,我需要在Ansible模块中编写一个正则表达式copy来选择具有该模式的工件,app*.war但看起来模块不提供这种能力。在我的复制任务下方:

如何在模块中使用正则表达式copy


我在用着Ansible 1.8

0 投票
1 回答
306 浏览

python - 如何使用 Ansible 1.x API 列出主机

Ansible-playbook 有一个--list-hostscli 开关,它只输出受 playbook 中每个 play 影响的主机。我正在寻找一种通过 python API 访问相同信息的方法。

我现在用来测试的(非常)基本脚本是

我只是不知道要添加什么以ansible.runner.Runner()使其输出受影响的主机并退出。

0 投票
1 回答
7010 浏览

linux - 复制文件并使用 ansible 运行特定命令?

我需要将一个文件复制到许多服务器中,然后在复制后执行特定命令。以下是我需要为每台机器执行的步骤。

  • 将文件复制到服务器。
  • sudo restart tree复制后执行命令 ( )。
  • 睡几秒

并对所有机器重复上述步骤。

所以我决定为此使用ansible。我可以复制文件,但我不确定如何在复制后执行命令然后休眠。

我有一个hosts.txt文件,它将逐行包含所有机器。

我将登录到machineA哪个将有我的function.py文件和hosts.txt文件,并从那台机器上运行下面的ansible命令。

使用上述命令,它将复制 function.py 文件,但我想sudo restart tree在每个服务器上复制该文件后执行命令。所以基本上

  • 将文件复制到机器 B.
  • 然后执行命令(sudo restart tree)
  • 在那之后睡眠几秒钟,然后对其他机器做同样的事情

我可以使用 ansible 来做到这一点吗?我正在运行 ansible 1.5.4。

0 投票
1 回答
154 浏览

ansible - 使用扁平化时变量的 Ansible 意外评估

有一个如下所示的配置文件:

我想得到一个包含所有列表字符串的bar列表。我做了这个任务:

这是问题所在;结果列表如下所示:

Ansible 似乎解释了之前设置的“one”变量,而忽略了我期待一个字符串的事实。

我做错了什么?如何从条形变量配置中获取字符串列表?

(我使用 Ansible 1.9)

0 投票
1 回答
404 浏览

ansible - Ansible 错误 - 无法连接,检查登录凭据(login_user 和 login_password,可以在 ~/.my.cnf 中定义)

我是 ansible 的新手,我想像这样执行我的命令

Ansible_代码:

输出错误:

我无法使用模板创建此文件 ~/.my.cnf,因为我使用的是 ansible 1.9.6 和更高版本的 ansible 中使用的配置文件有人可以建议我解决此问题。

Ansible_版本:

0 投票
2 回答
22010 浏览

linux - 在ansible中切换到root用户执行命令

我正在编写 Ansible 剧本来执行我的一些任务。在我的一项任务中,我需要切换到特定目录,然后使用 sudo 执行命令,但我需要先切换到 root 用户来完成所有这些事情,否则它将无法工作。所以总的来说,这就是我在没有 ansible 的情况下所做的:

完成上述步骤后,我看到 GNU 并行库已正确安装在我的系统中。但是通过使用 Ansible 的以下步骤,我根本没有看到我的 GNU 库被安装。

现在我的问题是如何切换到 root 用户并执行特定命令。我正在运行 Ansible 1.5.4,看起来我无法升级。我什至尝试了以下方法,但仍然无法正常工作:

我正在使用以下命令运行我的剧本:

0 投票
0 回答
167 浏览

ansible - 包含有条件的任务文件 - 任务仍在尝试运行?

注意:我正在使用 Ansible 1.9.4,目前无法升级

我试图根据嵌套字典是否存在有条件地包含一个任务文件。

我有 4 台主机,其中 1 台有一种我正在调用的虚拟机,heavy_nvme而其他的则没有。我正在尝试同时在所有 4 台主机上运行此剧本。我正在使用group_vars为所有服务器设置所有变量,然后使用单个主机文件来覆盖具有不同要求的服务器的相关字典。

我的组变量如下所示:

我的include命令如下所示:

当我尝试运行它时,我收到与包含文件中的任务相关的失败:

这指的是以下行destroy-virtual-machines.yml

发生错误是因为变量是通过对每个虚拟机类型num_machines的变量执行计算而设置的事实。countdruid类型运行良好,因为count存在,但显然它不在heavy_nvme字典中。

我尝试了几种不同的方法,包括count: 0heavy_nvme字典中添加 a。我也尝试过heavy_nvme完全删除字典,或者将其设置为空白字典 - 既不给我我需要的结果。

我很确定会发生此错误,因为当您运行条件时include,条件只是添加到包含文件中的每个任务中。这对我不起作用,因为那样我会丢失包含文件所需的大量变量。

heavy_nvme如果dict 不存在,或者它的计数为 0,或者它有一个指定的键/变量集(例如) ,有没有办法让我完全停止这些任务的运行active: false