问题标签 [ansible-handlers]
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 通知处理程序 with_items
我正在通过 ansible 为多个应用程序添加 JAVA_OPTS 作为环境变量,如果 JAVA_OPTS 发生更改,我想重新启动应用程序。
我现在拥有的是每个应用程序添加环境变量和通知以重新启动应用程序的任务,例如:
因为我有很多应用程序这样做意味着有很多任务。我想要的是有一个任务来循环使用with_items
. 我不知道如何让一个处理程序任务重新启动。是否可以将哪个应用程序需要重新启动传递给处理程序?就像是:
ansible - ansible 角色无法通过处理程序启动 apache
我对 apache 有这个简单的角色(在 CentOS7 中):
角色/apache/tasks/main.yml
角色/apache/handlers/main.yml
with-roles.yml - 与“角色”目录相同级别的剧本
然后我按如下方式运行剧本:
这是屏幕上详细输出的结尾部分:
但是当我登录到 1.23.4.56 时,机器安装了 httpd 但已停止(这意味着处理程序没有运行)。我究竟做错了什么?
ansible - Ansible 角色工作流程问题
我想(步骤 1)更改 postgresql 配置文件,(步骤 2)重新启动服务,然后(步骤 3)添加 db 用户。
../roles/postgres/tasks/main.yml
../roles/postgres/handlers/main.yml
postgres.yml
问题:ansible 角色中真正的工作流程是:step1 -> step3 -> step2。
我可以通过将处理程序任务移入来修复它../roles/postgres/tasks/main.yml
,但无论配置文件是否更改,它都会重新启动服务。
这种请求的最佳做法是什么?
ansible - 处理程序未在任务后被调用
我正在尝试使用 Ansible 自动化一些任务。在我的剧本中,我有一个复制任务,然后我更改了文件的权限。完成此任务后,我需要重新启动服务。我包括通知并且还声明了我的处理程序,但奇怪的是这个处理程序永远不会被调用。
摘自我的剧本
这是我的处理程序文件内容。
运行 playbook 后的 o/p
但是当我运行这个剧本时,不会调用这个服务的重启。为什么会这样?
我们不能在文件模块中使用通知吗?任何帮助将不胜感激。
ansible - Ansible 处理程序未执行
Ansible 版本:2.6.3
我的文件夹结构:
处理程序 main.yml 正在重新启动 chrony:
config.yml 是:
main.yml 是:
任务“将 chrony.conf 复制到 /etc/chrony/”已更改。
但是处理程序没有被执行。
ansible - Ansible 不从所有主机的依赖角色执行处理程序
设置
我有几个角色声明角色依赖关系,有时使用他们所依赖的角色的处理程序。我的设置的简化版本如下所示(这是输出,head inventory **/*.yml
它显示了所有路径名和文件的完整内容):
现在我运行ansible-playbook -i inventory playbook.yml
结果
问题
我的问题是我希望两台服务器都执行基本处理程序。但显然它在 server2 上被跳过了。如果我添加-v
到 ansible 命令,我会得到无用的评论,即skipping: [server2] => {"changed": false, "skip_reason": "Conditional result was False"}
.
让我感到困惑的是,基本角色似乎被包含了两次,并且每个服务器分别跳过了一个或另一个包含该角色的内容。
问题
- 有什么方法可以确保处理程序被正确触发?
编辑
- 处理程序没有被触发是一个错误,还是该行为记录在某处?
/编辑
小问题
- 有没有办法以一种不会产生许多包含项的方式声明依赖项,这些包含项只被一个服务器拾取而被所有其他服务器忽略,尽管其他服务器将在其他点通过他们自己的依赖项包含相同的角色?当我有更多的服务器和角色时,这会导致很多跳过的任务。(在阅读了关于角色包含的文档后,我怀疑不是)
- 是否有其他方法可以使用 ansible 处理角色依赖项和处理程序?我在阅读https://medium.com/@ibrahimgunduz34/parallel-playbook-execution-in-ansible-30799ccda4e0后想出了这个设置
边注
我想避免使用文档group_by
中描述的技术,或者更一般地说,在他们自己的剧本中只为正确的服务器子集执行每个角色,因为我有很多服务器,我想通过以下方式加快剧本的运行使用.strategy: free
ansible - 等待 with_lines 中每个项目的处理程序 - Ansible
Ansible 版本:ansible 2.4.2.0
我想按顺序启动 VM 取决于角色(主/备份)。多个 VM ID 存储在 2 个文件master
和backup
. 控制器流程应如下所示
- 从文件中逐个迭代VM ID
- 对于每次迭代,应通知处理程序。即迭代应该等待处理程序完成
- 如果处理程序失败(或处于等待状态),迭代不应移动前言。
作为参考,您可以查看以下剧本
对于上面的剧本,我看到的是在整个迭代完成后通知处理程序。
有没有更好的方法来解决这个问题?或任何建议如何适应block
这个剧本来解决?
PS:任务中的虚拟命令RUN nova start {{ item }} HERE!!!
不会等待。这就是为什么我必须手动检查状态。
ansible - 可靠的。在特定主机上运行处理程序
我需要在ansible运行期间收集一些信息并最终打印这些信息。
我试图在角色中定义空列表变量。我在 playbook 处理程序中添加了新值,以在 playbook 末尾列出该变量的 ant print 值。
我想念那个 set_fact 主机相关的。因此,一旦我开始使用不同的主机,此解决方案就会停止工作。Delegate_to 也不能解决问题。有没有办法让这个列表全球化?还是存在任何其他解决方案?
ansible - Ansible 用于在首次登录时更改密码的休息密码处理程序
您好,正在使用 ansible 脚本创建 ssh 用户,并在第一次登录时被迫更改密码。这个想法没问题,但似乎处理程序不适用于带有 python 版本 3.7.3 的 ansible 2.7.7。这是实际的脚本和实际的语法
这是错误
致命:[192.168.12.147]:失败!=> {"reason": "加载 YAML 时出现语法错误。\n 未找到预期的 '-' 指示符\n\n错误似乎出现在 '/home/klevin/Rebel/ansible-user-sync/edit_users/ internal_add_users.yml':第 57 行,第 1 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n\nhandlers:\n^ here\n" }
第 57 行是处理程序行的开始位置
ansible - 如何跳过多余的 Ansible 处理程序?
想象一下下面的剧本,它管理一个 systemd 服务单元和一个“事物”服务的配置文件:
如果我修改 thing.service 文件和 thing.conf 文件,处理程序将触发重新启动和重新加载。
不需要重新加载,因为服务将重新启动。
有什么方法可以通知 Ansible,这样它就不会在重启后触发不必要的重新加载?
我不想注册变量并使用“when”子句检查处理程序中的变量。我在问这是否是 Ansible 在其剧本和任务语法中适应的东西。