配置系统

系统运维 waitig 526℃ 百度已收录 0评论

配置系统:将每个主机应该配置的服务、文件等信息保存在一台主机上,随时监控(通过采样的方式)每个目标主机是否处于期望状态,如果不是,强制转移为期望状态。这套系统称为配置系统。
版本追踪系统:保存开发出来的每一个配置内容相关的版本。最流行的为Git
可以将节点中非关键性的服务都运行为虚拟机实例,出现故障时,再创建一个新的实例即可,而且每个实例可以在物理节点上迁移。
打包机制:将程序与运行环境打包为完整单一的文件,并且可启动。例如tomcat运行时需要的一切周边环境打包为一个镜像文件,并且可以像程序一样可以运行。
发布系统:可以为一个脚本,能够进行灰度发布
DevOps:可以自动实现:研发环境创造代码,纳入到版本追踪系统,同时web工具进行代码的构建,然后到测试环境进行测试,然后到线上环境进行预发布,最后进行发布。(预发布是指不关闭任何一台服务器主机,先发布到线上空闲主机上) 其中自动到测试环境进行测试,叫做CI,自动到线上发布,叫做CD。 能够协助完成工作的外部工具叫jenkins
运维工作分为三个层级:
1.系统级—bootstraping(有主机,有操作系统,有基础的配置环境。例如ip地址等)。辅助工具:物理环境pxecobbler,云环境openstack,cloudstark(创建实例)可以省略安装操作系统,按照模版运行即可,在底层硬件基础上构建一个云环境,并提供应用接口。
2.配置—–configuration 设计系统建构,让每个主机安装所需的软件,提供配置文件,启动服务,(部署应用程序,要提供服务接口),相关工具:ansible(轻量化的远程管控工具)、puppet、salt
3.命令或控制—comment&control,按照随机需求,指挥一批主机完成特定操作。相关工具:ansible、fabric、func
4*.还有日常工作–发布,相关工具:ansible

配置系统监控管理多个主机节点,都需要管理权限,还需要有被管控主机的系统帐号。这是第一种管控机制,ansible(轻量化的远程管控工具)属于此类。
所以有另外一种管控机制:被管控主机上有一个以管理员身份运行的进程,管控主机上也有一个master进程,二者可以配对,避免了认证操作。跨主机运行的系统基于安全要通过https协议进行,基于Restful接口交互。puppet属于此类。

配置系统的配置逻辑:某一种功能比较基础,可以反复使用,则将其定义成一个独立的实体可被重复调用—角色化,可以在前端加代码调用角色,并将其赋予到若干主机上即可。

ansible集众多工具于一身:configuration、deployment(fabric)、func
ansible基于python语言研发
ansible的相关特性:
1.易于学习
2.no bootstraping
3.快速失败,快速重复测试
4.不需要服务器
5.不需要证书
6.可以使用任何编程语言来写模块
7.默认使用ssh来连接管控被管理的主机

ansible通过连接插件连接被管控主机,默认使用ssh,也可以使用其他连接组件;
ansible还有模块,是用来实现管理操作的代码,分为核心模块与自定义模块,例如在目标主机上安装程序包、创建用户等管理操作;
ansible通过主机清单–host inventory来决定管理控制哪些主机;配合资产管理系统或资产管理数据库(例如记录有多少主机,各安装哪些系统),将主机纳入主机清单。
ansible通过剧本–play books 记录每台主机需要进行的操作,需要完成的功能,而play books可以被角色化。
ansible的配置文件:
vim /etc/ansible/ansible.cfg
#以下为默认配置文件,可根据实际情况更改 
[defaults]
#inventory = /etc/ansible/hosts 
#library = /usr/share/my_modules/ 
#module_utils = /usr/share/my_module_utils/
 #remote_tmp = ~/.ansible/tmp 
#local_tmp = ~/.ansible/tmp 
#forks = 5 
#poll_interval = 15
 #sudo_user = root 
#ask_sudo_pass = True 
#每次提示输入密码 ask_pass = True
#transport = smart 
#remote_port = 22
 #module_lang = C
 #module_set_locale = False
 #打印日志 log_path = /etc/ansible/log/ansible.log
……

安装使用ansible步骤:
ansible属于extras仓库,CentOS直接提供的仓库

安装

1.首先将被管控主机纳入监控目标范围中

如果组内的主机有同类的命名规范,还可以通过展开的方式进行通配

2.ansible通过ssh连接被管控主机,需要进行验证,所以可以基于密钥验证 ,在ansible主机端生成密钥,然后复制到每个主机上完成认证;或者可以在配置文件中直接写明要连接的密码

分别复制到三台主机上:

3.查看ansible简要使用帮助

-m指明加载的模块,不同的模块有不同的管理功能,比如安装程序包,或者创建用户
-a 给出每个模块使用的参数:(参数用来补充模块的功能)
-f 指定ansible一批操作几台主机,默认为5个

4.查看有多少主机被管理:

查看某一组有多少主机

ansible的常用模块:
1.ping模块,
用来探测被管控主机是否在线;成功显示为绿色,失败显示红色

2.command模块:

chdir表示先切换到指定目录下再执行命令
creates表示给creates一个文件名或者通配模式,如果已经存在,这一步将不会执行
removes表示给removes一个文件名或者通配模式,如果不存在,这一步将不会执行;例如删除一个文件,如果文件不存在,则不执行

3.shell模块

4.group模块

state默认为创建;state=present或者absent(present表示创建,absent表示删除)

5.uesr模块

6.copy模块
格式:
(1).指明源与目标
 src=  dest=

(2).指明内容与目标  content=  dest= 对于目标,要有属组、属主、权限等属性

7.file模块

(1) 创建链接文件:*path=  src=  state=link
(2) 修改属性:path=  owner= mode= group=
(3) 创建目录:path=  state=directory
8.cron模块,定义周期性任务
9.hostname模块,用来管理主机名
10.service模块,用来管理服务

11.git模块,作版本追踪和管理的工具

ansible中的playbook

有些功能需要多次重复执行,就要将其定义在文件中—-playbook
playbook的组织格式为YAML格式,主要编排的是任务。
YAML:YAML(/ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达数据序列的格式。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印除错内容、文件大纲。
Playbook的核心元素:
        Hosts:主机,表示以下任务由谁来完成
        Tasks:任务列表
        Variables:变量,用来增强整个配置任务的灵活性
        Templates:模版,包含了模板语法的文本文件;
        Handlers:处理器,由特定条件触发的任务;
Roles:将以上元素以层级结构组织在一个对应的层级目录文件中,即为roles

循环,即迭代,需要重复执行的任务,使用循环来实现
使用item变量,再用with_items,后面跟列表–直接给出要迭代的元素,给出的元素可以是字符串,也可以是字典
示例:安装nginx、memcached、php
– name: install some packages
  yum: name={{ item }} state=present
  with_items:
  – nginx
  – memcached
  – php-fpm
示例:创建多个用户和组,调用了字典,使用item.name和item.group
– name: add some groups
  group: name={{ item }} state=present
  with_items:
  – group11
  – group12
  – group13
– name: add some users
  user: name={{ item.name }} group={{ item.group }} state=present
  with_items:
  – { name: ‘user11’, group: ‘group11’ }
  – { name: ‘user12’, group: ‘group12’ }
  – { name: ‘user13’, group: ‘group13’ }

角色:

基于角色组织ansible:
1.在固定角色应在的目录下,创建一个子目录,名称即为角色名
2.将playbook文件中的各配置段,像vars,tasks等,放在各自的子目录的文件中,这个子目录即为角色
创建一个角色,即一个目录,名为nginx,在目录下创建若个子目录

应该将角色放在固定的目录下
在ansible的配置文件中,有一个目录就是角色目录

将nginx角色移到固定的角色目录下,这样可以根据默认目录被识别为角色

角色至少有一个tasks目录,此目录下要有一个main.yml文件(格式名称固定),在main.yml文件中指明各任务列表,其他目录可以为空

安装nginx并启动

之后可以调用这个模块,实现相应任务:一个主机可以调用多个角色


本文由【waitig】发表在等英博客
本文固定链接:配置系统
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)