问题标签 [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.
continuous-integration - Ansible:在模块“复制”中使用正则表达式
上下文
我正在尝试构建一个continuous-integration
平台,并在其中Ansible
playbook
使用从主服务器上maven-dependency-plugin:get
下载工件,该工件将使用模块部署在远程服务器上。Nexus
Ansible
copy
为了制作一个轻量级和通用的剧本,我定义了一个变量app_version
,如果它被定义,我下载给定的版本,如果没有,我从存储库下载最新Nexus
版本。工件被下载到给定目录 ( /tmp/delivery/
) 中。Ansible
在我的任务下方:
我的问题
为了确保剧本的通用性,我需要在Ansible
模块中编写一个正则表达式copy
来选择具有该模式的工件,app*.war
但看起来模块不提供这种能力。在我的复制任务下方:
如何在模块中使用正则表达式copy
?
我在用着Ansible 1.8
python - 如何使用 Ansible 1.x API 列出主机
Ansible-playbook 有一个--list-hosts
cli 开关,它只输出受 playbook 中每个 play 影响的主机。我正在寻找一种通过 python API 访问相同信息的方法。
我现在用来测试的(非常)基本脚本是
我只是不知道要添加什么以ansible.runner.Runner()
使其输出受影响的主机并退出。
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。
ansible - 使用扁平化时变量的 Ansible 意外评估
有一个如下所示的配置文件:
我想得到一个包含所有列表字符串的bar
列表。我做了这个任务:
这是问题所在;结果列表如下所示:
Ansible 似乎解释了之前设置的“one”变量,而忽略了我期待一个字符串的事实。
我做错了什么?如何从条形变量配置中获取字符串列表?
(我使用 Ansible 1.9)
ansible - Ansible 错误 - 无法连接,检查登录凭据(login_user 和 login_password,可以在 ~/.my.cnf 中定义)
我是 ansible 的新手,我想像这样执行我的命令
Ansible_代码:
输出错误:
我无法使用模板创建此文件 ~/.my.cnf,因为我使用的是 ansible 1.9.6 和更高版本的 ansible 中使用的配置文件有人可以建议我解决此问题。
Ansible_版本:
linux - 在ansible中切换到root用户执行命令
我正在编写 Ansible 剧本来执行我的一些任务。在我的一项任务中,我需要切换到特定目录,然后使用 sudo 执行命令,但我需要先切换到 root 用户来完成所有这些事情,否则它将无法工作。所以总的来说,这就是我在没有 ansible 的情况下所做的:
完成上述步骤后,我看到 GNU 并行库已正确安装在我的系统中。但是通过使用 Ansible 的以下步骤,我根本没有看到我的 GNU 库被安装。
现在我的问题是如何切换到 root 用户并执行特定命令。我正在运行 Ansible 1.5.4,看起来我无法升级。我什至尝试了以下方法,但仍然无法正常工作:
我正在使用以下命令运行我的剧本:
ansible - 包含有条件的任务文件 - 任务仍在尝试运行?
注意:我正在使用 Ansible 1.9.4
,目前无法升级
我试图根据嵌套字典是否存在有条件地包含一个任务文件。
我有 4 台主机,其中 1 台有一种我正在调用的虚拟机,heavy_nvme
而其他的则没有。我正在尝试同时在所有 4 台主机上运行此剧本。我正在使用group_vars
为所有服务器设置所有变量,然后使用单个主机文件来覆盖具有不同要求的服务器的相关字典。
我的组变量如下所示:
我的include
命令如下所示:
当我尝试运行它时,我收到与包含文件中的任务相关的失败:
这指的是以下行destroy-virtual-machines.yml
:
发生错误是因为变量是通过对每个虚拟机类型num_machines
的变量执行计算而设置的事实。count
该druid
类型运行良好,因为count
存在,但显然它不在heavy_nvme
字典中。
我尝试了几种不同的方法,包括count: 0
在heavy_nvme
字典中添加 a。我也尝试过heavy_nvme
完全删除字典,或者将其设置为空白字典 - 既不给我我需要的结果。
我很确定会发生此错误,因为当您运行条件时include
,条件只是添加到包含文件中的每个任务中。这对我不起作用,因为那样我会丢失包含文件所需的大量变量。
heavy_nvme
如果dict 不存在,或者它的计数为 0,或者它有一个指定的键/变量集(例如) ,有没有办法让我完全停止这些任务的运行active: false
?