通过ansib使用args par执行python脚本

2024-04-30 06:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试通过ansible使用args解析器执行python脚本 我想把我所有的论点放在一个extra_var里,但我遗漏了一些东西

假设我的python脚本可以获得用户名-u和密码-p 我的ansible脚本只有一个varmy_args

script: /tmp/args.py "{{ my_args }}"

当我像这样运行我的剧本时:

ansible-playbook my_ansible_playbook.yml -e "my_args='-u my_username -p my_password'"

我得到的结果是:

用户名=my_username -p my_password

密码=default_password

我错过了什么

如何使用一个额外的变量将每个值发送到正确的值


Tags: 脚本解析器密码varmyusernameargspassword
1条回答
网友
1楼 · 发布于 2024-04-30 06:21:25

如果不引用整个脚本值,yaml会将其视为包含双引号的字符串,其中包含一个值(稍后由jinja2解释)。最后,将使用一个参数作为完整的模板字符串来调用脚本

要在尝试时传递所有参数,需要引用整个字符串

请参见以下示例作为说明:

 -
- hosts: localhost
  gather_facts: false

  tasks:
    - name: Show the extra var itself
      debug:
        var: myvar

    - name: Quotes in command (wrong)
      debug:
        msg: myscript.py "{{ myvar }}"

    - name: No quotes (good) - simple command with params
      debug:
        msg: "myscript.py {{ myvar }}"

结果是:

$ ansible-playbook tmp.yml -e "myvar='-u toto -p bingo'"

PLAY [localhost] **************************************************************************************************************************************************************************************************

TASK [Show the extra var itself] **********************************************************************************************************************************************************************************
ok: [localhost] => {
    "myvar": "-u toto -p bingo"
}

TASK [Quotes in command (wrong)] **********************************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "myscript.py \"-u toto -p bingo\""
}

TASK [No quotes (good) - simple command with params] **************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "myscript.py -u toto -p bingo"
}

PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost                  : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

相关问题 更多 >