如何访问用于调用 Ansible 的命令行参数?

问题描述 投票:0回答:1

我想打印出用于调用

ansible-playbook
的命令行参数。例如,如果我这样做

ansible-playbook foo.yml -e bar=quux

,我想访问上面的字符串,这样我就可以将其作为一项任务来完成

- shell: slack_notify.sh "{{ ansible_cli_invocation }}"

其中

ansible_cli_invocation
是值为
"ansible-playbook foo.yml -e bar=quux"
的字符串。有办法做到这一点吗?

ansible command-line-interface
1个回答
7
投票

我不确定你是否可以开箱即用。
但你可以写一个小动作插件:

from ansible.plugins.action import ActionBase
import sys

class ActionModule(ActionBase):

    TRANSFERS_FILES = False

    def run(self, tmp=None, task_vars=None):
        return { 'changed': False, 'ansible_facts': { 'argv': sys.argv } }

将其另存为

./action_plugins/get_argv.py
,并创建一个文件
./library/get_argv.py
。 这将创建本地操作
get_argv
,用参数列表填充
argv
事实。

然后在你的剧本中:

- get_argv:
- shell: slack_notify.sh "{{ argv | join(' ') }}"
© www.soinside.com 2019 - 2024. All rights reserved.