EC2重新启动后,使用Ansible重新启动MongoDB
我使用来配置和部署一个运行MongoDB的EC2实例 我现在想知道如何配置MongoDB在EC2实例重启后自动重启。还是我只需要重新运行Ansible剧本 这是我目前的《Ansible剧本》:EC2重新启动后,使用Ansible重新启动MongoDB,mongodb,amazon-ec2,ansible,Mongodb,Amazon Ec2,Ansible,我使用来配置和部署一个运行MongoDB的EC2实例 我现在想知道如何配置MongoDB在EC2实例重启后自动重启。还是我只需要重新运行Ansible剧本 这是我目前的《Ansible剧本》: - hosts: staging_mongodb user: ec2-user sudo: yes vars_files: - vars/mongodb.yml tasks: - name: Check NTP action: service name=nt
- 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
在此特定示例中,最简单的方法是在最后一个块中将
state=started
更改为state=restarted
来自Ansible的服务
模块文档:
启动/停止是不会运行命令的幂等操作
除非必要重新启动将始终跳转服务重新加载
将始终重新加载
然而,根据ANNICE的最佳实践,您应该考虑使用“处理程序”,以便只在必要时重新启动MyGDB。
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= Mango-10GeNe=最新,考虑使用特定的包版本。对于像数据库这样重要的东西,您真的不想在每次构建新服务器时运行不同的包版本,也不想在10gen意外发布对您产生负面影响的新版本时感到惊讶。
使用带有包名版本的变量,当您准备迁移到新版本时,只需更新它。 @ Voes BTW,ANDIST的RPO有MangoDB的一些示例,考虑看一下,这看起来是一个任务列表,所以<代码>重新启动MangGDB < /Cord>每次都会无条件地开火。任务应该在
tasks:
部分,处理程序应该在handlers:
部分。@Nate查看我更新的答案。如果我仍然错了,请编辑我的答案以使其准确。@Mxx我将“任务”和“处理程序”编辑为小写。否则,在我看来是对的。