说我有以下ansible命令,可将docker存储库添加到apt
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu xenial stable
state: present
由于我可能并不总是在xenial
上运行此命令,所以我很喜欢自动确定版本的命令。所以我尝试了以下方法:
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable
state: present
但是我收到一个错误:E:Failed to fetch https://download.docker.com/linux/ubuntu/dists/$(lsb_release/-cs)/binary-amd64/Packages 404 Not Found
什么是转义$(..)
的正确方法,以便它在执行命令之前在bash中正确求值?
答案 0 :(得分:4)
您可以做的是做一个先前的任务,该任务注册“ lsb_release -cs”的输出并将其保存在变量中:
- name: Register Ubuntu version
command: lsb_release -cs
register: your_variable_name
要访问该值,只需查找your_variable_name.stdout,如下所示:
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu {{ your_variable_name.stdout }} stable
state: present
如果您想查看有关该变量的所有详细信息:
- name: Inspect variable
debug:
var: your_variable_name
编辑:提防URL字符串的格式,我的答案只是一个例子,您可能必须修剪一些空格或添加一些“ /”来实现所需的^^