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

时间:2016-09-15 03:08:06

标签: ansible command-line-interface

我想打印出用于调用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"的字符串。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

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

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(' ') }}"