“目的地必须是现有目录”错误在Ansible

问题描述 投票:0回答:1

我正在尝试在AWS ec2实例中使用ansible自动化grafana apache_exporter安装。尝试运行ansible剧本时,出现错误:“目标必须是现有目录”。谁能帮我解决这些问题。

enter image description here

---
- hosts: webservers
  remote_user: ubuntu
  become: yes
  vars:
    apache_exporter_version: 0.8.0
  tasks:
    - name: create group
      group:
        name: apache_exporter
        state: present
    - name: create user
      user:
        name: apache_exporter
        group: apache_exporter
        createhome: no
        system: yes
        state: present
    - name: create opt directory for prometheus
      file:
        path: /opt/apache_exporter
        state: directory
    - name: download apache exporter
      get_url:
         url: https://github.com/Lusitaniae/apache_exporter/releases/download/v{{ apache_exporter_version }}/apache_exporter-{{ apache_exporter_version }}.linux-amd64.tar.gz
        dest: /opt/apache_exporter
    - name: unarchive apache exporter
      unarchive:
        remote_src: yes
        src: /opt/apache_exporter/apache_exporter-{{ apache_exporter_version }}.linux-amd64.tar.gz
        dest: /opt/apache_exporter
        creates: /opt/apache_exporter/apache_exporter-{{ apache_exporter_version }}.linux-amd64  
    - name: create symlink to apache exporter
       file:
        path: /usr/local/bin/apache_exporter
        state: link
        src: /opt/apache_exporter/apache_exporter-{{ apache_exporter_version }}.linux-amd64/apache_exporter
    - name: install unit file to systemd
      template:
        src: apache_exporter.service
        dest: /etc/systemd/system/apache_exporter.service
    - name: configure systemd to use service
      systemd:
        daemon_reload: yes
        enabled: yes
        state: started
        name: apache_exporter.service
ansible ansible-2.x ansible-facts
1个回答
0
投票

正如错误所述,在Ansible unarchive模块中,必须存在dest参数设置的路径。如果不存在,则需要创建它。

download apache exporter任务中的另一个问题是,您正在将文件下载到文件/opt/apache_exporter,但对于dest任务使用与unarchive相同的路径。

您需要为这些路径使用单独的名称并预先创建目录。下面的剧本应该可以解决您的问题。

- name: download apache exporter
  get_url:
    url: https://github.com/Lusitaniae/apache_exporter/releases/download/v{{ apache_exporter_version }}/apache_exporter-{{ apache_exporter_version }}.linux-amd64.tar.gz
    dest: /opt/apache_exporter.tar.gz
- name: create /opt/apache_exporter directory for unarchiving
  file:
    path: /opt/apache_exporter
    state: directory
- name: unarchive apache exporter
  unarchive:
    remote_src: yes
    src: /opt/apache_exporter/apache_exporter-{{ apache_exporter_version }}.linux-amd64.tar.gz
    dest: /opt/apache_exporter
    creates: /opt/apache_exporter/apache_exporter-{{ apache_exporter_version }}.linux-amd64
© www.soinside.com 2019 - 2024. All rights reserved.