可以在命令行上使用-e选项来覆盖Ansible变量。但是,在某些情况下,当在when条件语句中使用命令行变量时,Ansible似乎会忽略新的值,并使用预定义的值。为了解决这个问题,可以在playbook中强制使用从命令行传递的变量并禁用预定义的变量。例如:
vars: myvar: "default_value"
tasks:
运行playbook时,可以使用命令行的-e选项来覆盖myvar变量,例如:
$ ansible-playbook myplaybook.yml -e "myvar=some_value"
这将强制使用命令行提供的值,在when条件语句中使用“some_value”而不是预定义的“default_value”。