尝试通过Ansible Git模块传递用户名和密码时未定义的变量

时间:2018-11-10 01:16:03

标签: ansible

我对这里的线程有一个后续问题: How do I pass username and password while using Ansible Git module?

我正在尝试完成类似的任务,即通过Ansible将用户名和密码传递给GitHub。这是我用于剧本的内容:

- name: ANSIBLE - Shop Installation
  hosts: host_list
  vars_prompt: 
    - name: "githubuser" 
      prompt: "Enter your github username" 
      private: no 
    - name: "githubpassword" 
      prompt: "Enter your github password" 
      private: yes

- hosts: host_list
  tasks:
  - name: Get the latest version through Git
    git:
    repo: 'https://{{ githubuser }}:{{ githubpassword }}@github.com/foo/bar.git'
    dest: /tmp

完成此操作后,出现以下错误消息:

致命:[]:失败! => {“ msg”:“任务包含带有未定义变量的选项。错误是:'githubuser'未定义\ n \ n错误似乎出在'playbook.yml'

有什么想法我可能在这里出错了吗?

我正在运行Ansible 2.7.1

2 个答案:

答案 0 :(得分:1)

我认为您的剧本结构不正确。试试这个:

---
- hosts: host_list
  vars_prompt: 
    - name: "githubuser" 
      prompt: "Enter your github username" 
      private: no 
    - name: "githubpassword" 
      prompt: "Enter your github password" 
      private: yes

  tasks:
  - name: Get the latest version through Git
    git:
      repo: 'https://{{ githubuser }}:{{ githubpassword }}@github.com/foo/bar.git'
      dest: /tmp

答案 1 :(得分:0)

vars_prompt

Scope是一本剧本。

变量 githubuser 在第一幕中定义。第二局对此一无所知。

  

我是否必须将变量值从第一次播放传递到第二次播放?在这种情况下,这样做的正确方法是什么?

一个选项是配置fact_caching。例如使用Redis

[defaults]
fact_caching=redis

在第一场比赛中,将变量存储为set_fact 可缓存:是

第二局fetch data from Redis