将shell命令插入ansible命令字符串
假设我有下面的ansible命令将docker存储库添加到apt将shell命令插入ansible命令字符串,ansible,Ansible,假设我有下面的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
- 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:无法获取https://download.docker.com/linux/ubuntu/dists/$(lsb_release/-cs)/binary-amd64/Packages 404未找到
如何正确地转义
$(..)
,以便在执行命令之前在bash中正确计算 您可以做的是让以前的任务注册“lsb_release-cs”的输出,并将其保存在变量中:
- name: Register Ubuntu version
command: lsb_release -cs
register: your_variable_name
- name: Inspect variable
debug:
var: your_variable_name
要访问该值,只需查找your_变量_name.stdout,如下所示:
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu {{ your_variable_name.stdout }} stable
state: present
如果您想查看有关该变量的所有详细信息:
- name: Register Ubuntu version
command: lsb_release -cs
register: your_variable_name
- name: Inspect variable
debug:
var: your_variable_name
编辑:请注意url字符串上的格式,我的答案只是一个示例,您可能需要修剪一些空白或添加一些“/”以实现您想要的^^ ^您可以做的是让上一个任务注册“lsb_release-cs”的输出并将其保存在一个变量中:
- name: Register Ubuntu version
command: lsb_release -cs
register: your_variable_name
- name: Inspect variable
debug:
var: your_variable_name
要访问该值,只需查找your_变量_name.stdout,如下所示:
- name: Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu {{ your_variable_name.stdout }} stable
state: present
如果您想查看有关该变量的所有详细信息:
- name: Register Ubuntu version
command: lsb_release -cs
register: your_variable_name
- name: Inspect variable
debug:
var: your_variable_name
编辑:请注意url字符串的格式,我的答案只是一个例子,您可能需要删除一些空白或添加一些“/”来实现您的目标^^