簡體   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