问题标签 [ansible-module]
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.
ansible - Ansible - 处理自定义模块中的意外 STDOUT
我编写了一个包含 Python 库的自定义模块。我将result
dict 定义如下:
稍后在代码中,我将对库的调用包装成try/except
这样:
我在模块中的任何地方都没有一条print
语句,我的 lib 输出记录到一个文件中。
最后我称之为 Ansible 角色
从我的库中的最后一条记录器消息中,我可以清楚地看到运行成功完成,但是我的模块最终失败,记录器消息的大量输出以开头
奇怪的是,我看到result
嵌入到输出的 MODULE_STDOUT 部分。实际上这是 MODULE_STDERR 开始之前的最后一部分
MODULE_STDOUT 和 MODULE_STDERR 都包含来自 lib 的相同日志消息,result
相关行的唯一区别是:
问题是模块总是以“失败”告终,即使我知道我的代码运行成功,剧本也会终止。
2天后
好的,我现在知道问题所在了。这是由于我将输出包装到 STDOUT/STDERR 的库,因为它在内部使用子进程。当 Ansible 尝试解析 STDOUT 时,由于 STDOUT 中所有额外的非 JSON 输出,它在此方法中失败。如何处理这种情况?我怎么能保证我的自定义模块有一个原始的 STDOUT,只有 JSON 格式的输出?我试图做sys.stdout.flush()
无济于事。
这实际上使得编写自定义模块毫无用处。请Ansible大师,任何提示?
ansible - 如何在 Ansible 中检查文件是否存在于带有扩展名的路径中?
我只想知道如何通过ansible代码检查文件是否存在或没有任何目录。我已经尝试使用路径为“* .test”的 stat 模块,但它没有工作。
以下是我的尝试:
因为stat 模块中的路径需要特定的文件或目录。我希望每个人都在这方面帮助我。
先感谢您。
Ansible 版本:ansible 2.8.7
ansible - Ansible 中是否有等效的 grep 和 cut 命令而不使用命令模块?
我正在使用下面的 shell 命令,结果是一个字符串数组
有没有办法在不使用命令模块的情况下在 Ansible 中执行此操作
ansible - 在 Windows 上使用 win_xml ansible 模块更新 xml 文件时面临问题
1.我正在尝试在 win_xml 的帮助下使用 ansible 脚本更新 test.xml 文件中的 xml 元素值,我的 ansible playbook 如下所示:
2.使用以下命令运行剧本:
3.此命令失败并出现以下错误:
ansible - 如何在 ansible 自定义模块中加载 yaml 文件
我有一个ansible
自定义模块,它有一个YAML
格式的配置文件。现在的问题是我应该如何YAML
在模块中加载该文件?
注意据我所知,我不能简单地使用类似的东西,PyYAML
因为ansible
将在它正在配置的节点上运行我的模块,并且可能没有PyYAML
安装该系统。
注意它ansible
本身ansible.parsing.utils.yaml.from_yaml
也不能被模块使用。
听起来很有趣,我不知道如何在自定义模块中加载YAML
文件。ansible
请帮忙
ansible - 如何在ansible中将文件从网络路径复制到控制器机器
假设我在某个网络路径中有一个文本文件
例如:\cr-ampd-a01.abcd.loc\BulkFolder\textfile.txt
如何在ansible中将该文件复制到我的控制器机器
注意:我可以通过(WIN+R 和该路径)访问它,然后它会弹出以供凭据访问。
这是带有 win_copy 的示例代码
此代码的错误是:无法复制 src 文件,因为它没有退出
另一个使用 net_get
此处的错误:必须在此主机上指定 ansible_network_os
我怎样才能做到这一点?
python - 编写模块'su -' 在 Ansible 模块中还是使用成为?
我正在编写一个Ansible模块来配置软件供应商要求配置命令必须在特定用户下执行。如果您在“root”下执行此操作,您将收到错误消息。
所以mu当前的解决方案是:
它有效,但我对此并不满意。我也可以让 Ansible 做它并使用become
and become_user
. 但是你必须正确地记录这一点,你会得到更高的错误变化,因为人们并不总是阅读文档。
所以我很好奇什么可能是最好的方法,或者是否有另一种方法来解决这个问题。
windows - Windows 中的 Ansible 文件处理/blockinfile 模块
我想通过 ansible 更新 Windows 文件中的多行文本块。使用过 blockinfile 但它只适用于 Linux 机器。这个模块有什么替代品吗?或任何其他方式来做到这一点?有win_lineinfile但我要添加大约 20 行。很感谢任何形式的帮助!!
mysql - 使用 Ansible 更新 Mysql 用户的主机名
我想使用 ansible-playbook 更新我的 MYSQL 用户。
我尝试了什么:
我查看了 MySQL 模块文档,但没有更新用户主机名的选项。
https://docs.ansible.com/ansible/latest/modules/mysql_user_module.html#parameter-host_all
预期结果:
使用新主机名更新用户。
当前的 Ansible PlayBook: 我想更新user1的主机名
linux - 当使用 shell 模块面临错误时,也无法使用 unarchive 模块来解压 file.tar.gz 文件夹
我的带有 shell 模块的剧本
错误 [警告]:考虑使用 unarchive 模块而不是运行“tar”。如果由于 unarchive 不足而需要使用命令,您可以在此命令任务中添加 'warn: false' 或在 ansible.cfg 中设置 'command_warnings=False' 以消除此消息。致命:[XXXX]:失败!=> {"更改": true, "cmd": "tar -xvf MacPorts-2.6.2.tar.gz\ncd MacPorts-2.6.2\n./configure\nmake \nmake install\n", "delta" : "0:00:00.026259", "end": "2020-06-03 15:54:26.259407", "msg": "非零返回码", "rc": 2, "start": "2020 -06-03 15:54:26.233148", "stderr": "tar: 打开存档出错: 无法打开 'MacPorts-2.6.2.tar.gz'\n/bin/sh: 第 1 行: cd: MacPorts- 2.6.2:没有这样的文件或目录\n/bin/sh: 第 2 行: ./configure: 没有这样的文件或目录\nmake: * 没有指定目标,也没有找到 makefile。停止。\nmake: *没有规则进行目标install'. Stop.", "stderr_lines": ["tar: Error opening archive: Failed to open 'MacPorts-2.6.2.tar.gz'", "/bin/sh: line 1: cd: MacPorts-2.6.2: No such file or directory", "/bin/sh: line 2: ./configure: No such file or directory", "make: *** No targets specified and no makefile found. Stop.", "make: *** No rule to make target
安装'。停止。”],“stdout”:“”,“stdout_lines”:[]}
但是我在目标机器上有 tar.gz 文件,当我使用 unarchive 模块解压时面临以下问题
任务 [从本地计算机取消归档 macport] ****************************************** ****************************************************** ****************************** 致命:[XXX]:失败!=> {"changed": false, "msg": "Failed to find handler for \"/Users/pru5/Documents/ansible/MacPorts-2.6.2.tar.gz\"。确保提取所需的命令文件已安装。命令 \"/usr/bin/tar\" 检测为 tar 类型 bsd。需要 GNU tar。命令 \"/usr/bin/unzip\" 无法处理存档。"} 有人可以帮我解压缩文件在麦克??