首页 > 其他分享 >集群自动化工具--Ansible

集群自动化工具--Ansible

时间:2024-12-08 23:21:19浏览次数:11  
标签:文件 Ansible 批量 -- state ansible 集群 模块 root

使用Ansible前需要进行ssh密钥认证

Ansible概述

自动化运维:批量管理、批量分发、批量执行

Ansible由python编写

批量管理工具 说明
Ansible 无客户端,基于ssh进行管理与维护
Saltstack 需要安装客户端,基于ssh进行管理与维护
Terraform tf批量管理基础设施

Ansible管理架构

  • Host Inventory(主机清单):被管理主机的ip列表、模块
  • ad-hoc模式(点对点模式):命令行批量管理
  • playbook模式(剧本模式):将对应操作写入脚本

部署与配置

# 部署ansible
    yum install -y ansible
    
# 修改配置文件关闭主机Host_key_checking
# 修改配置文件开启日志功能 
    [root@m01 ~]# egrep -vn '^$|#' /etc/ansible/ansible.cfg 
    10:[defaults]
    71:host_key_checking = False
    111:log_path = /var/log/ansible.log
    327:[inventory]
    340:[privilege_escalation]
    346:[paramiko_connection]
    370:[ssh_connection]
    431:[persistent_connection]
    445:[accelerate]
    460:[selinux]
    469:[colors]
    485:[diff]

 

Ans-inventory主机清单

  • 主机清单:ansible管理的节点的列表
  • ansible默认读取/etc/ansible/hosts文件

主机清单格式

# 主机清单格式
    [分类或分组名]    # 分类要体现出对应节点的作用
    ip地址/主机名/域名    # 对应的主机名需要能解析

#子组的格式
    [组名:children]
    子组名
    子组名

[root@m01 ~]# cat /etc/ansible/hosts
[web]
172.16.1.7
[backup]
172.16.1.41
[nfs]
172.16.1.31
[data:children]
[nfs]
[backup]

# 指定用户、密码、端口(不推荐,推荐先进行ssh认证,再进行管理)
    172.16.1.7 ansible_user=root ansible_password=root ansible_port=22

 

Ansible模块

  • ansible中的模块类似于Linux中的命令
    • Linux命令管理系统
    • ansible模块实现批量管理
ansible选项 说明
-i 指定主机清单文件
-m 指定模块
-a 指定模块中的选项

 

常见模块介绍 

模块分类 模块
命令和脚本   command模块:ans默认的模块,执行简单命令,不支持特使符号
shell模块:执行命令,支持特殊符号
script模块:分发脚本命令
 文件   file模块:创建目录、文件、软连接
 copy:远程分发文件,修改权限,所有者,备份
 服务  system模块:服务管理(旧版本的系统使用service模块)
 软件包    yum源模块:yum_repository
 yum命令
 get_url下载软件
 系统管理  mount模块:挂载
   cron模块:定时任务
 用户管理  group模块:管理用户组
   user模块:管理用户
调试  ping模块:检查ansible与其他节点连通性
   debug模块:用于检查/显示变量

命令与脚本类模块

command模块

ans默认的模块,适用于执行简单的命令,不支持特殊符号

# 案例:批量获取所有主机的主机名
    ansible all -m command -a 'hostname'
    ansible all -a 'hostname'

 

shell模块

执行简单的命令,支持特殊符号

# 案例:批量删除/tm/下面所有的内容
    ansible all -m shell -a 'rm -rf /tmp/*'

# 案例:批量获取ip地址
    ansible all -m shell -a "ip address show |awk -F'[ /]+' 'NR==3{print \$3}'"

 

script模块

# 案例:批量执行/server/scripts/create_distribute_keys.sh脚本
    ansible all -m script -a '/server/scripts/create_distribute_keys.sh'

 

文件类模块

file模块

批量管理文件、目录、软连接

file模块 模块说明
path 目录/文件路径(必须要写)
src source,源文件或目录(一般创建软连接时使用)
state

状态(模式):具体的操作

  • state=directory  创建目录
  • state=link  闯将软连接
  • state=touch  创建文件
  • state=abent  删除(如果是目录则递归删除目录)
  • state=file(默认)更新文件,文件不存在不会自动创建
mode mode=777 创建并修改问价
onwer onwer=root
group group=root
  • 案例:批量创建/yuan/yuanxiaojiang.txt
ansible all -m file -a 'path=/yuan/yuanxiaojiang.txt state=touch state=directory'

 

  • 案例:批量创建/etc/hosts的软连接到/opt下面
ansible all -m file -a 'src=/etc/hosts path=/opt/hosts state=link'

 

  • 案例:批量创建/backup/host/目录,所有者所属组为root,权限为700
ansible all -m file -a 'path=/backup/host/ mode=700 owner=root group=root state=directory

 

  • 案例:批量删除/bakcup/目录及目录下内容
ansible all -m file -a 'state=absent path=/backup'

 

copy模块

批量分发:管理节点发送文件或压缩包到被管理节点

copy模块 模块说明
src source  管理端的文件或目录
dest destination  被管理端的文件或目录
backup backup=yes  覆盖前进行备份,文件内容要求有变化或区别
mode 修改权限
owner 修改为指定的所有者
group 修改为指定的所属组

案例:批量分发/etc/hosts文件,文件存在则自动备份

ansible all -m copy -a 'src=/etc/hosts dest=/etc/hosts backup=yes'

 

标签:文件,Ansible,批量,--,state,ansible,集群,模块,root
From: https://www.cnblogs.com/yuanxiaojiang/p/18593798

相关文章

  • 《聚餐》
    今天晚上应朋友邀请,下午四点左右到他家去吃饭,这里犯了一个非常大的错误,就是临走时忘了检查家里的灯是否熄灭了,因为这个,又缴了20元电费。朋友非常热情的款待了我,做了玉米炒火腿肠,可乐鸡翅,还有黄瓜炒蛋,其中能把黄瓜切的这么薄是我需要学习的。菜都做得非常好吃,光盘行动了。他(朋友......
  • qemu
    QEMU简介全称QEMU的全称是"QuickEMUlator",意思是“快速模拟器”。这个名字反映了它的核心功能,即快速模拟不同的计算机架构和硬件环境,用于软件开发、调试和虚拟化等用途。功能QEMU是一个开源的硬件虚拟化工具,具有以下功能:处理器仿真:支持多种架构的CPU模拟,如RISC-V......
  • LeetCode题集-5 - 最长回文子串(一)
    题目:给你一个字符串 s,找到 s 中最长的回文子串。这一题作为中等难度,常规解法对于大多数人应该都没有难度。但是其中也有超难的解决办法,下面我们就一起由易到难,循序渐进地来解这道题。01、暴力破解法对于大多数题目来说,在不考虑性能的情况下,暴力破解法常常是最符合人的思维......
  • Apollo功能及原理详解
    前言公司里面使用的配置中心是携程开源的Apollo,之前我只使用过Nacos,遂记录一下学习过程。Apollo工作原理模块介绍上图就是Apollo的总体设计,从下往上挨个分析:ConfigDB用于存储各种配置ConfigService提供配置的读取、推送等功能,服务对象是Apollo客户端,多实例,需要注册到Eure......
  • Day01
    Markdown学习标题三级标题四级标题字体Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!引用选择狂神说java,走上人生巅峰分割线图片超链接点击跳转链接列表abcabc表格名称性别生日张三男1997.1......
  • 9.4 为分析4种化肥和3个小麦品种对小麦产量的影响,把一块试验田等分成36小块,对种子和化
    importpandasaspdimportstatsmodels.apiassmfromstatsmodels.formula.apiimportolsfromstatsmodels.stats.anovaimportanova_lmfile_path='9.4.xlsx'df=pd.read_excel(file_path,header=0,index_col=0)defsplit_to_float_list(s):try:re......
  • 构建智慧基石:在线创建AI知识库的全面指南
    在知识密集型时代,高效管理并利用知识资源是企业持续创新与发展的关键。构建AI知识库,不仅能够实现知识的快速检索与分享,还能通过智能推荐,促进知识的深度应用。本文将详细介绍如何在线创建AI知识库,并特别提及helplook工具在此过程中的重要作用。一、明确需求与目标首先,明确知识库......
  • springcloud eureka原理和机制
    公司的注册中心使用的是Eureka,之前使用过ZooKeeper,大致原理应该差不多,具体细节需要进一步学习,正好之前在腾讯云开发者社区看到一篇讲得很不错的文章,转载过来方便查看。简介在微服务架构下,服务端环境通常包含多个服务,同时每个服务也是一个无状态的多实例集群。这些服务和实例一般......
  • 专升本计算机——计算机基础知识测试
    一、选择题1.关于计算机的发展及基本知识,不正确的是( )。A.计算机正朝着多极化的方向发展。B.从计算机诞生至今,计算机所采用的电子器件依次是:电子管、晶体管、中小规模集成电路和大、超大规模集成电路。C.世界上第一台电子计算机就采用了二进制来表示数据。D.智能计算......
  • 【进击的测试圈】—— 一起挑战最牛逼的Bug,突破技术极限!
    ......