ansible的概念及基本操作(一)

文章目录

  • 前言
  • [一、Ansible 概述和原理](#一、Ansible 概述和原理)
    • [1.1 ansible概念](#1.1 ansible概念)
    • [1.2 ansible原理](#1.2 ansible原理)
  • 二、ansible基本操作
    • [2.1 环境配置](#2.1 环境配置)
    • [2.2 command模块基本操作](#2.2 command模块基本操作)
    • [2.3 shell 模块](#2.3 shell 模块)
      • [2.4 cron 模块](#2.4 cron 模块)
    • [2.5 user 模块](#2.5 user 模块)
    • [2.6 group 模块](#2.6 group 模块)
    • [2.7 copy 模块](#2.7 copy 模块)
    • [2.9 hostname 模块](#2.9 hostname 模块)
    • [2.10 ping 模块](#2.10 ping 模块)
  • 总结

前言

本文讲述了ansible的基本原理与概念还包括一些基本命令

一、Ansible 概述和原理

1.1 ansible概念

Ansible 是一款面向类 Unix 系统的自由开源配置和自动化工具,由 Python 编写。与 SaltStack、Puppet、Chef 相似,但具有以下优势:

1、无需在被管理节点安装客户端,轻量级。

2、通过 SSH 协议与节点通信。

3、使用 YAML 和 Jinja2 模板语言进行配置和自动化任务编排。

Ansible 特点:

1.部署简单,管理端安装即可,被控端无需操作;

2.默认使用 SSH 协议管理设备;

3.集中化管理,支持主从模式;

4.配置简洁、功能强大、扩展性高;

5.支持 API 和自定义模块,可通过 Python 扩展;

6.Playbook 可实现复杂任务配置和状态管理;

7.对云计算和大数据平台支持良好。

1.2 ansible原理

Ansible 核心组成:

1.Ansible:核心引擎

2.Modules:内置核心模块和自定义模块

3.Plugins:补充模块功能,如连接插件、邮件插件等

4.Playbooks:剧本,定义多任务操作

5.Inventory:主机清单

6.connect Plugins:连接插件

大致原理为:用户通过inventory(主机清单)知道要对谁进行操作,同时还从playbooks(剧本)得知要操作的内容,之后通过connect Plugins进行连接通讯,最后调用modules(模块)进行操作。

二、ansible基本操作

2.1 环境配置

10.0.0.2(用户) ansible

10.0.0.5(操作对象)

10.0.0.9(操作对象)

第一步 关闭防火墙与网络增强服务

systemctl stop firewalld ------------------------------关闭防火墙

setenforce 0 ---------------------------------关闭网络增强服务

第二步 安装ansible(用户)

yum install -y epel-release ------------------------安装epel源

yum install -y ansible ------------------------安装ansible

第三步 配置免密登录(通过公钥的压缩数据与私钥解压数据的匹配)

ssh-keygen -t rsa ------------------------------生成密钥对

sshpass -p "用户密码" ssh-copy-id root@用户ip ------------------------------将私钥发给其他用户

ssh 10.0.0.5 ---------------------------------远程操作10.0.0.5(第一次需要输密码)

第四步 配置组名,ansible映射

vim /etc/ansible/hosts ------------------------------编辑ansible映射

2.2 command模块基本操作

command ------------------意为基本操作

操作格式:ansible 组名/ip -m command -a '命令' ------------------------对组名对应下的所有对应ip的主机或ip对应的主机进行命令操作

例如:

ansible 10.0.0.5 -m command -a 'ls /usr' ------------------------远程操作10.0.0.5对应ip的主机,进行查看usr目录的操作

ansible webserver -m command -a 'cat /etc/passwd' ------------------------远程操作webservers对应ip的主机,进行查看etc目录下的passwd文件的操作

(这里只有10.0.0.5属于webservers组)

ansible all -m command -a '命令' ------------------远程操作所有被操作主机

ansible webservers -m command -a "find /etc/ -name 'passwd'" ------------------查找etc目录下,所有名字为passwd的目录和文件

2.3 shell 模块

shell模块:支持管道和 shell 语句

ansible 10.0.0.5 -m shell -a 'shell脚本语句' ------------------远程操作10.0.0.5执行shell操作

例如:

ansible all -m shell -a "echo (cat /proc/net/dev \| grep ens33 \| awk '{print 2}') " ------------------------------远程输出所有被操作主机ens33网卡的流量接收大小

ansible webservers -m shell -a "find / -name 'home' | xargs ls " ------------------远程操作webservers组下的所有主机,查找根目录下所有名字为home的文件或目录,并查看它所有子目录和文件

2.4 cron 模块

cron模块:支持任务格式

例如:

ansiable 10.0.0.5 -m cron -a 'minute="30" hour="1" job="sh /opt/1.txt" name="1.txt"' ------------------------每周的每天的凌晨1点半执行一次1.txt文件,任务名字为1.txt

ansible 10.0.0.5 -m cron -a 'name=echo state=absent' ------------------------删除任务名为echo的任务

2.5 user 模块

ansible 10.0.0.5 -m user -a 'name=xjy group=wheel' ------------------创建xjy用户,并分配到wheel组

ansible 10.0.0.5 -m user -a 'name=xjy state=absent' ------------------删除用户

2.6 group 模块

ansible 10.0.0.5 -m group -a 'name=xiajinyang gid=5000 system=yes' ------------------创建名字为xiajinyang的组,gid为5000,并加入到系统中

2.7 copy 模块

ansible 10.0.0.5 -m copy -a 'src=/etc/fstab dest=/opt/aabbcc mode=755' ---------------复制etc下的fstab到opt下并且改名为aabbcc,权限为755.

ansible 10.0.0.5 -m copy -a 'src=/etc/passwd dest=/opt/aabbcc mode=755' ------------------------将passwd复制到opt下覆盖掉aabbcc

2.8 file 模块

file 模块:修改文件属性、创建文件

ansible webservers -m file -a 'path=/opt/123456.txt state=touch' ------------------------创建一个文件在opt下,名字为123456.txt

ansible webservers -m file -a 'path=/opt/123456.txt mode=777' ------------------将123456.txt文件权限改为777

2.9 hostname 模块

hostname 模块:主机名操作

ansible webservers -m hostname -a "name=god" ------------------修改webserver组的所有用户的主机名,改为god

2.10 ping 模块

ping 模块:测试网络联通性

ansible all -m ping ------------------------测试所有被操作主机的网络联通性

总结

本文讲述了ansible的基本原理与概念还包括一些基本命令,希望本文内容对大家有所帮助,谢谢观看😜

相关推荐
wewowilling2 小时前
认识微服务
java·运维·微服务·springcloud
玖石书2 小时前
Ubuntu 24.04 UFW 全命令攻略:从入门到端口开放实战
linux·运维·ubuntu
weifont3 小时前
自动化抓取和上架商品:能不动手,就少动手
运维·前端·自动化
拂拉氏4 小时前
【知识讲解】 Linux之动静态库的了解
linux·运维·服务器·动静态库
Mikko75 小时前
Linux 重启后日志没了?进程被 OOM 杀了去哪看?logrotate 之后日志还往旧文件写?三台真机实测日志与性能排查
linux·运维·centos
光依旧5 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
yichengerp6 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
天国梦6 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
信可维7 小时前
自动化操作多平台账号:登录态、双会话与 User Data 的 3 个坑
运维·自动化
龙仔7257 小时前
RustDesk 自建服务器 Key 强校验配置笔记
运维·服务器·笔记