问题标签 [ansible-playbook]

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 投票
13 回答
264056 浏览

ansible - 将 Ansible 剧本安全地限制在单台机器上?

我正在使用 Ansible 执行一些简单的用户管理任务,其中包含一小部分计算机。目前,我的剧本设置为hosts: all,我的主机文件只是一个包含所有机器的组:

我发现自己经常不得不针对一台机器。该ansible-playbook命令可以像这样限制播放:

但这似乎有点脆弱,尤其是对于具有潜在破坏性的剧本而言。省略limit标志意味着剧本将在任何地方运行。由于这些工具只是偶尔使用,因此似乎值得采取措施进行万无一失的播放,这样我们就不会在几个月后意外地破坏某些东西。

是否有将剧本运行限制在单台机器上的最佳实践?理想情况下,如果遗漏了一些重要的细节,剧本应该是无害的。

0 投票
1 回答
36202 浏览

shell - Ansible Playbook 运行 Shell 命令

我最近为我的一台服务器深入研究了 Ansible,发现它非常有趣且节省时间。我正在运行一个 Ubuntu 专用服务器,并配置了许多用 Python 编写的 Web 应用程序和一些用 PHP 编写的 Web 应用程序。对于 Python,我使用 uwsgi 作为 HTTP 网关。我编写了 shell 脚本来启动/重新启动一些进程,以便运行特定 Web 应用程序的实例。我每次都要做的是,连接 ssh 并导航到该特定应用程序并运行脚本。

我需要的

我一直在尝试找到一种方法来编写 Ansible 剧本,以便在我的个人计算机上使用一行命令来完成所有这些工作,但我不知道如何做到这一点。我还没有在互联网上找到非常解释性(对于初学者)的文档或帮助。

问题

如何使用 Ansible playbook 重启 Nginx?如何通过进程 ID 杀死进程?

0 投票
1 回答
8562 浏览

ansible - 如何在 ansible playbook 中添加新行

我正在尝试使用lineinfile通过 ansible playbook 在 yaml 配置文件中添加新行。我到目前为止所尝试的。

我也按照参考文件进行了尝试。

谁能指导我如何添加文件中不存在的新行。我知道我可以通过添加regexp='' insertafter=EOF我的#attempt-1. 但我想在文件中间添加上面的行。

0 投票
6 回答
50579 浏览

ubuntu - 如何检测 Ansible playbook 在执行期间挂起的原因

我写的一些任务开始并且永远不会结束。Ansible 不提供任何可以解释这一点的错误或日志,即使使用 -vvvv 选项也是如此。剧本只是挂起,经过几个小时不会改变任何事情。

当我尝试手动运行我的任务(通过 SSH 输入命令)时,一切都很好。

挂起的示例任务:

有什么方法可以查看 stdout 和 stderr 吗?我试过了:

但没有任何改变。

我确实拥有所需的权限,并且我传递了正确的 sudo 密码——其他需要 sudo 的任务才能正确执行。

0 投票
1 回答
25723 浏览

ansible - 列出任务的清单文件中的所有 ansible 主机

对于备份,我需要遍历清单文件中的所有主机,以确保备份目标存在。我的结构看起来像

所以我需要一个(内置)变量/方法来列出清单文件中的所有主机,而不仅仅是一个组。

对于组,它看起来像这样

0 投票
1 回答
6315 浏览

ansible - Ansible - 仅在满足前提条件时才运行一系列任务

我有一个需要从远程 URL 安装的软件包,如下所示:

如果 pkg=foo 不存在,我只想运行前 3 个。实现这一目标的最佳方法是什么?

0 投票
1 回答
12084 浏览

sudo - 无法让 sudo 命令与 Ansible 一起使用

我正在尝试使用 Ansible 来配置 Vagrant 盒子和 EC2 服务器。使用 --connection=local 时,它在 Vagrant 框上运行良好,但似乎只是忽略了 sudo: True 行

当我这样做时:

它在普通用户的主目录中创建目录,该目录归普通用户所有。用户没有密码,我可以使用带有 sudo 的命令而不会被提示输入密码。我错过了什么?

0 投票
1 回答
6773 浏览

templates - 如何使用ansible遍历包含模板变量的数组?

我正在使用 Ansible 为网络服务器设置自动配置过程。为此,我有一个数组,其中包含要设置的虚拟主机的字典:

我准备了一个带有一些通用 nginx vhost 配置的模板:

最后,我使用以下任务将准备好的模板复制到目标主机:

任务按预期迭代vhost变量。不幸的是,Ansible 不会将当前项从迭代器传递给模板,而是模板可以访问所有当前有效的变量。

有没有办法将当前项目从迭代器传递给模板?

0 投票
2 回答
3500 浏览

ansible - Ansible,如果剧本包含角色,则运行任务

让我们想象一个具有以下角色的 playbook:base、monitoring、nginx 和另一个只有 base 和 nginx 的 playbook。

现在我只想在 playbook 包含 nginx 角色的情况下以监控角色运行任务,因为为了监控 nginx,我必须将一些不同的配置传递给监控服务。

如何执行依赖于另一个角色存在的任务?

0 投票
1 回答
1801 浏览

linux - Ansible 和有条件的软件安装

Ansible 非常适合推出(在我们的例子中是 JBoss)。剧本的一部分是:

这就像一个魅力,除了它每次都有效,我希望 Ansible 在已经安装 JBoss 时停止剧本(在我们的例子中,测试是如果/opt/jboss-eap-6.2.0确实存在。什么是最简洁的方法?你能提供在 when 子句中测试目标服务器上是否存在某些东西?