ansible平台
- 轻量级,更新时,只需要在操作机上进行一次更新即可;
- 采用SSH协议;
- 不需要去客户端安装agent;
- 批量任务执行可以写成脚本,而且不用分发到远程端就可以执行;
- 使用python编写的,维护更简单;
- 支持sudo普通用户命令;
- 去中心化管理。
#在管理端(ansible宿主机|服务端)生成公钥和私钥;
ssh-keygen (一直回车)
#生成的公钥和私钥位置;
/root/.ssh/id_rsa (私钥)
/root/.ssh/id_rsa.pub (公钥)
#将生成的公钥拷贝至远程客户端;
ssh-copy-id -i /root/.ssh/rsa.pub 192.168.1.X
将id_ras.pub文件内容拷贝客户端该文件中:/root/.ssh/authorized_keys
#从服务端SSH登录客户端,第一次输入密码,第二次无需输入客户端密码:(如下图)
rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install epel-release -y
yum install ansible -y
-v,–verbose # 打印详细模式;
-i PATH,–inventory=PATH #指定host文件路径;
-f NUM,–forks=NUM #指定fork开启同步进程的个数,默认5;
-m NAME,–module-name=NAME #指定module名称,默认模块command;
-a MODULE_ARGS #module模块的参数或者命令;
-k,–ask-pass #输入远程被管理端密码;
–sudo #基于sudo用户执行;
-K,–ask-sudo-pass #提示输入sudo密码与sudo一起使用;
-u USERNAME,–user=USERNAME #指定移动端的执行用户;
-C,–check #测试执行过程,不改变真实内容,相当于预演;
-T TIMEOUT, #执行命令超时时间,默认为10秒;
--version #查看Ansible软件版本信息。
ping:
ansible最基础的模块为ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值为changed、ping:
ansible -k all -m ping
command:
ansible commane模块为默认模块,主要用于执行Linux基础命令,可以执行远程服务器命令、任务执行等操作: 以下为command模块使用详解
chdir #执行命令前,切换到目录;
creates #当该文件存在时,则不执行该步骤;
executable #换用shell环境执行命令;
free form #需要执行的脚本;
removes #当该文件不存在时,则不执行该步骤;
warm #如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。
ansible -k -i /etc/ansible/hosts all -m command -a "date"
ansible command模块远程执行ping命令:
ansible -k all -m command -a "ping -c 1 www.baidu.com"
ansible command模块远程执行df -h命令:
ansible -k all -m command -a "df -h" ansible -k 192.168.1.1* -m command -a "df -h"
copy:
ansible copy模块主要用于文件或者目录拷贝,支持文件、目录、权限、用户组功能:
src #ansible端源文件或者目录,空文件夹不拷贝;
content #用来替代src,用于将指定的文件的内容,拷贝到远程文件内;
dest #客户端目标或者文件,需要绝对路径;
backup #拷贝之前,先备份远程节点上的原始文件;
directory mode #用于拷贝文件夹,新建的文件会被拷贝,而老旧的不会被拷贝;
follow #支持link文件拷贝;
fore #覆盖远程主机不一致的内容;
group #设定远程主机文件夹的组名;
mode #指定远程主机文件及文件的权限;
owner #设定远程主机文件夹的用户名。
ansible -k all -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root'
ansible copy模块操作,content文件内容,dest目标文件,owner指定拥有者:
ansible -k all -m copy -a 'content="Hello World" dest=/tmp/jfedu.txt mode=755 owner=root'
ansible copy模块操作, content文件内容,dest目标文件。owner指定拥有者,backup=yes开始备份:
ansible -k all -m copy -a 'content="Hollo World" dest=/tmp/jfedu.txt backup=yes mode=755 owner=root'
yum:
ansible yum模块主要用于软件的安装、升级、卸载、支持红帽.rpm软件的管理:
con file #设定远程YUM执行时所依赖的YUM配置文件;
disable gpg check #安装软件包之前是否坚持gpg key;
name #需要安装的软件名称,支持软件组件安装;
update cache #安装软件前更新缓存;
enablerepo #指定repo源名称;
skip broken #跳过异常软甲节点;
state #软件包状态,包括:installed、present、latest、absent、removed.
ansible all -k -m yum -a "name=sysstat,screen stata=installed"
ansible yum模块操作,name表示需要安装的软件名称,state表示状态,常见state=installed表示安装软件,diable gpg check=no不检查key:
ansible all -k -m yum -a "name=sysstat,screen stata=diable gpg check=no"
file:
ansible file模块主要用于文件的创建、删除、修改、权限、属性的维护和管理:
src #ansible端源文件或者目录;
follow #支持link文件拷贝;
force #覆盖远程主机不一致的内容;
group #设定远程主机文件夹的组名;
mode #指定远程主机文件及文件夹的权限;
owner #设定远程主机文件夹的用户名;
path #目标路径,也可以用dest,name代替;
state #状态包括:file、link、directory、hard、touch、absent;
attributes #文件或者目录特殊属性。
ansible -k 192.168.* -m file -a "path=/tmp/`date _%F` state=dirctory mode=755"
ansible file模块操作, path表示目录的名称和路径,state=touch表示创建文件:
ansible -k 192.168.* -m file -a "path=/tmp/`date _%F` state=touch mode=755"
user:
ansible user模块主要用于操作系统用户、组、权限、密码等操作,user模块使用详解:
system #默认创建为普通用户,为yes则创建系统用户;
append #添加一个新的组;
commend #新增描述信息;
createhome #给用户创建家目录;
force #用于强制删除用户;
group #创建用户主组;
groups #将用户加入组或者附属组添加;
home #指定用户的家目录;
name #表示状态,是否create、remove、modify;
password #指定用户的密码,此处为加密密码;
remove #删除用户;
shell #设置用户的shell登录环境;
uid #设置用户id;
update password #修改用户密码;
state #用户状态,默认为present表示新建用户。
ansible -k 192.168.1.* -m user -a "name=precious home=/tmp/"
ansible user模块操作,name表示用户名称,home表示其家目录,shell表示启用的登录shell环境:
ansible -k 192.168.1.* -m user -a "name=precious home=/tmp/ shell=/sbin/nologin"
ansible user模块操作,name表示用户名称,state=absent表示删除用户,force表示强制删除:
ansible -k 192.168.1.* -m user -a "name=precious home=/tmp/ state=absent force=yes"
cron:
ansible cron模块主要用于添加、删除更新操作系统Crontab任务计划:
name #任务计划名称;
cron file #替换客户端该用户的任务计划的文件;
minute #分(0-59 , * , */2);
hour #时(0-23 , * , */2);
day #日(1-31 , * , */2);
mouth #月(1-12 , * , */2);
weekday #周(0-6 或 1-7 , * );
jod #任务计划执行的命令,state要等于present;
backup #是否备份之前的任务计划;
user #新建任务计划的用户;
state #指定任务计划present、absent。
ansible -k all -m cron -a "minute=0 hour=0 day=* month=* weekday=* name='Ntpdate server for sync time' job='/usr/sbin/ntpdate 139.224.227.121'"
ansible cron模块操作,基于cron,创建crontab任务计划,backup=yes表示开始备份:
ansible -k all -m cron -a "minute=0 hour=0 day=* month=* weekday=* name='Ntpdate server for sync time' backup=yes job='/usr/sbin/ntpdate pool.ntp.org'"
ansible cron模块操作,基于cron,删除crontab任务计划:
ansible -k all -m cron -a "name='Ntpdate server for sync time' state=absent"
synchronize:
ansible synchronize模块主要用于目录、文件同步,基于rsync命令同步目录:
compress #开启压缩,默认为启用;
archive #是否采用归档模式同步,保证源和目标文件属性一致;
checksum #是否效验;
dirs #以非递归的方式传输目录;
links #同步链接文件;
recursive #是否递归yes/no;
rsync opts #使用rsync 的参数;
copy links #同步的时候是否复制连接;
dalete #删除源中没用而目标存在的文件;
src #源目录及文件;
dest #目标目录及文件;
dest port #目标接收的端口;
rsync path #服务的路径,指定rsync 命令来在远程服务器上运行;
rsync timeout #指定rsync操作的IP超时时间;
set remote user #设置远程用户名;
--exclude=.log #忽略同步.log结尾的文件;
mode #同步的模式,rsync同步的方式PUSH、PULL,默认都是推送push。
ansible all -m synchronize -a 'src=/tmp/ dast=/tmp/'
ansible synchronize模块操作,src源目录、dest目标目录、commpress=yes开启压缩、delete=yes数据一致、rsync_opts同步参数、--exclude排除文件:
ansible -k -m synchronize -a 'src=/tmp/ dest=/tmp/ compress=yes delete=yes rsync_opts=--no-motd,--exclude=.txt'
shell:
ansible shell模块主要用于远程客户端上执行各种shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令:
shdir #执行命令前,切换到目录;
creates #当该文件存在时,则不执行该步骤;
executable #换用shell环境执行命令;
free form #需要执行的脚本;
removes #当该文件不存在时,则不执行该步骤;
warn #如果ansible.cfg中存在告警,如果设定了false,不会警告此行。
ansible -k all -m shell -a "/bin/sh /tmp/variables.sh >>/tmp/var.log"
ansible shell模块操作,远程执行创建目录命令,执行之前切换在/tmp/目录,屏蔽警告信息:
ansible -k all -m shell -a "mkdir -p `date +%F` chdir=/tmp/ state=directory warn=no"
ansible shell模块操作,远程客户端查看HTTP进程是否启动:
ansible -k all -m shell -a "ps -ef|grep http"
ansible shell模块操作,远程查看crontab任务计划:
ansible -k all -m shell -a "crontab -l"
service:
ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等:
enabled #是否开启启动服务;
name #服务名称;
runlevel #服务启动级别;
arguments #服务命令行参数传递;
state #服务操作状态,状态包括started.stoped,restarted,reloaded。
ansible -k all -m service -a "name=httpd state=redtarted"
ansible service模块操作,远程重启网卡服务:
ansible -k all -m service -a "name=network args=ens33 state=restarted"
ansible service模块操作,远程开机启动nfs服务,设置3,5级别自动启动:
ansible -k all -m service -a "name=nfs enabled=yes runlevel=3,5"
ansible平台的更多相关文章
- 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机
目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...
- CentOS6.7下Ansible部署
Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台. 它基于Python语言实现, 部署只需在主控端部署Ansible环境, 被控端无需安装代理工具, 只需打开SSH, ...
- ansible的安装部署及简单应用
Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平台由 Mi ...
- 1、Ansible简介及简单安装、使用
参考Ansible权威指南:https://ansible-tran.readthedocs.io/en/latest/index.html 以下内容学习自马哥教育 Ansible: 运维工作:系统安 ...
- Ansible 手册系列 一(介绍)
一 介绍 Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平 ...
- 使用 Ansible 管理 MySQL 复制
Ansible 是一个新兴的 IT 自动化工具.本文将介绍如何通过 Ansible 配置及管理 MySQL 主.从复制环境,实现部署过程自动化,体验 Ansible 简单快速带来的快感. 简介: An ...
- 阿里巴巴 Kubernetes 能力再获 CNCF 认可 | 云原生生态周报 Vol. 32
作者 | 丁海洋 陈有坤 李鹏 孙健波 业界要闻 阿里巴巴 Kubernetes 技术能力再获 CNCF 认可 CNCF 官网发布博文<Demystifying Kubernetes as ...
- 用Vagrant和Ansible搭建持续交付平台
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- Flask Ansible自动化平台搭建(持续更新)
一:简介 使用Ansible + Flask + Celery搭建web平台. 目录结构 . ├── ansible_api │ ├── ansible_playbook_inventory.py ...
- 集中化管理平台 — Ansible 详解
# Ansible 简介 Ansible 类似于Saltstack,是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台.Ansible基于Python语言实现,由Paramiko和PyYA ...
随机推荐
- 现代C++(Modern C++)基本用法实践:三、移动语义
概述 移动 移动(move)语义C++引入了一种新的内存优化,以避免不必要的拷贝.在构造或者赋值的时候,如果实参是右值(或者左值由std::move转换成右值),便会匹配移动语义的函数调用如下述举例的 ...
- SpringBoot 使用 Sa-Token 实现账号封禁、分类封禁、阶梯封禁
一.需求分析 之前的章节中,我们学习了 踢人下线 和 强制注销 功能,用于清退违规账号.在部分场景下,我们还需要将其 账号封禁,以防止其再次登录. Sa-Token 是一个轻量级 java 权限认证框 ...
- 从0开发属于自己的nestjs框架的mini 版 —— ioc篇
如今,nodejs的框架也是层出不穷,偏向向底层的有 express.koa. Fastify,偏向于上层有阿里的 Egg.thinkjs .还有国外的 nestjs. 在这里我更喜欢 nestjs, ...
- .NET Core多线程 (2) 异步 - 上
去年换工作时系统复习了一下.NET Core多线程相关专题,学习了一线码农老哥的<.NET 5多线程编程实战>课程,我将复习的知识进行了总结形成本专题. 本篇,我们来复习一下异步的相关知识 ...
- 形象谈JVM-第一章-认识JVM
对jvm的历史不做过多介绍,感兴趣的同学可以去自行搜索. 我们直接以HotSpot VM(Virtual Machine)举例. why 为什么要有虚拟机? 举一个形象的例子:手机现在几乎是人手一台 ...
- 无界AI绘画基础教程,和Midjourney以及Stable Diffusion哪个更好用?
本教程收集于:AIGC从入门到精通教程汇总 简单的总结 Midjourney,Stable Diffusion,无界AI的区别? Midjourney,收费,上手容易,做出来高精度的图需要自己掌握好咒 ...
- 如何将现有的`Blazor`项目的主题切换写的更好看?
如何将现有的Blazor项目的主题切换写的更好看? 在现有的系统当中,我们的主题切换会比较生硬,下面我们将基于Masa Blazor实现好看的扩散主题切换的样式效果. 安装MASA.Template ...
- python实现图片提取文字功能
安装需要的包 # pip install pytesseract # pip install Pillow # 安装OCR环境 # 下载exe安装文件 # https://digi.bib.uni-m ...
- Journey -「CQOI 2021」
Day -1 Thu. & Fri. 恰逢学校运动会,于是向班主任申请了不去,然后就在机房坐着.不美好的事情可能就是文化课老师还留了这两天的作业,不过-> 一旦放弃了作业,什么都好说了呢 ...
- Note -「Polynomial」
Part. 1 FFT Part. 1-1 Main 对于一个 \(n\) 次多项式 \(F(x)=\sum_{i=0}^{n}a_{i}x^{i}\),在平面直角坐标系中可以由 \(n+1\) 个点 ...