使用Ansible在EC2上部署Node.js应用
Ansible是一种流行的开源工具,用于自动化,配置管理和IT基础架构的编排。系统管理员,DevOps工程师和开发人员广泛使用它,以简化不同环境上各种应用程序的部署过程。在此博客文章中,我们将探讨如何使用Ansible在EC2实例上部署Node.js应用程序。
要求
- 启动EC2实例的AWS帐户
- 安装在本地机器上
- Ansible的基本知识
让我们研究使用Ansible在EC2上部署Node.js应用程序所涉及的步骤。
步骤1:设置库存文件
库存文件包含Ansible将管理的服务器或主机列表。在我们的情况下,我们需要指定EC2实例的IP地址。这是我们的库存文件的外观:
[webservers]
1.1.1.1 ansible_ssh_private_key_file=~/.ssh/id_rsa ansible_user=root
此文件定义一个主机,其中IP地址1.1.1.1。我们还指定了SSH私有密钥文件位置和用户以连接到主机。
步骤2:编写Ansible Playbook
Ansible Playbook包含可在远程主机上执行的Ansible的说明。在我们的情况下,我们需要执行三个任务:安装node.js和npm,创建新的linux用户,然后部署node.js应用程序。这是我们的剧本的外观:
---
- name: Install node and npm # A name to identify the playbook
hosts: 1.1.1.1 # The target host to execute the tasks on
tasks: # List of tasks to be performed
- name: Update apt repo and cache
apt: update_cache=yes force_apt_get=yes cache_valid_time=3600 # Update apt repository and cache
- name: Install nodejs and npm
apt: # Install Node.js and NPM
pkg:
- nodejs
- npm
- name: Create new linux user
hosts: 1.1.1.1 # The target host to execute the tasks on
tasks: # List of tasks to be performed
- name: Create linux user
user: # Create a new Linux user
name: arun
comment: arun admin
group: admin
- name: Deploy nodejs app
hosts: 1.1.1.1 # The target host to execute the tasks on
become: True # Switch to the root user for executing tasks
become_user: arun # Set the user as "arun" to perform tasks
tasks: # List of tasks to be performed
- name: unpack the nodejs file
unarchive: # Unpack the Node.js app
src:
dest: /home/arun
- name: Install dependencies
npm: # Install app dependencies
path: /home/arun/packages
- name: Start the application
command: # Start the Node.js app
chdir: /home/arun/packages/app
cmd: node server
async: 1000 # Run the command asynchronously
poll: 0 # Do not wait for the command to finish
- name: Ensure app is running
shell: ps aux | grep node # Check if the app is running
register: app_status # Register the output of the command as a variable
- debug: msg={{app_status.stdout_lines}} # Print the output of the previous task for debugging purposes
在上面的剧本中,我们定义了三部戏。
播放1:安装节点和NPM
此剧本在远程主机上安装node.js运行时和节点软件包管理器(NPM)。它使用apt
模块更新APT存储库和缓存,然后安装nodejs
和npm
软件包。
播放2:创建新的Linux用户
此剧本在远程主机上创建了一个新用户。它使用user
模块创建一个名称为“ arun”,评论“ arun admin”的新用户,并将用户分配给“ admin”组。
播放3:部署nodejs app
此剧本在远程主机上部署了node.js应用程序。它首先使用become_user
和become
parameters切换到用户“ arun”,以执行后续任务作为该用户。然后,它继续执行以下任务:
- 使用
unarchive
模块解开nodejs文件。 - 使用
npm
模块安装依赖项。 - 使用
command
module启动应用程序,该命令执行命令以启动node.js服务器并将工作目录设置为应用程序目录。 - 检查应用程序是否正在使用
shell
模块运行,以运行一个命令,该命令列出了所有进程,名称为“ node”。 - 使用
debug
Module来调试上一个任务的输出,以打印上一个命令的输出。
每个播放均被顺序执行,每个播放都在上一个播放上构建,以最终在远程主机上部署node.js应用程序。
步骤3:运行Ansible Playbook
要运行Ansible Playbook,执行以下命令:
ansible-playbook -i inventory playbook.yml
此命令将执行剧本。
结论
该项目演示了如何使用Ansible来自动在EC2实例上部署Node.js应用程序。借助此剧本,您可以轻松,快速地部署Node.js应用程序,而无需任何手动配置。