我对这里的线程有一个后续问题: 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
答案 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)
Scope是一本剧本。
变量 githubuser 在第一幕中定义。第二局对此一无所知。
我是否必须将变量值从第一次播放传递到第二次播放?在这种情况下,这样做的正确方法是什么?
一个选项是配置fact_caching。例如使用Redis
[defaults]
fact_caching=redis
在第一场比赛中,将变量存储为set_fact 可缓存:是