2013-05-07 3 views
0

Я использую Ansible для настройки и развертывания экземпляра EC2, на котором работает MongoDB.Перезагрузка MongoDB с Ansible, после перезагрузки EC2

Теперь мне интересно, как настроить автоматический запуск MongoDB после перезагрузки экземпляра EC2. Или мне просто нужно перезапустить Ansible Playbook?

Это мой текущий анзибль Playbook:

- hosts: staging_mongodb 
    user: ec2-user 
    sudo: yes 

    vars_files: 
    - vars/mongodb.yml 

    tasks: 
    - name: Check NTP 
     action: service name=ntpd state=started 

    - name: Copy MongoDB repo file 
     action: copy src=files/10gen.repo dest=/etc/yum.repos.d/10gen.repo 

    - name: Install MongoDB 
     action: yum pkg=mongo-10gen state=latest 

    - name: Install MongoDB server 
     action: yum pkg=mongo-10gen-server state=latest 

    - name: Template the MongoDB configuration file 
     action: template src=templates/mongod.conf.j2 dest=/etc/mongod.conf 

    - name: Prepare the database directory 
     action: file path=${db_path} state=directory recurse=yes owner=mongod group=mongod mode=0755 

    - name: Configure MongoDB 
     action: service name=mongod state=started enabled=yes 

ответ

2

В этом конкретном примере, самый простой способ будет в последнем кадре, чтобы изменить state=started к state=restarted.

Из документации service модуля анзибль в:

старт/стоп идемпотентны действия, которые не будут запускать команды без необходимости. перезапущен всегда будет отказываться от обслуживания. reloaded всегда будет загружен.

Однако, в соответствии с передовой практикой анзибль, вы должны рассмотреть возможность использования «обработчиков», чтобы ваш MongoDB перезагружается только при необходимости .:

tasks: 
    - name: Template the MongoDB configuration file 
    action: template src=templates/mongod.conf.j2 dest=/etc/mongod.conf 
    notify: 
     - restart mongodb 

    - name: Prepare the database directory 
    action: file path=${db_path} state=directory recurse=yes owner=mongod group=mongod mode=0755 
    notify: 
    - restart mongodb 

    - name: Configure MongoDB 
    action: service name=mongod state=started enabled=yes 

handlers: 
    - name: restart mongodb 
    service: name=mongodb state=restarted 

Обработчики стреляли только при выполнении определенных задач, отчет об изменениях, и запускается в конце каждой игры, поэтому вы не будете перезапускать свой MongoDB больше, чем необходимо.

И, наконец, вместо использования yum pkg=mongo-10gen state=latest рассмотрите возможность использования определенных версий пакета. Что-то важное, как база данных, вы действительно не хотите, чтобы разные версии пакетов запускались каждый раз, когда вы строите новый сервер и/или не хотите удивляться, когда 10gen неожиданно выпускает новую версию, которая отрицательно влияет на вас. Используйте переменную с именем пакета и просто обновите ее, когда будете готовы перейти на новую версию.

+0

Спасибо за ваш ответ! – Voles

+0

@Voles Btw, у repo Ansible есть примеры для MongoDB, рассмотрим возможность взглянуть на них. Https://github.com/ansible/ansible-examples – Mxx

+0

Это список задач, поэтому 'restart mongodb' будет безоговорочно запускаться каждый время. Задачи должны быть в разделе 'tasks:' и обработчике в разделе 'обработчики:'. – Nate

Смежные вопросы