如何在Ansible中从命令行参数验证变量?

MBu*_*eld 0 ansible

我有一个我执行的剧本:

ansible-playbook -i inventories/staging/ myPlaybook.yml  -e "srv_mode=restart"
Run Code Online (Sandbox Code Playgroud)

该变量srv_mode用于游戏中.现在我只想允许"重启"和"启动"作为其值.

srv_mode如果不支持该值,是否有可能首先评估内容并优雅地结束一个好的警告?

tec*_*raf 5

使用assert模块,最佳地在您的剧本顶部的单独游戏中:

- hosts: localhost
  connection: local
  gather_facts: false
  pre_tasks:
    - assert:
        that: srv_mode in ['start', 'restart']
Run Code Online (Sandbox Code Playgroud)

  • 如果OP的播放中有数十个主机,则将为每个主机准备执行流程.并且`assert`(没有run_once)将被执行多次. (3认同)