首页 文章

如何在ansible角色中设置常量?

提问于
浏览
2

在ansible角色中,我需要为某些路径定义常量,而不是用户在其剧本中更改 .

这是我的需要:

该角色将有一个 {} 变量(可由用户更改),然后我想设置2个常量:

  • app_instance_path:"{}/appinstance"

  • app_server_path:"{}/appserver"

我在我的任务中需要多次每个值,所以我不能只设置一个变量

最好的方法是什么?

谢谢 .

2 回答

  • 1

    据我所知,ansible没有常数 .

    您可以执行以下操作:
    在文件 <rolname>/defaults/main.yml

    ---
    # Don't change this variables
    app_instance_path: "{{ app_base_path }}/appinstance"
    app_server_path: "{{ app_instance_path }}/appserver"
    

    并在 <rolename>/tasks/main.yml 文件中添加一个断言任务:

    ---
    # ...
    - name: Check some constants
      assert:
        that:
          - "app_instance_path == app_base_path + '/appinstance'"
          - "app_server_path == app_instance_path + '/appserver'"
    

    您还可以为用户记录仅设置 app_base_path 并保留原样 app_instance_pathapp_server_path .

  • 1

    最后,我得到了 set_fact ,不幸的是,它似乎在变量顺序中具有非常低的优先级,所以如果用户在他的剧本中定义extra_vars,我的角色执行可能会失败...

相关问题