小编Zei*_*tor的帖子

列出容器时如何在命令列中看到完整的命令字符串?

它是这个问题的补充,典型的解决方案是使用sudo docker container ls显示的命令

\n
CONTAINER ID        IMAGE                 COMMAND                  CREATED             ...\n4114e655e2b1        xx/yy                 "/bin/sh -c \'exec po\xe2\x80\xa6"   3 days ago          ... \n
Run Code Online (Sandbox Code Playgroud)\n

这里的问题是如何查看完整的 COMMAND 列内容?

\n

PS:没有人使用该--format选项,如何以最简单的即插即用方式使用它?

\n

docker

5
推荐指数
1
解决办法
2513
查看次数

如何迭代枚举标志别名?

问题

如何迭代枚举标志别名?

from enum import Flag

class Color(Flag):
    RED = 1
    BLUE = 2
    GREEN = 4
    WHITE = RED | BLUE | GREEN # <- How do I retrieve this alias?

list(Color) 
# [<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 4>]
# How do I include Color.White and other aliases in this list?
Run Code Online (Sandbox Code Playgroud)

根据文档,__iter__仅返回非别名成员。

__iter__(self)
返回所有包含的非别名成员
版本 3.11 中的更改:迭代期间不再返回别名。

python python-3.11

5
推荐指数
1
解决办法
129
查看次数

Ansible:删除 json 文件中的空格

我的 ansible 变量中加载了一个 json 文件内容。

json 内容(以及我从中写入的结果文件)具有不必要的文件空间和空行。我想通过删除所有不必要的东西来缩小 json 文件。

是否可以做类似的事情{{ myjson_content| to_json_minify }}

也许这可以通过正则表达式来完成?

json jinja2 ansible

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

错误!“copy”不是 Play 的有效属性

我正在尝试制作通过 ssh 连接到服务器并发送文件的 ansible playbook。

我的大部分谷歌搜索都没有产生具体结果。

- 
  become: true
  hosts: all
  remote_user: artur
  tasks: ~
- 
  copy: 
    dest: /home/artur/grep_error.py
    group: UnixUsers
    mode: 420
    owner: artur
    src: /Users/artur/Desktop/sublime/projects/scripts/grep_error.py
  name: "example copying file with owner and permissions"
Run Code Online (Sandbox Code Playgroud)

我希望将文件复制到 ssh 服务器。

yaml ansible

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

所有主机的 Ansible 附加字典结果

我正在尝试使用 Ansible 向多个主机发送返回字典的命令。然后我想附加每个主机的字典结果来累积所有主机的结果。最后,我想打印累积结果的字典以供以后处理或写入文件。由于结果显示为字符串,我似乎无法合并字典。有办法解决这个问题吗?另外,是否有更 Ansible 有效的方法来完成此任务?

示例手册:

---
  - hosts: myhosts
    gather_facts: False
    vars:
      mydict: {}
    tasks:
    - name: Get dict result
      shell: "cat /path/dict_output"
      register: output
    - set_fact:
       result_dict="{{ output.stdout}}"

    - debug: var=result_dict
Run Code Online (Sandbox Code Playgroud)

调试输出:

TASK [debug] ****************************************************************************************************************************************************************
ok: [host-a] => {
    "result_dict": {
        "host_b": [
            {
                "ip-1": {
                    "port": "22", 
                    "service": "ssh"
                }
            }, 
            {
                "ip-2": {
                    "port": "21", 
                    "service": "ftp"
                }
            }
        ]
    }
}
ok: [host-b] => {
    "result_dict": {
        "host_a": [
            {
                "ip-1": {
                    "port": "22", 
                    "service": …
Run Code Online (Sandbox Code Playgroud)

python dictionary python-3.x ansible

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

使用新的随机字符串将元素添加到字典列表中

我有一个 ansible 变量,它是一个字典列表:

userdata:
  - { first: Mike, last: Smith, username: msmith}
  - { first: Jane, last: Largo, username: jlargo}
  - { first: Evan, last: Jones, username: ejones}
Run Code Online (Sandbox Code Playgroud)

我想向每个条目添加一个字段,password该字段为每个条目分配一个随机生成的 20 个字符的字母数字密码,以便我可以在剧本期间使用它来执行需要同步该密码的各种操作。我尝试做 a block:,但发现你不能这样做with_items。我也找不到使用with_items和保存回该项目字典的方法。密码查找插件看起来有望获得随机密码,而无需将其保存到文件(/dev/null),但我似乎无法在列表的每个元素中获取它。

最后,我想要一个这样的结构:

userdata:
  - { first: Mike, last: Smith, username: msmith, password: FdUChpPtfonoPexMZmt0}
  - { first: Jane, last: Largo, username: jlargo, password: QR13sN7CP00LbdXZ0gON}
  - { first: Evan, last: Jones, username: ejones, password: OCQSmqCbO8239jHpQiRm}
Run Code Online (Sandbox Code Playgroud)

jinja2 ansible

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

ansible:以不同用户身份运行角色

我在剧本中运行两个角色,一个角色创建用户,另一个角色运行一系列我想作为服务器上新创建的用户运行的任务。

playbook的写法如下:

- hosts: centos
  connection: ssh
  gather_facts: false
  become: true

  roles:
  - ../roles/user_setup
  - ../roles/tasks
Run Code Online (Sandbox Code Playgroud)

假设从user_setup角色创建的用户名为user1:我基本上希望名为 的角色tasks作为 运行user1。最好的方法是什么?谢谢。

ansible devops

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

使用“gcloud build”时 Dockerfile COPY 命令缺少单个文件

我遇到了一个令人难以置信的令人沮丧的问题,Dockerfile 中的 COPY 命令成功复制了除一个之外的所有应用程序文件。我没有 .dockerignore 文件,所以我知道该文件不会以这种方式从构建中排除。

\n

注意:我确实有一个.gitignore排除file2.json我不想版本的情况。但正如您将在下面看到的,我是从本地文件夹构建的,而不是从克隆/签出远程构建的,所以我不明白为什么.gitignore在这种情况下会影响 docker 构建。

\n

下面是我的目录的样子:

\n
$ tree -a -I .git app\napp\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 app\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file1.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file2.json\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 file3.txt\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 file4.yml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 somefile2.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 somefile.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Dockerfile\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .gitignore\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 requirements.txt\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n
Run Code Online (Sandbox Code Playgroud)\n

这就是我的 Dockerfile 中的内容

\n
FROM ubuntu:18.04\nFROM python:3.7\n  \nCOPY . /app\n  \nRUN cp app/app/data/file2.json ~/.somenewhiddendirectory\n   \nRUN pip install app/.\n   \nENTRYPOINT ["python", "app/app/somefile.py"]\n
Run Code Online (Sandbox Code Playgroud)\n

由于某种原因,在通话file2.json过程中没有被复制,当我尝试在其他地方复制COPY . /app时,我收到错误。cp我已经完成了类似的调用 …

python docker google-cloud-build

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

Docker-compose 卷路径编辑后不改变

我正在运行 a docker-compose up -d,收到以下错误消息:

Creating webserver ... 
Creating webserver ... error

ERROR: for webserver  Cannot start service webserver: error while mounting volume '/var/lib/docker/volumes/backend_dhparam/_data': failed to mount local volume: mount /home/root/SemanaOMnistack/backend/dhparam/:/var/lib/docker/volumes/backend_dhparam/_data, flags: 0x1000: no such file or directory

ERROR: for webserver  Cannot start service webserver: error while mounting volume '/var/lib/docker/volumes/backend_dhparam/_data': failed to mount local volume: mount /home/root/SemanaOMnistack/backend/dhparam/:/var/lib/docker/volumes/backend_dhparam/_data, flags: 0x1000: no such file or directory
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)

我的卷路径docker-compose.yml是:

volumes:
  certbot-etc:
  certbot-var:
  dhparam: …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

3
推荐指数
1
解决办法
3402
查看次数

在多个清单主机组上运行 ansible 任务

我希望在多个库存组上运行相同的任务,例如:

[big_group]
greenhat
localhost
redhat
linux

[small_group]
localhost

[redhat_group]
redhat
Run Code Online (Sandbox Code Playgroud)

在我的剧本中,我需要在[small_group][redhat_group]上运行一个任务

我的任务如下

[big_group]
greenhat
localhost
redhat
linux

[small_group]
localhost

[redhat_group]
redhat
Run Code Online (Sandbox Code Playgroud)

收到警告作为

 [WARNING]: While constructing a mapping from firewall.yml, line 6, column 5, found a duplicate dict key (when). Using last defined value only.
Run Code Online (Sandbox Code Playgroud)

剧本结果:

TASK [Disable HTTPS service from firewalld] **************************************************************************************************************************************************
skipping: [localhost]
skipping: [redhat]
Run Code Online (Sandbox Code Playgroud)

如何指定多个组 when: inventory_hostname in groups[]

谢谢

ansible ansible-inventory

3
推荐指数
1
解决办法
2249
查看次数