首页 > 解决方案 > 根据符号链接设置 Ansible 事实

问题描述

我有一个安装 Anaconda 的 Ansible 任务:

---
- name: "Set variables"
  set_fact:
    package: "/software/anaconda/Anaconda3-2019.07-Linux-x86_64.sh"

- set_fact:
    anadir: "/opt/anaconda/anaconda3-2019.07"

- name: "Check existence"
  stat:
    path: "{{ anadir }}"
  register: anaconda

- debug:
    msg: "{{ anadir }} already exists."
  when: anaconda.stat.exists == True

- name: Install Anaconda
  shell: "/bin/bash {{ package }} -b -p {{ anadir }}"
  when: anaconda.stat.exists == False

但我不想在文件中硬编码版本。我什至不希望它在任何类型的变量中。

如果我的目录中有一个链接,我/software/anaconda相信latest -> Anaconda3-2019.07-Linux-x86_64.sh我可以用 value 设置一个 fact Anaconda3-2019.07-Linux-x86_64.sh。但我找不到一种优雅的方式来做到这一点。

标签: ansible

解决方案


针对您的链接运行stat模块latest,注册结果并进行探索。

您应该找到lnk_source指向原始文件的密钥。

参考:stat模块返回值规范


推荐阅读