我有一个应该在指定的IP上配置的剧本,而不是连接到这个应用程序来配置里面的东西.
我遇到了一个问题:我需要在应用配置中更改任何内容后重新启动应用程序,如果我没有重新启动应用程序,则连接失败(没有连接,因为应用程序对新配置的新配置一无所知我'我试图访问).
我目前的剧本:
tasks:
- name: Configure app
template: src=app.conf.j2 dest=/etc/app.conf
notify: restart app
- name: Change data in app
configure_app: host={{new_ip}} data={{data}}
handlers:
- name: restart app
service: name=app state=restarted
Run Code Online (Sandbox Code Playgroud)
我需要强制处理程序configure_app在执行'更改应用程序中的数据'之前运行.
我有许多线程的应用程序.其中一个是烧瓶,用于实施(腋下)API.它使用低负载,从未暴露在互联网上,因此内置烧瓶网络服务器非常好.
我当前的代码如下所示:
class API:
# ... all other stuff here, skipped
def run():
app = flask.Flask('API')
@app.route('/cmd1')
def cmd1():
self.cmd1()
@app.route('/cmd2')
def cmd2()
self.cmd2()
app.run()
Run Code Online (Sandbox Code Playgroud)
我觉得我做错了,因为所有的文档都说'在模块级创建烧瓶应用'.但我不想这样做 - 它搞乱了我的测试,而API是较大应用程序的一小部分,它有自己的结构和协议(每个'应用程序'是在一个或多个线程中运行的独立类).
如何在课堂内使用Flask?
我们有一个普通的存储库,其中包含一些代码和测试。
一项工作有“规则”声明:
rules:
- changes:
- foo/**/*
- foo_scenarios/**/*
- .gitlab-ci.yml
Run Code Online (Sandbox Code Playgroud)
问题是, 的存在会rules导致 Gitlab 运行“独立管道”,这不是我的本意,而且很烦人。有什么方法可以禁用那些“分离”的管道,但保留该rules部分?
jinja2使用过滤器'| default()'来处理未定义的变量.但它不适用于字典值.
如果D可能有或没有密钥foo(D [foo]),那么:
{{ D[foo]|default ('no foo') }}
Run Code Online (Sandbox Code Playgroud)
如果D未定义,将打印'no foo',但如果定义了D,则会导致错误('dict对象'没有属性'foo'),但D [foo]未定义.
有没有办法让字典项目默认?
我在模板中有非常简单的一行:
ip={{ip|join(', ')}}
Run Code Online (Sandbox Code Playgroud)
我有ip列表:
ip:
- 1.1.1.1
- 2.2.2.2
- 3.3.3.3
Run Code Online (Sandbox Code Playgroud)
但应用程序需要带引号的IP(ip ='1.1.1.1','2.2.2.2').
我可以这样做:
ip:
- "'1.1.1.1'"
- "'2.2.2.2'"
- "'3.3.3.3'"
Run Code Online (Sandbox Code Playgroud)
但它非常难看.是否有任何好的方法在ansible的列表的每个元素上添加引号?
谢谢!
我发现了一个我不明白的语言结构:
pub struct OpenOptions(fs_imp::OpenOptions);
Run Code Online (Sandbox Code Playgroud)
我什至用这些括号创建了一段可编译的代码,但我仍然无法理解:
struct Foo {
bar: i32,
}
struct Baz(Foo);
fn main() {
let mut x: Baz = Baz(Foo{ bar: 3 });
}
Run Code Online (Sandbox Code Playgroud)
那些圆括号是干什么用的?
究竟SIG_DFL(信号的defaut处理程序)做了什么?我对SIGTSTP很感兴趣.在奇怪的条件下,它有点行为不端.如果一个线程处于TASK_ININTERRUPTBLE状态,我怀疑它做了一些奇怪的事情.
SIG_DFL源代码在哪里?libc库?
谢谢.
使用带有 Ansible 后端的 TestInfra 进行测试。除了在运行测试时使用 Ansible 本身,一切都很好
测试文件
import pytest
def test_zabbix_agent_package(host):
package = host.package("zabbix-agent")
assert package.is_installed
package_version = host.ansible("debug", "msg={{ zabbix_agent_version }}")["msg"]
(...)
Run Code Online (Sandbox Code Playgroud)
其中 zabbix_agent_version 是来自 group_vars 的 Ansible 变量。可以通过运行这个剧本来获得
- hosts: all
become: true
tasks:
- name: debug
debug: msg={{ zabbix_agent_version }}
Run Code Online (Sandbox Code Playgroud)
命令执行测试
pytest --connection=ansible --ansible-inventory=inventory --hosts=$hosts -v test.py
Run Code Online (Sandbox Code Playgroud)
ansible.cfg
[defaults]
timeout = 10
host_key_checking = False
library=library/
retry_files_enabled = False
roles_path=roles/
pipelining=true
ConnectTimeout=60
remote_user=deploy
private_key_file=/opt/jenkins/.ssh/deploy
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
self = <ansible>, module_name = 'debug', module_args = 'msg={{ zabbix_agent_version }}', …Run Code Online (Sandbox Code Playgroud) 我们有有关部署的通知,这些通知会发送到公司聊天室。当用户在本地运行代码时,会有一些信息来识别“谁运行代码”($USER、$HOSTNAME 等)。
当从 CI 触发相同的代码时,我想了解有关此工作流程的“原因是谁”的信息。可能是用户点击`workflow_dispatch'的github账户名,也可能是git中commit的author,也可能是author或PR等。
Github Actions 中的工作流程是否有此类信息?
我想改变dir()我班级的输出.通常,对于所有其他对象,通过__dir__在类中定义自己的方法来完成.但如果我为我的班级做这个,那就不叫了.
class X(object):
def __dir__():
raise Exception("No!")
>>>dir(X)
['__class__', '__delattr__', '__dict__',....
Run Code Online (Sandbox Code Playgroud)
如何更改dir()课程的输出?