将shell命令插入ansible命令字符串

将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

假设我有下面的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:无法获取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字符串的格式,我的答案只是一个例子,您可能需要删除一些空白或添加一些“/”来实现您的目标^^