【问题标题】:ansible-playbook extra vars passing from command line从命令行传递的 ansible-playbook 额外变量
【发布时间】:2020-04-22 04:08:27
【问题描述】:

我的剧本看起来像:

---

- name: Install and configure AD authentication
  hosts: test
   become: yes
   become_user: root

  vars:
    hostname: "{{ host_name }}"


  vars_prompt:
    - name: "bind_password"
      prompt: "Password for xxx.local\\user"
      private: yes

  tasks:

    - name: Ansible prompt example.
      debug:
        msg: "{{ bind_password }}"

    - name: Ansible prompt example.
      debug:
        msg: "{{ host_name }}"

我正在使用下面的命令来传递变量 ansible-playbook hostname_set.yml --extra-vars "host_name= 'xxx.xxx.local'"

但我没有得到我用于设置主机名的确切变量值。

Password for xxx.xxx\user:
PLAY [Install and configure AD authentication] 
TASK [Gathering Facts] 
 ok: [x.x.x.x]
TASK [Ansible prompt example.] 
     ok: [x.x.x.x] => {
        "msg": "wel"
}
TASK [Ansible prompt example.] 
ok: [x.x.x.x] => {
    "msg": ""
}
 TASK [Setup the hostname] 
 changed: [x.x.x.x]
 PLAY RECAP 
 x.x.x.x              : ok=4    changed=1    unreachable=0    failed=0    
 skipped=0    rescued=0    ignored=0

【问题讨论】:

  • 请不要粘贴图像以显示命令输出。而是将输出粘贴到代码块中。这更容易阅读(至少对我的老眼睛来说),如果需要可以复制粘贴,并且可以被 SO 内部或外部搜索引擎索引。请注意,在这种特定情况下,您的 MCVE 可能已简化为单个命令行:ansible localhost -e "host_name= 'xxx.xxx.local'" -m debug -a msg="{{host_name}}"(它返回与上述相同的结果,并且在删除多余的空间时会返回预期结果)。

标签: linux variables ansible


【解决方案1】:

你的命令行中有一个额外的空间,它破坏了 ansible 解释额外变量的方式。只需将其删除:

--extra-vars "host_name='xxx.xxx.local'"

请注意,您甚至不需要所有这些引号。以下内容也应按预期工作:

--extra-vars host_name=xxx.xxx.local

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2016-09-27
    • 2022-01-23
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多