繁体   English   中英

如何使用Ansible安装MongoDB?

[英]How to install MongoDB with Ansible?

我是Ansible的初学者,现在我正在尝试在Ubuntu 14.04主机上安装MongoDB。 根据MongoDB安装说明 ,手动过程如下:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update
sudo apt-get install -y mongodb-org

我想我可以使用Ansible shell模块来运行它,但是由于4行中的第2行会不断地向mongodb-org-3.6.list文件添加新行,我想这不是正确的方法。

有人知道Ansible这样做的逻辑方式是什么? 欢迎所有提示!

在这种情况下,你甚至不必乱用lineinfile 使用apt_repository模块( 文档 ); 在这个例子中我们将安装MongoDB 3.4:

  [...]
  tasks:
   - name: Add Mongo packages repo
     apt_key: id=2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5  keyserver=keyserver.ubuntu.com
   - name: add repo itself
     apt_repository: repo='deb http://repo.mongodb.org/apt/ubuntu {{ansible_distribution_release}}/mongodb-org/3.4 multiverse' state=present                                      
   - name: install packages
     apt: pkg=mongodb-org state=present
  [...]

创建你的mongo-ansible.yml文件并使用它:

# Install mongodb 
---
- name: Add mongo ppa key
  sudo: yes
  apt_key: >
    keyserver=hkp://keyserver.ubuntu.com:80
    id=7F0CEB10
    state=present
- name: Add mongo sources list
  sudo: yes
  lineinfile: >
    line="deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse"
    dest=/etc/apt/sources.list.d/mongodb.list
    state=present
    create=yes
- name: Install mongo
  sudo: yes
  apt: name=mongodb-org state=latest update_cache=yes

在ansible 2.0 sudo弃用并block添加。 所以对于现代语法和最新的mongodb:

---
# https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
- block:
  - name: Import MongoDB public GPG Key
    apt_key:
        keyserver: keyserver.ubuntu.com
        id: 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
  - name: Add MongoDB repository into sources list
    apt_repository:
        repo: deb http://repo.mongodb.org/apt/ubuntu {{ansible_distribution_release}}/mongodb-org/3.4 multiverse
        state: present
  - name: Install MongoDB package
    apt:
        name: mongodb-org
        update_cache: yes
  become: yes

使用shell命令无需执行此操作。 apt_key模块可以添加密钥, apt模块可以用来安装和lineinfile模块可以保证文件中的特定行。

- name: get apt key
  apt_key: keyserver=hkp://keyserver.ubuntu.com:80 id=EA312927

- name: add to mongodb-org-3.2.list
  lineinfile: dest=/etc/apt/sources.list.d/mongodb-org-3.2.list line="deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse"

- name: install mongo db
  apt: name=mongodb-org update_cache=yes

如果您需要先创建mongodb-org-3.2.list那么您可以使用文件模块。

- name: create mongodb-org-3.2.list
  file: path=/etc/apt/sources.list.d/mongodb-org-3.2.list state=present

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM