Ansible - 简介和应用自动化基础实践 (2)

相比于快速的临时的指令,在对远程设备应用部署,环境配置和管理过程中,我们需要执行的是一系列的指令,我们将这些指令编写在一个.yml文件中,这就是一个playbook,使用

ansible-playbook test.yml –extra-var=”@test.json”

或者

ansible-playbook test.yml –extra-var=”group=azurehost”

就可以批量执行剧本中的任务,通过–extra-var传入json或赋值变量作为参数.

所以,如果说ansible是一个以模块,Inventory,API和插件为基础工具或者引擎,那么使用Ansible实践的解决方案的核心就是playbooks.

 

 

四.基础实践

目标:在多台linux服务器部署并管理一个NodeJS应用

设备:一台安装Ansible的CentOS虚拟机,两台CentOS虚拟机,一台Azure云虚拟机

4.1 解决方案1:直接在要部署的机器上进行操作

步骤:

(1) 基本环境安装和设置

1.全局安装node,NPM

2.打开防火墙目标端口,重启防火墙

3.安装node 进程管理工具(PM2)

(2)部署应用

1.检查应用部署路径

2.二次部署先,检查应用运行状况

3.从代码托管服务器下载代码,copy到目标路径

4.根据package.json安装dependencies

5.使用pm2启动应用

(3)管理和维护

有小的更新时,单独上传代码并重启应用,通过pm2查看应用状态

 

用xshell登录在多台主机,分别执行以上步骤对应的指令

 

4.2 解决方案2:使用ansible中心机器对两组主机进行环境安装和部署

4.2.1 解决方案架构

Ansible - 简介和应用自动化基础实践

 

图 2

我们将包含批量指令或模块调用的playbooks.yml和运行参数playbooks.json托管在gitlab; 将要部署的代码也放在gitlab;

Ansible机器的用户使用ansible-playbook执行playbooks完成相应对远程主机的安装,部署,和应用启动等操作

步骤:

1.配置inventory

sudo vi /etc/ansible/hosts

[azureservers]

azurehost0 ansible_ssh_host=*.*.*.*

# azurehost1 ansible_ssh_host=*.*.*.*

[localhosts]

localhost1 ansible_ssh_host=192.168.153.129

localhost2 ansible_ssh_host=192.168.153.132

 

2.创建source文件夹用于克隆gitlab repo,playbooks, vars.json到本地

3.编写服务运行环境基本要求,和应用信息(部署目录,应用名称等)的参数

4.编写playbooks,包含配置和部署目标主机的任务列表

 

4.2.2扩展

1. 编写Python plugin从cmdb 动态获取有效的主机列表到ansible机器的inventory

2. 使用playbook_executer API的方式调用执行playbooks

3. 使用Pyphon编写web API,调用playbook_executer方法,实现可视化的剧本执行

 

4.2.3playbooks

1.配置远程主机node/express/pm2运行环境

运行playbook 完成环境配置:

$ ansible-playbook sys_ensure.yml --extra-var="@vars.json"

vars.json

 

{ "host_group":"all", "app_port":8000, "node_download_url":"http://cdn.npm.taobao.org/dist/node/v8.0.0/node-v8.0.0-linux-x64.tar.xz", "node_package_name":"node-v8.0.0-linux-x64.tar.xz", "download_node_folder_name":"node-v8.0.0-linux-x64", "target_node_folder_name":"nodejs", "node_install_path":"/usr/local/", "usr_local_bin_path":"/usr/local/bin", "installed_node_cmd_path":"/usr/local/nodejs/bin/node", "installed_npm_cmd_path":"/usr/local/nodejs/bin/npm", "pm_tool":"pm2", "node_bin_path":"/usr/local/nodejs/bin" }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssfjs.html