机器办理

机器办理的东西挑选的考量能够包括以下三个方面:

  1. 是否简略,是否需求每台机器都布置Agent(客户端)
  2. 言语的挑选(Puppet/Chef vs Ansible/SaltStack)开源技能,不看官网不足以娴熟,不懂源码不足以通晓:Puppet、Chef根据Ruby开发的,Ansible、SaltStack根据Python开发的。
  3. 速度的挑选(Ansible vs SaltStack)Ansible根据SSH协议传输数据,SaltStack运用信息行列ZeroMQ传输数据,大规模并发的能力对于及时台-200台规模的兄弟来说,Ansible的功用也能够接受,假如一次操作上千台用salt好一些。
东西 言语 架构 协议
Puppet Ruby C/S HTTP
Chef Ruby C/S HTTP
Ansible Python 无Client SSH
Saltstack Python C/S(可无Client) SSH/ZMQ/RAET

一般创业公司挑选Ansible 能解决大部分问题,其简略,不需求装置额定的客户端,能够从指令行来运转,不需求运用装备文件,至于比较复杂的使命,Ansible装备通过名为Playbook 的装备文件中的 YAML语法来加以处理,Playbook还能够用模板来扩展其功用。

自动化运维三剑客

  • saltstack
  • pubbet
  • ansible

Ansible概述

Ansible是一个根据Python开发的装备办理和运用布置东西,现在也在自动化办理领域大放异彩。它交融了许多老牌运维东西的长处,Pubbet和Saltstack能完成的功用,Ansible基本上都能够完成。

Ansible能批量装备、布置、办理上千台主机。比方以前需求切换到每个主机上履行的一或多个操作,运用Ansible只需在固定的一台Ansible操控节点上去完成一切主机的操作。

Ansible是根据模块工作的,它只是供给了一种运转结构,它本身没有完成使命的能力,真实履行操作的是Ansible的模块, 比方copy模块用于拷贝文件到长途主机上,service模块用于办理服务的发动、停止、重启等

Ansible的四个组件

  • Inventory 主机清单(主机组)
  • Modules 模块
  • Plugins 插件
  • Playbooks 剧本(相当于脚本)

自动化运维工具Ansible——概述及命令行模块

Ansible的特性

特性一:

Ansible其中一个比较明显的特性Agentless,即无Agent的存在(无代理端,即无客户端),它就像一般指令一样, 并非c/s软件,也只需在某个作为操控节点的主机上装置一次Ansible即可,一般它根据ssh衔接来操控长途主机,长途主机上不需求装置Ansible或其它额定的服务。

运用者在运用时,在服务器终端输入指令或者playbooks,会通过预定好的规则将playbook拆解为play(一个play就是一个Linux操作),再组织成ansible能够识别的使命,调用模块和插件,根据主机清单通过SSH将临时文件发给长途的客户端履行并返回结果,履行完毕后自动删去。

特性二:

Ansible的另一个比较明显的特性是它的绝大多数模块都具有幂等性(idempotence)。所谓幂等性,指的是屡次操作或屡次履行对体系资源的影响是共同的。

  • 比方履行 systemctl stop xxx 指令来停止服务,当发现要停止的方针服务现已处于停止状况,它什么也不会做,所以屡次停止的结果仍然是停止,不会改动结果,它是幂等的,而systemctl restart xxx是非幂等的。

Ansible的许多模块在履行时都会先判别方针节点是否要履行使命,所以,能够放心大胆地让Ansible去履行使命,重复履行某个使命绝大多数时候不会发生任何副作用。

ansible 环境装置布置

  • 办理端ansible:192.168.44.20
  • 被办理端:192.168.44.30
  • 被办理端:192.168.44.40

办理端装置 ansible

  1. yum装置epel-release和ansible
    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块
yum install -y epel-release			//先装置 epel 源,在线源装置
yum install -y ansible
  1. ansible 目录结构

    自动化运维工具Ansible——概述及命令行模块

  2. 装备主机清单

    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块

  3. 装备密钥对验证。ansible默许运用ssh衔接,所以办理前要设置免密登录。

    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块
    自动化运维工具Ansible——概述及命令行模块

    • 假如有成百上千台主机,不可能一次一次输入暗码,因此就需求sshpass。sshpass这个东西能够完成ssh的免交互。格局sshpass -p '暗码' ssh-copy-id 用户@IP地址
      自动化运维工具Ansible——概述及命令行模块

ansible常用的指令行模块

ansible <组名> -m <模块> -a <参数列表>
ansible <主机IP> -m <模块> -a <参数列表>
ansible <主机名> -a <参数列表>   #不加-m指定模块默许运用command

选项解释

  • -m:指定模块
  • -a:指定指令

列出一切已装置的模块:ansible-doc -l

自动化运维工具Ansible——概述及命令行模块
自动化运维工具Ansible——概述及命令行模块

检查指定模块的描述信息和操作动作:ansible-doc -s 模块

自动化运维工具Ansible——概述及命令行模块

command模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

留意:在长途主机履行指令,不支撑管道、重定向等shell的特性。

自动化运维工具Ansible——概述及命令行模块

常用的参数

  • chdir:在长途主机上运转指令条件前进入目录
  • creates:判别指定文件是否存在,假如存在,不履行后边的操作
  • removes:判别指定文件是否存在,假如存在,履行后边的操作

chdir

在长途主机上运转指令条件前进入目录

自动化运维工具Ansible——概述及命令行模块
自动化运维工具Ansible——概述及命令行模块

creates

判别指定文件是否存在,假如存在,不履行后边的操作。

自动化运维工具Ansible——概述及命令行模块

removes

判别指定文件是否存在,假如存在,履行后边的操作

自动化运维工具Ansible——概述及命令行模块

shell模块

在长途主机履行指令,相当于调用长途主机的shell进程,然后在该shell下打开一个子shell运转指令。支撑管道符号和重意向等功用。

自动化运维工具Ansible——概述及命令行模块

示例1

shell模块支撑管道符号。

自动化运维工具Ansible——概述及命令行模块

提取对方IP地址。

自动化运维工具Ansible——概述及命令行模块

示例2:

shell模块支撑重定向功用。

自动化运维工具Ansible——概述及命令行模块

cron模块

在长途主机界说使命计划。其中有两种状况(state)

  • present 表明增加(能够省掉)
  • absent 表明移除。

自动化运维工具Ansible——概述及命令行模块

示例1

每天晚上12:30备份体系日志
ansible webservers -m cron -a 'minute=30 hour=0 job="/usr/bin/co -f /var/log/messages /root/backuper/messages-$(date +%Y/%m/%d)" name="backup syslog"'

自动化运维工具Ansible——概述及命令行模块

示例2

星期一到星期五,上午9点到下午5点期间,每隔半小时履行一次同步时间使命 ansible webservers -m cron -a 'minute=*/30 hour="9-17" weekday="1-5" job="/usr/sbin/ntpdate ntp.aliyum.com" name="ntp job" '

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

删去体系备份使命

删去backup syslog计划使命:ansible webservers -m cron -a 'name="backup syslog" state=absent'

自动化运维工具Ansible——概述及命令行模块

user模块

办理用户的模块。 检查user模块包括的操作动作:ansible-doc -s user

常用参数:

参数 阐明
name 用户名,必选参数。
state=present 或 absent 创立账号或者删去账号,present表明 创立,absent 表明删去。
system=yes 或 no 是否为体系账号。(默许为体系账号)
uid 用户uid。
group 用户基本组。
groups 用户附加组。
shell 默许运用的登录shell
move_home=yes 或 no 假如设置的家目录现已存在,是否将现已存在的家目录进行移动。
password 用户的暗码,主张运用加密后的字符串。
comment 用户的注释信息。
remove=yes 或 no 表明当state=absent时,是否删去用户的家目录。即删去用户时,是否一同删去家目录。yes表明删去用户的家目录。

示例1

增加用户zhangsan:ansible webservers -m user -a 'name=zhangsan'

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例2

删去用户并删去家目录:ansible webservers -m user -a 'name=zhangsan state=absent remove=yes'

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例3

创立用户并指定UID号并增加暗码:ansible webservers -m user -a 'name=zhangsan uid=9527 shell=/sbin/nologin password=123123'

自动化运维工具Ansible——概述及命令行模块

不主张运用password指定暗码,由于是明文保存,安全性低

自动化运维工具Ansible——概述及命令行模块

group模块

办理用户组的模块。

留意:字符串类型的值主张加双引号,避免有空格。数字和布尔值不要加双引号

示例

创立aa组,并设置gid号为1024:ansible webservers -m group -a 'name=aa gid=1024'

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

创立lisi用户,设为体系用户,附加组为aa组

自动化运维工具Ansible——概述及命令行模块

copy模块

用于将本地文件仿制到长途主机。

检查copy模块包括的操作动作:ansible-doc -s copy

常用参数:

参数 阐明
src 指出源文件的途径(位于操控节点,即办理端),能够运用相对途径或绝对途径,支撑直接指定目录,假如源是目录则方针也要是目录。
dest 指出仿制文件的方针及位置,运用绝对途径,假如源是目录则方针也要是目录,假如方针文件现已存在会掩盖原有的内容。
mode 指出仿制时,方针文件的权限。
owner 指出仿制时,方针文件的属主。
group 指出仿制时,方针文件的属组。
content 指出仿制到方针主机上的内容,不能与src一同运用。

示例1

把本地的hosts文件仿制到长途主机:ansible webservers -m copy -a 'src=/etc/ansible/hosts dest=/opt/myhosts mode=700 owner=one'

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例2

仿制目录到长途主机:ansible webservers -m copy -a 'src=/etc/ansible dest=/opt'

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例3

输入内容到长途主机文件中,掩盖原有内容:ansible webservers -m copy -a 'content="Hello World!" dest=/opt/ansible/hosts'

自动化运维工具Ansible——概述及命令行模块

file模块

为长途主机创立/删去文件或目录,设置文件属性。

主要参数如下:

参数 阐明
path 指定长途服务器的途径,也能够写成”dest”,”name”
state 状况,能够将值设定为directory表明创立目录,设定为touch表明创立文件,设定为link表明创立软链接,设定为hard表明创立硬衔接,设定为absent表明删去目录文件或链接
mode 文件仿制到长途并设定权限,默许file=644,directory=755
owner 文件仿制到长途并设定属主,默许为root
group 文件仿制到长途并设定属组,默许为root
recurese 递归修正
src 指的是方针主机上的源文件。与copy模块不同

示例1

修正文件的属主、属组、权限等

自动化运维工具Ansible——概述及命令行模块

示例2

创立和删去文件、目录

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例3

创立软链接文件

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

假如源地址不存在,则有必要增加force=yes才能创立

自动化运维工具Ansible——概述及命令行模块

hostname模块

用于办理长途主机上的主机名。

自动化运维工具Ansible——概述及命令行模块

ping模块

测验长途主机的连通性。

自动化运维工具Ansible——概述及命令行模块

yum模块

在长途主机上装置与卸载软件包, 需求被办理端装备好yum源。

主要的参数如下:

参数 阐明
name 指定装置软件包名或软件包URL
state 指定yum对应的方法,present(默许)、installed表明装置、latest表明装置最新版别软件包;absent、removed表明卸载。支撑多程序一同装置,用逗号隔开。
enablerepo 答应从哪些库房获取软件
disablerepo 制止从哪些库房获取软件
exclude 排除某些软件包,例如kernel
download_only 仅下载软件包,不装置
disable_gpg_check 不进行gpg检测
update_cache 能够在装置包的一同更新yum缓存

示例1:装置httpd

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

示例2:卸载httpd

自动化运维工具Ansible——概述及命令行模块

service/systemd 模块

用于办理长途主机上的服务的运转状况。

主要参数如下:

参数 阐明
name 指定需求操控的服务名称
state 指定服务状况,其值能够为stopped、started、reloaded、restarted、status
enabled 指定服务是否为开机发动,yes为发动,no为不发动
daemon_reload yes:重启systemd服务,让unit文件生效

示例

先将httpd装置回来用于试验

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

script 模块

完成长途批量运转本地的shell脚本。

留意:script模块不具有幂等性。所以主张用剧本来履行。

示例

在本地书写好一个脚本运用,并赋予运用权限。

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

留意:script模块不具有幂等性。

自动化运维工具Ansible——概述及命令行模块

setup 模块

facts组件是用来收集被办理节点信息的,运用setup 模块能够获取这些信息。

自动化运维工具Ansible——概述及命令行模块

自动化运维工具Ansible——概述及命令行模块

总结

ansible:自动化运维东西能够完成批量办理多台(成百上千)主机,运用级别的跨主机编列东西

特点:

  • 不要在被操控节点上装置客户端运用
  • 通过ssh协议与被操控节点通信的
  • 根据模块完成在被操控节点上履行指令操作
  • 许多模块具有幂等性,完成假如屡次操作的状况没有发生改动,是不会重复履行的

ansible模块有哪些:command、shell、copy、user、scrip、yum、service、group、ping、setup、hostname、cron

指令格局

ansible  组名  -m 模块名  -a '模块参数'
              -m  file -a 'path=文件途径  mode  =755  owner=      state=file|directory|touch|link  src=  '
              -m copy -a 'src=  dest= mode=  owner= group'
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。