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 ...
随机推荐
- prometheus Histogram 统计原理
大家好,我是蓝胖子,书接上文,我在prometheus描点原理那一篇文章里,留了一个思考题: 我们通常会用到histogram_quantile去计算服务接口时间的耗时情况. histogram_qu ...
- sensor有点意思之RCCB传感器
1.RCCB sensor 无意中看到一种特殊规格的传感器,RCCB (Red-Clear-Clear-Blue)sensor,第一次听到这个名词,咱不知道就查一查,检索到RCCB sensor是一种 ...
- 论文翻译: FREEVC:朝着高质量、无文本、单次转换声音的目标迈进
原文:FREEVC: TOWARDS HIGH-QUALITY TEXT-FREE ONE-SHOT VOICE CONVERSION 原文地址:https://ieeexplore.ieee.org ...
- 关于 async 和 await 两个关键字(C#)【并发编程系列】
〇.前言 对于 async 和 await 两个关键字,对于一线开发人员再熟悉不过了,到处都是它们的身影. 从 C# 5.0 时代引入 async 和 await 关键字,我们使用 async 修饰符 ...
- 2021-7-8 VUE的简易表单提交
<!DOCTYPE html> <html> <head> <title> </title> <style type="te ...
- Feign自定义重试策略及超时时间
背景 feign可以配置重试策略及超时时间,但是无法根据业务场景动态的设置.可能会引起接口幂等,无效重试资源耗费,大数据量耗时操作报超时异常等问题.所以需要更细粒度的重试策略及超时时间配置. 自定义重 ...
- 趣图|代码重构前vs重构后
前言 很多程序员对自己写的代码平时很随心所欲,但当有一天让他维护他人的代码,他就会抓狂,很容易激发他体内重构的瘾.(大多数程序员审阅完别人代码后,先会忍不住吐槽一番,然后会忍不住想重构一把,) 在我看 ...
- 基于weave实现docker跨主机网络通信
前言 IP: 192.168.0.10 192.168.0.11 系统版本:centos 7 weave版本:2.8.1,下载地址:https://git.io/weave docker版本:18.0 ...
- 何时使用MongoDB而不是MySql
什么是 MySQL 和 MongoDB MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统.MySQL 是一个关系数据库系统,以结构化表格格式存储数据.相比之下,MongoDB ...
- [Lua][Love Engine] 有效碰撞处理の类别与位掩码 | fixture:setFilterData
有效的碰撞处理 只用IF判断 假设在一个物理世界,不希望两个同类实体发生碰撞,那么 local begin_contact_callback = function(fixture_a, fixture ...