小编Geo*_*lin的帖子

如何在Ansible中执行任务之前强制处理程序运行?

我有一个应该在指定的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在执行'更改应用程序中的数据'之前运行.

ansible ansible-handlers

49
推荐指数
1
解决办法
4万
查看次数

在课堂内使用烧瓶

我有许多线程的应用程序.其中一个是烧瓶,用于实施(腋下)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?

python flask

22
推荐指数
3
解决办法
3万
查看次数

如何在 Gitlab 中禁用“分离”管道?

我们有一个普通的存储库,其中包含一些代码和测试。

一项工作有“规则”声明:

  rules:
    - changes:
      - foo/**/*
      - foo_scenarios/**/*
      - .gitlab-ci.yml
Run Code Online (Sandbox Code Playgroud)

问题是, 的存在会rules导致 Gitlab 运行“独立管道”,这不是我的本意,而且很烦人。有什么方法可以禁用那些“分离”的管道,但保留该rules部分?

gitlab gitlab-ci

22
推荐指数
2
解决办法
1万
查看次数

jinja2中字典的默认值(ansible)

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]未定义.

有没有办法让字典项目默认?

jinja2 ansible

13
推荐指数
1
解决办法
1万
查看次数

在jinja2(ansible)中为列表中的elemens添加引号

我在模板中有非常简单的一行:

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的列表的每个元素上添加引号?

谢谢!

jinja2 ansible

12
推荐指数
5
解决办法
2万
查看次数

Rust 中带圆括号的结构有什么用?

我发现了一个我不明白的语言结构:

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)

那些圆括号是干什么用的?

rust

9
推荐指数
1
解决办法
1010
查看次数

SIG_DFL究竟做了什么?

究竟SIG_DFL(信号的defaut处理程序)做了什么?我对SIGTSTP很感兴趣.在奇怪的条件下,它有点行为不端.如果一个线程处于TASK_ININTERRUPTBLE状态,我怀疑它做了一些奇怪的事情.

SIG_DFL源代码在哪里?libc库?

谢谢.

linux signals libc

8
推荐指数
1
解决办法
8836
查看次数

在 testinfra 中使用 Ansible 变量

使用带有 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)

python testing pytest ansible testinfra

7
推荐指数
1
解决办法
6416
查看次数

如何获取用户名,负责触发 github actions 中的工作流程

我们有有关部署的通知,这些通知会发送到公司聊天室。当用户在本地运行代码时,会有一些信息来识别“谁运行代码”($USER、$HOSTNAME 等)。

当从 CI 触发相同的代码时,我想了解有关此工作流程的“原因是谁”的信息。可能是用户点击`workflow_dispatch'的github账户名,也可能是git中commit的author,也可能是author或PR等。

Github Actions 中的工作流程是否有此类信息?

github-actions

7
推荐指数
1
解决办法
9295
查看次数

如何覆盖类的__dir__方法?

我想改变dir()我班级的输出.通常,对于所有其他对象,通过__dir__在类中定义自己的方法来完成.但如果我为我的班级做这个,那就不叫了.

class X(object):
    def __dir__():
        raise Exception("No!")

>>>dir(X)
['__class__', '__delattr__', '__dict__',....
Run Code Online (Sandbox Code Playgroud)

如何更改dir()课程的输出?

python metaprogramming class

6
推荐指数
1
解决办法
1153
查看次数