使用 yml 中的 shell 响应 Ansible playbook

Pap*_*pal 3 yaml ansible

我想通过 Ansible playbook 安装 MongoDB,我按照以下说明操作:https ://www.howtoforge.com/tutorial/install-mongodb-on-ubuntu-16.04/

关于“步骤 2 - 创建源列表文件 MongoDB”的步骤

我应该使用:

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Run Code Online (Sandbox Code Playgroud)

虽然它使用以下命令获取 ubuntu 版本:

$(lsb_release -sc)
Run Code Online (Sandbox Code Playgroud)

如何通过 yml 文件执行此操作并通过 ansible palybook 运行它?我使用了下面的 yml 命令,但它不起作用并给我错误,因为我在脚本中使用了 shell 命令“$(lsb_release -sc)”

- name: Create source list file MongoDB
  sudo: yes
  lineinfile: >
    line="deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse"
    dest=/etc/apt/sources.list.d/mongodb-org-3.2.list
    state=present
    create=yes
Run Code Online (Sandbox Code Playgroud)

Kon*_*rov 10

Ansible中有apt_repository模块:

- apt_repository:
    repo: deb http://repo.mongodb.org/apt/ubuntu {{ ansible_distribution_release | lower }}/mongodb-org/3.2 multiverse
    state: present
Run Code Online (Sandbox Code Playgroud)


Bra*_*ken 6

您可以将一项任务的结果(包括其标准输出)注册为变量,然后在以后的任务中使用它:

- name: Work out the distribution
  command: lsb_release -sc
  register: result

- name: Create source list file MongoDB
  sudo: yes
  lineinfile: >
    line="deb http://repo.mongodb.org/apt/ubuntu {{ result.stdout }}/mongodb-org/3.2 multiverse"
    dest=/etc/apt/sources.list.d/mongodb-org-3.2.list
    state=present
    create=yes
Run Code Online (Sandbox Code Playgroud)