vim ``/root/runscript/cut_nginx_log``.sh

 

一.Linux虚拟机的管理

#!/bin/bash
# nginx日志切割脚本
# This script run at 00:00
logs_path=”/usr/local/nginx/logs/”
target_path=”/usr/local/nginx/logs/cut_log/”
mv ${logs_path}beauty.access.log ${target_path}beauty.access.$(date -d
“yesterday” +”%Y%m%d”).log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

运维自动化发展历程及技术应用

1)虚拟机的常规操作

 

IaaS基础设施即服务(相当于卖硬件)
,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件)

    虚拟机的开启命令:

crontab -e

企业实际应用场景分析

图片 1

#重启cron

灰度环境(生产环境的一部分)

    虚拟机的显示命令:

service crond restart

功能:在全量发布代码前将代码的功能面向少量精准用户发布的环境,可基于主机或用户执行灰度发布

图片 2

案例:共100台生产服务器,先发布其中的10台服务器,这10台服务器就是灰度服务器

    虚拟机的关闭命令:

灰度环境:往往该版本功能变更较大,为保险起见特意先让一部分用户优化体验该功能,待这部分用户使用没有重大问题的时候,再全量发布至所有服务器

图片 3

程序发布

    虚拟机的重置命令:

程序发布要求:

图片 4

不能导致系统故障或造成系统完全不可用

注:此命令用来解决虚拟机遇到无法解决的问题时可用此命令重置虚拟机。

不能影响用户体验

2)虚拟机操作中出现的问题

预发布验证:

如:

新版本的代码先发布到服务器(跟线上环境配置完全相同,只是未接入到调度器)

图片 5

灰度发布:

当虚拟机没有开始运行时无法显示,此报错可通过开启虚拟机进行解决。

基于主机,用户,业务

图片 6

发布路径:

此报错表示虚拟机已经开启正在运行,可直接显示虚拟机,无需再打开。

/webapp/tuangou

二.Linux中命令的使用 

/webapp/tuangou-1.1

命令的使用有自己的格式,一般由:命令(空格)参数(空格)目标
组成,具体情况如图:

/webapp/tuangou-1.2

图片 7

发布过程:在调度器上下线一批主机(标记为maintanance状态)
–> 关闭服务 –> 部署新版本的应用程序 –> 启动服务 –>
在调度器上启用这一批服务器

图片 8

自动化灰度发布:脚本、发布

注意:

 

         1.参数用来指定命令的某些功能,可以加也可以不加

常用自动化运维工具

         2.命令和参数和目标之间要用空格分开

Ansible:python,Agentless,中小型应用环境
(管理上百台机器)

         3.参数中“-”表示单词的缩写,“–”表示单词的全拼

利用ssh协议远程来进行管理,基于key验证,把管理者的公钥传到被管理的主机上去,

         4.在执行命令时通常遵循这些规则,特殊情况请除外

Saltstack:python,一般需部署agent(代理),执行效率更高 (管理上千台机器)

         5 .命令必须在提示符之后输入,没有行提示符的输入是无效的

Puppet:ruby,
功能强大,配置复杂,重型,适合大型环境 (管理上百台机器)

三.命令提示符中字符的含义

Fabric:python,agentless

图片 9

Chef: ruby,国内应用少

  kiosk:表示运行shell的用户是谁

Cfengine

  @:是一个分隔符号

func

  localhost:主机的短名称

Ansible简介

  Desktop:所在当前之际的位置

Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由ParamikoPyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更等)。

#:身份提示符号            $:表示普通用户       #:表示超级用户

   Ansible官网:

 

  
github地址:

 

特性

  

  模块化:调用特定的模块,完成特定任务,一千多个模块

   

  有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块

 

  支持自定义模块

  基于Python语言实现

  部署简单,基于python和SSH(默认已安装)免代理,agentless

  安全,基于OpenSSH

  支持playbook编排任务

幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况

  无需代理不依赖PKI(无需ssl)

  可使用任何编程语言写模块

  AML格式,编排任务,支持丰富的数据结构

  较强大的多层解决方案

Ansible主要组成部分

1:ANSIBLE
PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序
依次执行,通常是JSON格式的YML文件

2:INVENTORY:Ansible管理主机的清单/etc/ansible/hosts

3:MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义

4:PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

5:API:供第三方程序调用的应用程序编程接口

6:ANSIBLE:组合INVENTORY、API、MODULES、PLUGINS的绿框,可以理解为是ansible命令工
具,其为核心执行工具

7:Ansible命令执行来源:

U7SER,普通用户,即SYSTEM ADMINISTRATOR

CMDB(配置管理数据库) API 调用

PUBLIC/PRIVATE CLOUD API调用

USER-> Ansible Playbook -> Ansibile

8:利用ansible实现管理的方式:

Ad-Hoc 即ansible命令,主要用于临时命令使用场景

Ansible-playbook 主要用于长期规划好的,大型项目的场景,需要有前提的规划

9:Ansible-playbook(剧本)执行过程:

将已有编排好的任务集写入Ansible-Playbook

通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行

10:Ansible主要操作对象:

HOSTS主机

NETWORKING网络设备

11:注意事项

执行ansible的主机一般称为主控端,中控,master或堡垒机

主控端Python版本需要2.6或以上

被控端Python版本小于2.4需要安装python-simplejson

被控端如开启SELinux需要安装libselinux-python

windows不能做为主控端

安装

rpm包安装: EPEL源

yum install ansible

编译安装:

yum -y install python-jinja2 PyYAML python-paramiko python-babel
python-crypto

tar xf ansible-1.5.4.tar.gz

cd ansible-1.5.4

python setup.py build

python setup.py install

mkdir /etc/ansible

cp -r examples/* /etc/ansible

Git方式:

git clone git://github.com/ansible/ansible.git –recursive

cd ./ansible

source ./hacking/env-setup

pip安装:
pip是安装Python包的管理器,类似yum

yum install python-pip python-devel

yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel

pip install –upgrade pip

pip install ansible –upgrade

确认安装: ansible –version

配置文件

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性,(软连接指向新版本,方便)

/etc/ansible/hosts 主机清单 ,

/etc/ansible/roles/ 存放角色的目录

程序

/usr/bin/ansible
主程序,临时命令执行工具

/usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man命令

/usr/bin/ansible-galaxy(银河)
下载/上传优秀代码或Roles模块的官网平台

/usr/bin/ansible-playbook
定制自动化任务,编排剧本工具/usr/bin/ansible-pull (拉取)远程执行命令的工具

/usr/bin/ansible-vault 文件加密工具

/usr/bin/ansible-console 基于Console界面与用户交互的执行工具

主机清单inventory

Inventory 主机清单

ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory
file中 将其分组命名

/etc/ansible/hosts文件格式

inventory文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,还可以在主机名称之后使用冒号加端口号来标明

ntp.magedu.com

[webservers]

www1.magedu.com:2222

www2.magedu.com

[dbservers]

db1.magedu.com

db2.magedu.com

db3.magedu.com

如果主机名称遵循相似的命名模式,还可以使用列表的方式标识各主机

· 示例:

[websrvs]

www[01:100].example.com

[dbsrvs]

db-[a:f].example.com

ansible
配置文件

Ansible 配置文件/etc/ansible/ansible.cfg
(一般保持默认)

[defaults]

#inventory = /etc/ansible/hosts # 主机列表配置文件

#library = /usr/share/my_modules/ # 库文件存放目录

#remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录

#local_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录

#forks = 5 # 默认并发数

#sudo_user = root # 默认sudo 用户

发表评论

电子邮件地址不会被公开。 必填项已用*标注