在Ansible Playbook中定义常量

时间:2019-04-24 21:38:01

标签: ansible

我有一本剧本,其中有一个步骤可以使用get_url下载文件

  - name: Download file
    get_url:
      url: https://website.com/file.sh
      dest: /tmp/file.sh
      mode: 0777

我不想在任务中添加硬编码的URL。相反,我想将其作为如下所示的常量变量

url: https://website.com/file.sh

并像这样在剧本中声明

  - name: Download file
    get_url:
      url: {{$url}}
      dest: /tmp/file.sh
      mode: 0777

我不知道是否可能。

2 个答案:

答案 0 :(得分:0)

通过阅读Ansible文档,您将找到“在命令行上传递变量”部分,该示例给出了以下内容:

ansible-playbook test.yml --extra-vars "version=1.23.45 other_variable=foo"

这是将变量传递到您的剧本的方法,另一种方法是使用 Jinja 模板,您必须详细阅读它,该信息也存在于ansible文档中。

答案 1 :(得分:0)

1)您可以在如下的剧本中使用vars选项

---
- name: Play
  hosts: HOST01
  vars:
    url: https://website.com/file.sh
  tasks:
     - name: Download file
       get_url:
         url: {{ url }}
         dest: /tmp/file.sh
         mode: 0777
...

2)使用ansible提供的“ set_fact”模块

  tasks:
     - name : Setting the variable url
       set_fact:
         url: https://website.com/file.sh
     - name: Download file
       get_url:
         url: {{ url }}
         dest: /tmp/file.sh
         mode: 0777