ansible运维自动化

1 环境准备

主机IP192.168.199.149(主配置)

ip1:192.168.199.150

IP2:192.168.199.151

下载ansible:yum -y install epel-release
yum install ansible

2 ansilble介绍

• 模块化:调用特定的模块,完成特定的任务
•Paramiko (Python 对 ssh 的实现 ) , PyYaml , Jinja2( 模板语言 ) 三个关键模块
• 支持自定义模块,可使用任何编程语言写模块
• 基于 Python 语言实现
• 部署简单,基于 python 和 SSH( 默认已安装 ) , agentless ,无需代理不依赖 KPI (无需
SSL )
• 安全,基于 OpenSSH
• 幂等性:一个任务执行 1 遍和执行 n 遍效果一样,不因重复执行带来意外情况
• 支持 playbook 编排任务, YAML 格式,编排任务,支持丰富的数据结构
• 较强大的多层解决方案 role

Ansible工作原理:

把我们执行的命令翻译为 shell 命令,通过 openssh 拷贝到目标主
机 /root/.ansible/tmp/ 下,然后再执行,执行完成后删除 tmp 文件。

ansible命令执行过程

1 . 加载自己的配置文件 默认 /etc/ansible/ansible.cfg
2 . 加载自己对应的模块文件,如 command
3 . 通过 ansible 将模块或命令生成对应的临时 py 文件,
并将该文件传输至远程服务器的对应执行用户
$HOME /.ansible/tmp/ansible-tmp- 数字 /XXX.PY 文件
4 . 给文件 + x 执行
5 . 执行并返回结果
6 . 删除临时 py 文件, sleep 0 退出
执行状态:
绿色:执行成功并且不需要做改变的操作
黄色:执行成功并且对目标主机做变更
红色:执行失败

3 模块介绍

运行ansible前先把要目标主机的IP添加到/etc/ansible/hosts中,可以分开加,也可以添加到一个组中,模块名自己命名,执行组名则表示执行所有ip

执行ssh-keygen 把密钥传送到目标主机

ssh-copy-id 192.168.199.150

ssh-copy-id 192.168.199.151

ansible格式为 ansible -m [模块名] -a[模块] [组名]

commond模块(默认模块)

ansible -m command -a 'ls' test 分别在150,151主机上执行ls命令,并将结果显示出来

ansible -m command -a 'echo $HOSTNAME' test 打印test组的用户名

commond模块不支持正则表达式,不支持变量

shell模块

和commond类似,但是支持正则表达式

ansible all -m shell -a 'getenforce' 获取selinux状态

ansible -m shell -a "awk '/db/{print}' /opt/a.txt" test 显示目标主机/opt/a.txt中含有db的行

copy模块

复制本地主机的文件复制到远程主机,src:本地文件路径,dest:目标路径,mode:设置权限,backup:备份源文件

ansible -m copy -a "src=/root/b.txt dest=/opt/" test 把本地b.txt复制到目标主机

fetch模块

从远程主机提取文件到本地,不支持目录,可以先打包,再提取文件

file模块

创建文件,设置文件的权限

path: 要管理的文件路径 (强制添加)
recurse: 递归 , 文件夹要用递归
src: 创建硬链接 , 软链接时 , 指定源目标 , 配合 'state=link' 'state=hard' 设置软链接 , 硬链接
ansible -m file -a "path=/opt/d.txt state=touch" test 在目标主机路径下创建文件

ansible -m file -a "path=/opt/test state=directory" test 在目标主机路径下创建目录

ansible -m file -a "path=/opt/test owner=rsync mode=755" test 目标主机下修改目录的权限和属主

unarchive模块

解包解压缩
1,将 ansible 主机上的压缩包传到远程主机后解压缩至特定目录,设置 copy=yes.
2 、将远程主机上的某个压缩包解压缩到指定路径下,设置 copy=no
src : 源路径,可以是 ansible 主机上的路径,也可以是远程主机上的路径,
如果是远程主机上的路径,则需要设 置 copy = no
dest :远程主机上的目标路径
mode :设置解压缩后的文件权限
ansible websrvs -m unarchive -a 'src=foo.tgz dest=/var/lib/foo'

默认 copy 为 yes , 将本机目录文件解压到目标主机对应目录下

archive****模块

Archive :打包压缩,将远程主机目录打包
path: 指定路径 dest: 指定目标文件 format: 指定打包格式 owner: 指定所属者
mode: 设置权限

Hostname****模块

Hostname :管理主机名

Cron****模块

cron 模块主要用于添加、删除、更新操作系统的 crontab 任务计划
ansible websrvs -m unarchive -a
'src=https://example.com/example.zip dest=/data copy=no' > ansible all -m archive -a 'path=/etc/sysconfig

相关推荐
七夜zippoe9 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64810 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满10 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠11 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90311 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技12 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀12 小时前
Linux环境变量
linux·运维·服务器
zzzsde12 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º14 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~14 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化