今天我在使用 ansible 并尝试卸载 debian 软件包时遇到问题。该包不是来自存储库,而是直接来自 .deb 文件,因此,在 Ansible 中我定义了安装任务:
- name: install nomachine
apt:
deb: /root/{{ nomachine_package }}
Run Code Online (Sandbox Code Playgroud)
这实际上有效,软件包被安装在 SO 中
但是,当需要删除它时:
- name: uninstall nomachine
apt:
deb: nomachine-enterprise-terminal-server
state: absent
Run Code Online (Sandbox Code Playgroud)
惊恐的事件:
fatal: [SERVER]: FAILED! => {"changed": false, "failed": true, "msg": "deb only supports state=present"}
Run Code Online (Sandbox Code Playgroud)
我不是开发人员,但看了一下apt.py,卸载过程似乎仅适用于通过存储库安装的软件包?(它似乎针对 apt 的缓存进行验证)。
因此,作为此卸载过程的解决方法,我正在执行以下操作:
- name: uninstall nomachine
shell: dpkg -r nomachine-enterprise-terminal-server
Run Code Online (Sandbox Code Playgroud)
我正在使用 ansible 2.3.0.0
也许我没有正确使用该工具或者该功能不可用。
感谢您对此提供的任何帮助。
H。
编辑:我认为我做得很好,因为遵循ansible 的示例:
- name: Remove "foo" package
apt:
name: foo
state: absent
Run Code Online (Sandbox Code Playgroud)
对于那些想知道为什么没有定义“-name”的人来说,这是因为该任务是一个处理程序。
您好,我尝试仅在应用程序启动并运行时执行特定测试(我正在使用 docker),我尝试在 bash 脚本的帮助下实现这一目标。我期望的是我需要运行一个循环,直到我从应用程序收到 200 状态,一旦我收到 200 脚本应该继续并执行测试。我正在尝试 bash 脚本,如下所示
#!/bin/bash
urlstatus=0
until [ $urlstatus -ne 200 ]; do
urlstatus=$(curl -o /dev/null --silent --head --write-out '%{http_code}' "http://localhost:8000/animals")
echo $urlstatus
done
Run Code Online (Sandbox Code Playgroud)
如果应用程序已启动并正在运行,则执行测试
请让我知道脚本中缺少什么。
谢谢