0
点赞
收藏
分享

微信扫一扫

嵌入式养成计划-29-网络编程----TCP与UDP的基础模型

龙毓七七 2023-09-21 阅读 46

一、认识自动化运维

        自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”的IT运维。

自动化运维主要关注的方面

  1. 管理机与被管理机的连接(管理机如何将管理指令发送给被管理机)

  2. 服务器信息收集 (如果被管理的服务器有centos7.5外还有其它linux发行版,如suse,ubuntu等。当你要做的事情在不同OS上有所不同,你需要收集信息,并将其分开处理)

  3. 服务器分组(因为有些时候我要做的事情不是针对所有服务器,可能只针对某一个分组)

  4. 管理内容的主要分类

  • 文件目录管理(包括文件的创建,删除,修改,查看状态,远程拷贝等)

  • 用户和组管理

  • cron时间任务管理

  • yum源配置与通过yum管理软件包

  • 服务管理

  • 远程执行脚本

  • 远程执行命令

常见的开源自动化运维工具

  1. puppet

    基于ruby语言,成熟稳定。适合于大型架构,相对于ansible和saltstack会复杂些。

  2. saltstack

    基于python语言。相对简单,大并发能力比ansible要好, 需要维护被管理端的服务。如果服务断开,连接就会出问题。

  3. ansible

    基于python语言。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证所以机器多的话速度会较慢。

二、ansible

        ansible是一种由Python开发的自动化运维工具,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

特点

        部署简单

        默认使用ssh进行管理,基于python里的==paramiko==模块开发

        管理端和被管理端不需要启动服务

        配置简单,功能强大,扩展性强

        能过playbook(剧本)进行多个任务的编排

环境

        关闭防火墙, selinux

        时间同步

        静态ip

        修改主机名互相解析

免密ssh

管理机hd1 安装ansible

将被管理机hd2,hd3 加入管理机组(单独加入时不会进行分组)

测试连接性

一、服务器分组

ansible通过一个主机清单功能来实现服务器分组。

Ansible的默认主机清单配置文件为/etc/ansible/hosts.

二、ansible模块

        ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

        ansible支持的模块非常的多,我们并不需要把每个模块都记住,而只需要熟悉一些常见的模块,其它的模块在需要用到时再查询即可。

查看所有支持的模块

hostname模块

file模块

file模块用于对文件相关的操作(创建, 删除, 软硬链接等)

stat模块

ansible master -m stat -a 'path=/etc/fstab'

copy模块

fetch模块

fetch模块与copy模块类似,但作用相反。用于把远程机器的文件拷贝到本地。

在两台被管理机上分别创建一个同名文件(但内容不同)

user模块

user模块用于管理用户账号和用户属性。

group模块

cron模块

cron模块用于管理周期性时间任务

yum_repository模块

yum模块

service模块

scripts模块

script模块用于在远程机器上执行**本地**脚本。

在master上准备一个脚本

commend与shell模块

        两个模块都是用于执行linux命令的,这对于命令熟悉的工程师来说,用起来非常high。

shell模块与command模块差不多(command模块不能执行一些类似$HOME,>,<,|等符号,但shell可以)

三、playbook

playbook(剧本): 是ansible用于配置,部署,和管理被控节点的剧本。用于ansible操作的编排。

使用的格式为yaml格式(saltstack,elk,docker,docker-compose,kubernetes等也都会用到yaml格式)

语法

hosts:        用于指定要执行任务的主机,其可以是一个或多个由冒号分割主机组

remote_user :        用于指定远程主机上的执行任务的用户

tasks :        任务列表,按顺序执行任务 

handlers :        类似task,但需要使用notify进行通知调用

variables:        定义变量

ymal格式

        以.yaml或.yml结尾

        文件的第一行以 "---"开始,表明YMAL文件的开始(可选的)
         以#号开头为注释 
        列表中的所有成员都开始于相同的缩进级别, 并且使用一个 `"- "` 作为开头(一个横杠和一个空格)
        一个字典是由一个简单的 `键: 值` 的形式组成(这个冒号后面必须是一个空格)
        注意: 写这种文件不要使用tab键,都使用空格

四、roles(角色)

        roles(角色): 就是通过分别将variables, tasks及handlers等放置于单独的目录中,并可以便捷地调用它们的一种机制。

        假设我们要写一个playbook来安装管理lamp环境,那么这个playbook就会写很长。所以我们希望把这个很大的文件分成多个功能拆分, 分成apache管理,php管理,mysql管理,然后在需要使用的时候直接调用就可以了,以免重复写。就类似编程里的模块化的概念,以达到代码复用的效果。

roles目录结构

files:用来存放由copy模块或script模块调用的文件。
tasks:至少有一个main.yml文件,定义各tasks。
handlers:有一个main.yml文件,定义各handlers。
templates:用来存放jinjia2模板。
vars:有一个main.yml文件,定义变量。
meta:有一个main.yml文件,定义此角色的特殊设定及其依赖关系。

通过roles实现LAMP

一、创建roles目录结构
二、准备httpd服务器的主页文件,php测试页和配置文件等
三、编写httpd角色的main.yml文件
四、编写httpd角色里的handler
五、编写mysql角色的main.yml文件
六、编写php角色的main.yml文件
七、编写lamp的playbook文件调用前面定义好的三个角色
八、执行剧本

ansible-playbook /etc/ansible/playbook/lamp.yaml

举报

相关推荐

0 条评论