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