当前位置: 首页 > news >正文

Ansible简单介绍及用法

一、简介

Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。

Ansible与Saltstack最大的区别是Ansible无需在被控主机部署任何客户端代理,默认直接通过SSH通道进行远程命令执行或下发配置:相同点是都具备功能强大、灵活的系统管理、状态配置,两者都提供丰富的模板及API,对云计算平台、大数据都有很好的支持。

二、特点

部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
默认使用SSH协议对设备进行管理;
主从集中化管理;
配置简单、功能强大、扩展性强;
支持API及自定义模块,可通过Python轻松扩展;
通过Playbooks来定制强大的配置、状态管理;
对云计算平台、大数据都有很好的支持;
提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。
幂等性:一种操作重复多次结果相同

三、Ansible架构图

Ansible核心组件说明:
Ansible:Ansible的核心程序
Host Lnventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载
Playbooks:YAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.
Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。
Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。
Connection Plugins:连接插件,Ansible和Host通信使用

ansible得配置文件:

vim /etc/ansible/ansible.cfg

修改:host_key_checking = False

设置成默认不需要SSH协议的指纹验证

同时存在多个Ansible服务主配置文件时,具体优先级顺序:

主机清单:

/etc/ansible/hosts

插件目录:

/usr/share/ansible_plugins/

1.ansible命令的使用说明

常用选项

ansible -m MOD_NAME -a MOD_ARGS

表示调用什么模块,使用模块的那些参数

ansible中得ansible-doc得用法:

一般用法:

ansible-doc -l 获取模块信息

ansible-doc -s MOD_NAME 获取指定模块的使用帮助

四、ansible使用 之一 “命令管理方式”

command:在远程主机执行命令;不支持|管道命令

ping:探测目标主机是否存活;

shell:在远程主机上调用shell解释器运行命令,支持shell的各种功能,例如管道等 ;

注意:command和shell模块的核心参数直接为命令本身;而其它模块的参数通常为“key=value”格式;

copy:复制文件到远程主机,可以改权限等

例:

ansible huimin99 -m copy -a 'src=/root/5.txt dest=/tmp/test mode=640'

ansible huimin99 -m copy -a "content='hello world' dest=/tmp/test mode=640"

cpoy得相关选项:

file设置文件属性:

可以用ansible-doc -s file 查看用法参数

用法:

1)创建目录

-a "path=...   state=directory"

ansible huimin99 -m file -a "path=/tmp/www  state=directory"

2)创建链接文件

-a "src=....  dest=    state=link"

ansible huimin99 -m file -a "src=/etc/fstab dest=/tmp/fstab  state=link"

3)删除文件

-a "path=....  state=absent"

ansible huimin99 -m file -a "path=/opt/test state=absent"

如果文件不存在可以远程创建

ansible 192.168.174.132 -m file -a "path=/tmp/test state=touch"

cron模块:管理cron计划任务

ansible huimin99 -m cron -a "name='sync time' job='/usr/sbin/ntpdate time.windows.com'  minute=*/3"

yum模块:yum安装软件

ansible 192.168.174.133 -m yum -a "name=gcc state=present"

service: 服务程序管理

ansible huimin99 -m service -a "name=httpd enabled=true"

stat:获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid等信息

ansible  huimin99 -m stat -a "path=/etc/sysctl.conf"

get_url:实现在远程主机下载指定url到本地,支持sha256sum文件校验

ansible huimin99 -m get_url -a "url=http://www.baidu.com dest=/opt/ mode=0440 force= yes"

http://www.lryc.cn/news/534769.html

相关文章:

  • 目前推荐的优秀编程学习网站与资源平台,涵盖不同学习方式和受众需求
  • 软件工程-软件需求规格说明(SRS)
  • 运维_Mac环境单体服务Docker部署实战手册
  • UE5.5 PCGFrameWork--GPU CustomHLSL
  • RabbitMQ 如何设置限流?
  • json格式,curl命令,及轻量化处理工具
  • Postman面试问题
  • 【JVM详解四】执行引擎
  • esp32 udp 客户端 广播
  • nginx日志存储access日志和error保留180天,每晚把前一天的日志文件压缩成tar.gz
  • 【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue
  • C#控件开发6—旋转按钮
  • 在亚马逊云科技上云原生部署DeepSeek-R1模型(下)
  • C# COM 组件在.NET 平台上的编程介绍
  • 火热的大模型: AIGC架构解析
  • Android LifecycleOwner 闪退,java 继承、多态特性!
  • PHP 完整表单实例
  • 深度学习学习笔记(32周)
  • Web3 开发者的机遇与挑战:技术趋势与职业发展
  • 探索robots.txt:网站管理者的搜索引擎指南
  • LM Studio本地调用模型的方法
  • 防火墙安全综合实验
  • uniapp 编译生成鸿蒙正式app步骤
  • 【进程与线程】如何编写一个守护进程
  • ubuntu安装VMware报错/dev/vmmon加载失败
  • web前端布局--使用element中的Container布局容器
  • 手写一个C++ Android Binder服务及源码分析
  • git rebase发生冲突时 ☞ 解决冲突
  • 【通俗易懂说模型】反向传播(附多元分类与Softmax函数)
  • SQL Server查询计划操作符(7.3)——查询计划相关操作符(6)