使用ansible创建consul集群的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ansible创建consul集群的问题相关的知识,希望对你有一定的参考价值。

我正在尝试使用Ansible创建一个Consul集群,我正在使用这个示例https://github.com/brianshumate/ansible-consul。我使用vagrant文​​件来运行3个Ubuntu机器

问题是任务Install unzip package似乎总是失败,它给出了这个错误信息:

fatal: [consul1.consul -> localhost]: FAILED! => {"changed": false, "msg": "Could not detect which package manager to use. Try gathering facts or setting the "use" option."}

Ansible似乎无法识别包管理器,即使ansible localhost -m setup | grep mgr显示变量ansible_pkg_mgr具有值apt

我不确定这个问题的根源是什么。我尝试使用3台debian机器,我仍然遇到同样的问题。

更新:这是领事的任务文件

---
# File: install.yml - package installation tasks for Consul

- name: Install OS packages
  package:
    name: "{{ item }}"
    state: present
  with_items: "{{ consul_os_packages }}"
  tags: installation

- name: Read package checksum file
  local_action:
    module: stat
    path: "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS"
  become: no
  run_once: true
  register: consul_checksum
  tags: installation

- name: Download package checksum file
  local_action:
    module: get_url
    url: "{{ consul_checksum_file_url }}"
    dest: "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS"
  become: no
  run_once: true
  tags: installation
  when: not consul_checksum.stat.exists | bool

- name: Read package checksum
  local_action:
    module: shell
      grep "{{ consul_pkg }}" "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS" | awk '{print $1}'
  become: no
  run_once: true
  register: consul_sha256
  tags: installation

- name: Check Consul package file
  local_action:
    module: stat
    path: "{{ role_path }}/files/{{ consul_pkg }}"
  become: no
  run_once: true
  register: consul_package
  tags: installation

- name: Download Consul package
  local_action:
    module: get_url
    url: "{{ consul_zip_url }}"
    dest: "{{ role_path }}/files/{{ consul_pkg }}"
    checksum: "sha256:{{ consul_sha256.stdout }}"
    timeout: "42"
  become: no
  run_once: true
  tags: installation
  when: not consul_package.stat.exists | bool

- name: Update alpine package manager (apk)
  local_action:
    module: apk
    update_cache: yes
  run_once: true
  when: lookup('file','/etc/alpine-release')

- name: Install unzip package
  local_action:
    module: package
    name: unzip
    state: present
  run_once: true
  when:
    - consul_install_dependencies | bool

- name: Unarchive Consul package
  local_action:
    module: unarchive
    src: "{{ role_path }}/files/{{ consul_pkg }}"
    dest: "{{ role_path }}/files/"
    creates: "{{ role_path }}/files/consul"
  become: no
  run_once: true
  tags: installation

- name: Install Consul
  copy:
    src: "{{ role_path }}/files/consul"
    dest: "{{ consul_bin_path }}/consul"
    owner: "{{ consul_user }}"
    group: "{{ consul_group }}"
    mode: 0755
  tags: installation

- name: Daemon reload systemd in case the binaries upgraded
  command: systemctl daemon-reload
  become: yes
  notify: restart consul
  when:
    - ansible_service_mgr == "systemd"
    - consul_install_upgrade

- name: Cleanup
  local_action: file path="{{ item }}" state="absent"
  become: no
  with_fileglob: "{{ role_path }}/files/consul"
  run_once: true
  tags: installation
答案

问题出在Alpine包管理器上,不知何故它似乎导致Ubuntu出错,所以我所做的就是使用Apt而不是Apk。

这是任务文件的新版本

---
# File: install.yml - package installation tasks for Consul

- name: Install OS packages
  package:
    name: "{{ item }}"
    state: present
  with_items: "{{ consul_os_packages }}"
  tags: installation

- name: Read package checksum file
  local_action:
    module: stat
    path: "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS"
  become: no
  run_once: true
  register: consul_checksum
  tags: installation

- name: Download package checksum file
  local_action:
    module: get_url
    url: "{{ consul_checksum_file_url }}"
    dest: "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS"
  become: no
  run_once: true
  tags: installation
  when: not consul_checksum.stat.exists | bool

- name: Read package checksum
  local_action:
    module: shell
      grep "{{ consul_pkg }}" "{{ role_path }}/files/consul_{{ consul_version }}_SHA256SUMS" | awk '{print $1}'
  become: no
  run_once: true
  register: consul_sha256
  tags: installation

- name: Check Consul package file
  local_action:
    module: stat
    path: "{{ role_path }}/files/{{ consul_pkg }}"
  become: no
  run_once: true
  register: consul_package
  tags: installation

- name: Download Consul package
  local_action:
    module: get_url
    url: "{{ consul_zip_url }}"
    dest: "{{ role_path }}/files/{{ consul_pkg }}"
    checksum: "sha256:{{ consul_sha256.stdout }}"
    timeout: "42"
  become: no
  run_once: true
  tags: installation
  when: not consul_package.stat.exists | bool

- name: Install unzip package
  apt:
    name: unzip
    state: present
  run_once: true
  when:
    - consul_install_dependencies | bool

- name: Unarchive Consul package
  local_action:
    module: unarchive
    src: "{{ role_path }}/files/{{ consul_pkg }}"
    dest: "{{ role_path }}/files/"
    creates: "{{ role_path }}/files/consul"
  become: no
  run_once: true
  tags: installation

- name: Install Consul
  copy:
    src: "{{ role_path }}/files/consul"
    dest: "{{ consul_bin_path }}/consul"
    owner: "{{ consul_user }}"
    group: "{{ consul_group }}"
    mode: 0755
  tags: installation

- name: Daemon reload systemd in case the binaries upgraded
  command: systemctl daemon-reload
  become: yes
  notify: restart consul
  when:
    - ansible_service_mgr == "systemd"
    - consul_install_upgrade

- name: Cleanup
  local_action: file path="{{ item }}" state="absent"
  become: no
  with_fileglob: "{{ role_path }}/files/consul"
  run_once: true
  tags: installation

以上是关于使用ansible创建consul集群的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Ansible 在 AWS EC2 实例上部署 Consul

ansible+python+shell 实现SpringCloud微服务治理

Consul 基本命令以及集群创建

Consul 基本命令以及集群创建

Consul 基本命令以及集群创建

Consul 基本命令以及集群创建