首页 > 作文

Ansible自动化运维

更新时间:2023-04-03 22:22:30 阅读: 评论:0

ansible-自动化运维工具

ansible简介

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

ansible是基于模块工作的,本身没有批量部署能力,真正具有批量部署的是ansible所运行的模块。

ansible的特性

部署简单,只需在主控端部署ansible环境,被控端无需做任何操作;

默认使用ssh协议对设备进行管理;

有大量常规运维操作模块,可实现日常绝大部分操作;

配置简单、功能强大、扩展性强;

有paramiko,pyyaml,jinja2三个关键模块;

支持api及自定义模块,可通过python轻松扩展;

通过playbooks来定制强大的配置、状态管理;

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

轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

提供一个功能强大、操作性强承诺书怎么写的web管理界面和rest api接口–awx平台

ansible架构图

ansible:ansible核心程序

host inventory:记录由ansible管理的主机信息,包括端口、密码、ip等

play books:“剧本”yaml格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能

core modules:核心模块,主要操作是通过调用核心模块来完成管理任务

custom modules:自定义模块,完成核心模块无法完成的功能,支持多种语言

plugins:插件,实现记录日志,发送邮件等功能

connection plugins:连接插件,ansible和host通信使用,默认ssh连接

ansible工作原理

ansible任务执行模式

ansible系统由控制主机对被控节点的操作可分为两类,即adhoc和playbook

ad-hoc模式(点对点模式)

使用单个模块,支持批量执行单条命令。ad-hoc命令是一种可以快速输入的命令,而且不需要保存起来的命令

playbook模式(剧本模式)

是ansible主要管理方式,也是ansible功能强大的关键所在。playbook通过多个task集合完成一类功能,如web服务的安装部署、数据库服务器的批量备份等

ansible执行流程

ansible命令执行过程

1、加载自己的配置文件,默认 /etc/ansible/ansible.cfg

2、查找对应的主机配置文件,找到要执行的主机或者组

3、加载自己对应的模块文件

4、通过ansible将模块或命令生成对应的临时python文件,并将该文件传输至远程服务器

5、对应执行用户的家目录的文件

6、给文件+x执行权限

7、执行并返回结果

8、删除临时python文件,sleep 0 退出

ansible常用命令

ansible命令集

/usr/bin/ansible 临时命令执行工具

/usr/bin/ansible-doc 模块功能查看工具

/usr/bin/ansible-galaxy 下载/上传优秀代码或roles模块的官网平台

/usr/bin/ansible-playbook 定制自动化的任务集编排工具

/usr/bin/ansible-pull 远程执行命令的工具

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

/usr/bin/ansible-console 可与用户交互的命令执行工具

ansible命令使用

命令格式

# ansible <host-pattern> [-f forks] [-m module_name] [-a args]

-a 模块的参数

-k 登陆密码

-c 连接类型使用

-m 执行模块的名字

-o 压缩输出

-r 指定用户

ansible配置

准备至少两台机器,一台主控机器,其余的为被控机器

ansible安装

在主控机器上安装ansible

# yum install -y ansible

生成密钥对

# ssh-keygen

设置密钥认证

# ssh-copy-id root@ip

配置主机清单

# vi/etc/ansible/hosts

[web] ##主机组名

192.168.37.16

192.168.37.17

ansible常用模块

主机连通性测试

# ansible web -m ping

192.168.37.16 | success => {
“changed”: fal,
“ping”: “pong”
}
192.168.37.17 | success => {
“changed”: fal,
“ping”: “pong”
}

确认主机是连通状态

command模块

该模块可以直接在远程主机上执行命令,并将结果返回本主机

模块常用选项

chdir 在执行命令之前,先切换到该目录

executable 切换shell来执行命令,需要使用命令的绝对路径

free_form 要执行的linux指令

creates 一个文件名,当这个文件存在,则该命令不执行

removes 一个文件名,当这个文件不存在,则该命令不执行

copy模块

该模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等

常用选项

src 被复制到远程主机的本地文件

content 用于替换“src”,可以直接指定文件的值

dest 将源文件复制到的远程主机的绝对路径

backup 当文件内容发生改变后,再覆盖之前把源文件备份

directory_mode 递归设定目录的权限

file模块

该模块主要用于设置文件的属性,如创建文件、创建链接文件、删除文件等

常用选项

group 定义文件目录的属组,后面可以加上mode:定义文件目录的权限

owner 定义文件目录的属主,后面必须加上path:定义文件目录的路径

recur 递归设置文件的属性,只对目录有效

dest 被链接到的路径

state 状态,有以下选项

directory 如果目录不存在,就创建目录

file秋天来了作文 即使文件不存在,也不会被创建

link 创建软链接

hard 创建硬链接

touch 如果文件不存在,则创建一个新文件,如果文件存在,则更新最后修改时间

abnt 删除目录、文件或者取消链接文件

fetch模块

该模块用于从远程某主机获取文件到本地

选项

dest 用来存放文件的目录

src 在远程拉取的文件

yum模块

该模块主要用于软件的安装

常用选项

name= 所安装的包的名字

update_cache 强制更新yum的缓存

conf_file 指定远程yum安装时所依赖的配置文件

state= 状态,有以下选项

prent 安装

latest 安装最新的

abnt 卸载软件

rvice模块

该模块用于服务程序的管理

常用选项

arguments 命令行提供额外的参数

enabled 设置开机启动

name= 服务名称

runlevel 开机启动的级别

sleep 在重启服务的过程中,是否等待

state 状态,有以下选项

started 启动服务

stopped 停止服务

restarted 重启服务

reloaded 重载配置

ur模块

该模块主要用来管理用户账号

常用选项

comment 用户的描述信息

createhome 是否创建家目录

force 在使用state=abnt时,行为与urdel-force一致

group 指定基本组

groups 指定附加组

home 指定用户家目录

name 指定用户名

non_unique 允许改变非唯一的用户id值

password 指定用户密码

state 设置账号状态

system 当创建一个用户,设置这个用户时系统用户

uid 指定用户的uid

group模块

该模块主要用于添加或删除组

常用选项

gid= 设置组的gid号

name= 指定组的名称

state= 指定组的状态

system= 设置值为yes,表示创建为系统组

ansible playbook

简介

playbook是ansible用于配置、部署和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态

使用场景

使用playbook可以方便的重用这些代码,可以移植到不同的机器上面,最大化的利用代码

格式

playbook由ymal语言编写

1、文件的第一行应该以“—”(三个连字符)开始,表明yaml文件的开始

2、在同一行中,#之后的内容表示注释

欧科豆浆机维修3、yaml中的列表元素以“-”开头然后紧跟着一个空格,后面为元素内容

4、同一个列表中的元素应该保持相同的缩进,否则会被当做错误处理

5、playbook中hosts,variables,roles,tasks等对象的表示方法都是键值中间以“:”分隔表示,“:”后面还要增加一个空格

文件名称应该以 .yml 结尾,由三个部分组成

host部分:使用hosts指示使用哪个主机或主机组来运行下面的tasks,每个playbook都必须指定hosts,hosts也可以使用通配符格式

remote_ur:指定远端主机中的哪个用户来登录远端系统,在远端系统执行tasks的用户,可以任意指定,也可以使用sudo,但是用户必须要有执行相应task的权限

tasks:指定远端主机将要执行的一系列动作。tasks的核心为ansible的模块,tasks包含name和要执行的模块

核心元素

playb4x100接力ook的核心元素

hosts:主机组

tasks:任务列表

variables:变量,设置方法有四种

templates:包含了模板语法的文本文件

handlers:由特定条件触发的任务

playbook实战-nginx安装

先在主控机器上安装并编译好nginx

进入ansible配置文件目录

# cd /etc/ansible

创建目录

# mkdir nginx.install

# cdnginx.install

# mkdir -p roles/{common.install}/{handlers,files,meta,tasks,templates,vars}

## roles目录下由两个角色,common为一些准备操作,install为安装nginx的操作。每个角色下又有几个目录,handlers下面是当发生改变时要执行的操作,通常用在配置文件发生改变,重启服务。files为安装时用到的一些文件,meta为说明信息,说明角色依赖等信息,tasks里面是核心的配置文件,templates通常存一些配置文件,启动脚本等模板文件,vars下为定义的变量

将nginx目录打包,放到/etc/ansible/nginx_install/roles/install/files/下面并重命名

# mv /etc/local/sbin/nginx /etc/ansible/nginx_install/roles/install/files/nginx工艺工程师是做什么的.tar.gz

启动脚本和配置文件也移动到/etc/ansible/nginx_install/roles/install/templates/下面

定义依赖包

# cd /ect/ansible/nginx.install/roles

# vi common/tasks/main.yml

– name: install initializtion require software
yum: name={{ item }} state=installed
with_items:
– zlib-devel
– pcre-devel

定义变量

# viinstall/vars/main.yml

nginx_ur: www
nginx_port: 80
nginx_badir: /usr/local/nginx

拷贝文件

# viinstall/tasks/copy.yml

– name: copy nginx software
copy: src=nginx dest=/tmp/nginx.tar.gz owner=root group=root
– name: uncompression nginx software
shell: tar zxf /tmp/nginx.tar.gz -c /usr/local/
– name: copy nginx start script
template: src=nginx dest=/etc/init.d/nginx owner=root group=root mode=0755
– name: copy nginx config
template: src=nginx.conf dest={{ nginx_badir }}/conf/ owner=root group=root mode=0644

建立用户,启动服务,删除压缩包

# viinstall/tasks/install.yml

– name: create nginx ur
ur: name={{ nginx_ur }} state=prent createhome=no shell=/sbin/nologin
– name: create nginx rvice
shell: /etc/init.d/nginx start
– name: add boot start nginx rvice
shell: chkconfig –level 345 nginx on
– name: delete nginx compression files
shell: rm -rf /tmp/nginx.tar.gz

调用文件

# viinstall/tasks/main.yml

– include: copy.yml
– include: install.yml

定义入口文件

# vi/etc/ansible/nginx_install/install.yml


– hosts: testhost
remote_ur: root
gather_facts: ture
roles:
– common
– install

执行

# ansible-playbook/etc/ansible/nginx_install/install.yml

本文发布于:2023-04-03 22:22:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/8fe1963364c6298befa6914ebb9f1116.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Ansible自动化运维.doc

本文 PDF 下载地址:Ansible自动化运维.pdf

标签:模块   文件   主机   命令
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图