小编Zei*_*tor的帖子

如何调试docker容器的启动?

我成功构建了一个docker容器。我正在尝试运行它,但容器在启动时死亡。如何检查问题出在哪里?在docker events我可以看到以下日志:

2019-07-21T16:34:28.239785600+02:00 container create 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:28.444621700+02:00 network connect d6234d64d738131d14f8c951fe8067fad7bd4a0ff8a81f1b452d1a107648f95c (container=32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45, name=bridge, type=bridge)
2019-07-21T16:34:29.070197400+02:00 container start 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:29.389522500+02:00 container die 32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45 (exitCode=1, image=jacob/api, name=quirky_feistel)
2019-07-21T16:34:29.807771700+02:00 network disconnect d6234d64d738131d14f8c951fe8067fad7bd4a0ff8a81f1b452d1a107648f95c (container=32300daaf2e67ed935af47e9c33914ff67c678bf71b36aac1a0dcee93146da45, name=bridge, type=bridge)
Run Code Online (Sandbox Code Playgroud)

我在本地运行 docker 并且启动命令是 docker run -p 49160:8080 -d jacob/api

docker

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

Ansible:当列表未定义时跳过循环

示例剧本 -

---
- hosts: localhost

  vars:
    lesson:
     name: Physics
     students:
      - Bob
      - Joe

  tasks:
     - name: Display student names
       debug:
         msg: '{{ item }}'
       loop: "{{ lesson.students }}"
       when: item | default("")
Run Code Online (Sandbox Code Playgroud)

上面的剧本可以很好地输出学生姓名。

但是,如果输入发生更改(如下所示)以致未定义学生姓名,则会发生错误。如果根据下面的输入未定义列表,是否有一种简单的方法可以让剧本跳过此任务?我意识到如果输入指定Students: [],那么它会起作用,但由于此输入来自简单用户,因此他们不会知道这一点。非常感谢!

  vars:
    lesson:
     name: Physics
     students:
Run Code Online (Sandbox Code Playgroud)

错误:致命:[localhost]:失败!=> msg: '无效数据传递给''循环'',它需要一个列表,改为: 。提示:如果您传递了仅包含一个元素的列表/字典,请尝试将 Wantlist=True 添加到查找调用中或使用 q/query 而不是查找。

更新 - 我已经尝试了以下变体,但仍然遇到相同的错误 -

---
- hosts: localhost

  vars:
    lesson:
     name: Physics
     students:

  tasks:
     - name: Display student names variation 1
       debug:
         msg: '{{ item }}'
       loop: "{{ …
Run Code Online (Sandbox Code Playgroud)

ansible

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

匹配 regex_search 或 regex_findall 中的多个字符串会给出不应匹配的其他字符串

尽管我检查过以前的类似问题,但似乎没有一个适用于我。只要我们的基础设施的其余部分不会更新,我们就使用 Ansible 版本 2.9。我有这个列表,在它下面我需要过滤两个字符串。

kvm_list:
  - abcdefabcfgh.domain.example
  - deffghabc.domain.example
  - abcblabla.domain.example
  - kabcxyz.domain.example
  - kesanu.domain.example
  - kesbapo.domain.example
  - kextoet.domain.example
  - kptfkom.domain.example
  - kgitblabla.domain.example
  - kgitblubblub.domain.example
Run Code Online (Sandbox Code Playgroud)
- name: "get them devtools"
  hosts: localhost
  ignore_errors: True
  tasks: 
    - set_fact:
         devtools: "{{ kvm_list | string | regex_search('kgit.*|kes.*', multiline=True)}}"
    
    - debug: var=devtools

Run Code Online (Sandbox Code Playgroud)

当尝试上面的方法时,我得到了下面的结果:

TASK [debug] **************************************************************************************************************************
ok: [localhost] => {
"msg":"kesanu.domain.example','kesbapo.domain.example','kextoet.domain.example','kptfkom.domain.example','kgitblabla.domain.example','kgitblubblub.domain.example]"
}
Run Code Online (Sandbox Code Playgroud)

Kextoet并且kptfkom不应该被包括在内。

当纯粹在正则表达式( https://regex101.com/ )上测试它时,它可以工作,而在 ansible 中测试它时,它不起作用。

使用时regex_findall,我得到相同的结果。

当对一个字符串进行正则表达式搜索时,它是正确的。

如果有人可以提出一些提示或指出显而易见的事情,我将不胜感激。

ansible ansible-2.x

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

Ansible 创建多个目录并在每个目录中创建文件

我正在尝试在每个目录中创建多个目录(具有不同的名称)和文件。

我有一个名为目录的变量,其中包含目录和文件名,如下所示:

directories:
  - directory: dir1
    static_files: 
      files: 
        - file1
        - file2

  - directory: dir2
    static_files: 
      files: 
        - file1
        - file2
Run Code Online (Sandbox Code Playgroud)

这是我能够使用 with_subelments 提出的解决方法,但有两个任务似乎有效。然而,我相信必须有一个只有一项任务的解决方案来实现这一目标。

- name: Creates directories
  file:
    path: "/tmp/{{ item[0].directory }}"
    state: directory
    recurse: yes
    mode: 0755
    owner: user
    group: group
  become: true
  with_subelements: 
    - "{{ directories }}"
    - static_files.files

- name: Creates files
  file:
    path: "/tmp/{{ item[0].directory }}/{{ item[1] }}"
    state: touch
    mode: 0644
    owner: user
    group: group
  become: true
  with_subelements: 
    - "{{ directories }}"
    - static_files.files …
Run Code Online (Sandbox Code Playgroud)

ansible

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

安装 Ansible Galaxy 角色的 Gitlab Pipeline 失败

我有一个功能性的 gitlab 管道来将代码发布到 AWS 服务器。它突然开始失败,没有任何原因。我收到以下错误。有人可以给我一些线索吗?我无法发布整个代码,因为它很长。

** [WARNING]: - geerlingguy.docker was NOT installed successfully: missing
required 'current_version' from server response
(https://galaxy.ansible.com/api/)
ERROR! - you can use --ignore-errors to skip failed roles and finish processing the list.
ERROR: Job failed: exit code 1**
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 gitlab ansible gitlab-ci

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

基于操作系统版本的 Ansible set_facts 不起作用

我想根据操作系统版本设置补丁。在 Ansible 版本 2.8 中提出了这个剧本。但它The task includes an option with an undefined variable.在调试行中给出错误消息。

---
- hosts: all
  gather_facts: yes
  vars:
      patch_name_8: 'centos8-updates'
      patch_name_7: 'centos7-updates'
  tasks:
    - name: Set fact for CentOS 7
      set_fact:
        install_patch_name: "{{ patch_name_7 }}"
      when: ansible_distribution_major_version == 7

    - name: Set fact for CentOS 8
      set_fact:
        install_patch_name: "{{ patch_name_8 }}"
      when: ansible_distribution_major_version == 8

    - name: patch name display
      debug:
        msg: "install {{ install_patch_name }}"
Run Code Online (Sandbox Code Playgroud)

如何install_patch_name根据操作系统版本设置变量值?

这是错误消息:

TASK [patch name display] ************************************************************************************************************
fatal: …
Run Code Online (Sandbox Code Playgroud)

ansible

0
推荐指数
1
解决办法
7173
查看次数

在 terraform 销毁期间删除文本文件

我试图hosts在执行时从本地计算机中删除生成的 Ansible 库存文件terraform destroy

当我运行时,terraform apply我用来provisioner "local-exec"创建hosts文件,稍后由部署期间调用的 ansible playbook 使用。

provisioner "local-exec" {
    command = "echo master ansible_host=${element((aws_instance.kubeadm-node.*.public_ip),0)} >> hosts"
  }
Run Code Online (Sandbox Code Playgroud)

hosts当我删除所有资源时是否可以确保文件被删除terraform destroyhosts执行时删除文件的最简单方法是什么terraform destroy

感谢您的帮助,如果我的解释不够清楚,请告诉我。

delete-file terraform terraform-provider-aws

0
推荐指数
1
解决办法
2667
查看次数