ansible自动化:基础软件的自定义安装

《ansible自动化:操作系统初始化具体实现》一文实现了对操作系统的交付,接下来我们就需要根据研发、运维需求定制各种基础软件,用于日后的系统上线。在此我的实现方式是通过ansible playbook 进行基础软件的自定义安装,后续也可结合jenkins 进行按需持续集成。

需求

基础软件的需求通常有以下场景:

java项目

       jdk、tomcat、应用日志目录、环境变量及其他订制需求;

python项目

       python3、anaconda、supervisor、pip源等;

nginx 

nginx 订制;

ELK 日志收集

filebeat 收集相关应用日志;

数据库

       MySQL 编译安装、主动同步等;

Web

       LAMP、Vue等环境配置;

以上都是我们在运维过程中可能遇到的,因此我们需要严格按照《运维思索:目录管理规范的重要性》中提到的目录规范去自动化安装,来规避人为安装过程中的差异性。

规划

通过playbook 的tag标签,我们可以将各类需求进行分类,例如:

nginx

       实现nginx相关环境部署

java

       实现java 相关环境部署

python

       实现python相关环境部署

filebeat

       实现日志收集功能

mysql

       实现mysql 相关环境部署

lamp

实现lamp 相关环境部署

这样我们就可以将繁杂的环境部署拆解为一个个小模块,化繁为简,逐个破解。

具体实现

在此我们实现对filebeat、java、nginx、python的定制化安装。

1.目录结构

roles/software_install/├── files│   ├── filebeat│   │   ├── filebeat-6.4.3-x86_64.rpm│   │   └── filebeat.yml│   ├── java│   │   ├── app.tar.gz│   │   ├── app.zip│   │   ├── data.zip│   │   └── jdk1.8.0_40.zip│   ├── nginx│   │   ├── echo-nginx-module-master.zip│   │   ├── nginx-module-vts-master.zip│   │   ├── nginx_upstream_check_module-master.zip│   │   └── tengine-2.3.2.tar.gz│   └── python│   └── Python-3.7.0.tgz├── handlers│   └── main.yml├── tasks│   ├── filebeat.yml│   ├── java.yml│   ├── main.yml│   ├── nginx.yml│   ├── python.yml│   └── python.yml.bak└── vars └── main.yml

2.vars自定义变量

3.task任务

(1)filebeat.yml

收集的日志目录及格式应该都是提前按规范定义的,因此此阶段只进行安装收集。

(2)java.yml

(3)nginx.yml

– name: copy nginx to dest unarchive: src: “{{ item }}” dest: “{{ soft_dir }}” with_items: – “nginx/echo-nginx-module-master.zip” – “nginx/nginx-module-vts-master.zip” – “nginx/nginx_upstream_check_module-master.zip” – “nginx/{{ nginx }}.tar.gz” tags: nginx

– name: install dependency yum: name: “{{ dependency }}” state: present tags: nginx

– name: install nginx shell: | cd “{{ soft_dir }}/{{ nginx }}” ./configure –prefix=/app/nginx –add-module={{ soft_dir }}/nginx_upstream_check_module-master –add-module={{ soft_dir }}/nginx-module-vts-master/ –add-dynamic-module={{ soft_dir }}/echo-nginx-module-master –with-http_ssl_module –with-http_v2_module –with-http_realip_module –with-http_addition_module –with-http_xslt_module –with-http_xslt_module=dynamic –with-http_image_filter_module –with-http_image_filter_module=dynamic –with-http_geoip_module –with-http_geoip_module=dynamic –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_auth_request_module –with-http_random_index_module –with-http_secure_link_module –with-http_degradation_module –with-http_slice_module –with-http_stub_status_module –with-stream –with-stream=dynamic –with-stream_ssl_module –with-stream_realip_module –with-stream_geoip_module –with-stream_geoip_module=dynamic –with-stream_ssl_preread_module –with-stream_sni make make install  tags: nginx

(4)python.yml

– name: copy python to dest unarchive: src: “{{ item }}” dest: “{{ soft_dir }}” with_items: – “python/Python-3.7.0.tgz” tags: python

– name: install depend yum: name: “{{ depend }}” state: present tags: python

– name: install python shell: | cd “{{ soft_dir }}/{{ python }}” ./configure –prefix=/usr/local/python3; make;make install  tags: python

(5)main.yml

– include: filebeat.yml- include: nginx.yml- include: java.yml- include: python.yml

4.handlers

5.files

files目录中都是各组件安装所需要的源目录,用于同步到远程安装目录,具体请查看目录结构。

执行

总结

基础软件安装阶段相当依赖《目录管理规范》,正所谓“没有规矩,不成方圆”,我们希望的是团队每个成员在登录服务器前,就已经对基础环境了如执掌,这样才能在无形中提高我们的工作效率。

ansible自动化:操作系统初始化具体实现

ansible自动化:编译安装mysql

运维思索:目录管理规范的重要性

滴滴夜莺:从监控告警系统向运维平台演化

kubedog:解决K8S在CI/CD中无法持续追踪问题

filebeat收集K8S日志,写入自动创建的索引

 

ansible自动化:基础软件的自定义安装》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:http://www.hashtobe.com/637.html