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 ...
随机推荐
- VSCode中打开NodeJS项目自动切换对应版本的配置
这几年搞了不少静态站点,有的是Hexo的,有的是VuePress的.由于不同的主题对于NodeJS的版本要求不同,所以本机上不少NodeJS的版本. 关于如何管理多个NodeJS版本,很早之前就写过用 ...
- opensbi入门
OpenSBI 入门 声明 本文为本人原创,未经允许,严禁转载. FW_JUMP FW_PAYLOAD FW_DYNAMIC FW_JUMP OpenSBI 带跳转地址的固件(FW_JUMP)是一种仅 ...
- 正确处理 CSV 文件的引号和逗号
CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便. 作为开发,我们经常面临导数据的问题,特别是后台系统,产品或者运营的同事常常会提 ...
- Mysql基础8-多表查询
一.多表关系 一对多或者多对一 案例:部门与员工的关系 关系:一个部门对应多个员工,一个员工对应一个部门(不考虑跨部门的特殊情况) 实现:在多的一方建立外键,指向一的一方的主键,这里员工表是多的的一方 ...
- 王道oj/problem7(判断数字是否为对称数)
网址:http://oj.lgwenda.com/problem/7 思路:用temp保存原数: 不断对原数进行/10及取余运算,并加到num2中: 最后判断num2是否与temp相等. 代码: #d ...
- TCP如何实现可靠传输、流量控制、拥塞控制
上一篇文章中讲述了TCP首部的存储的数据,这一篇来聊聊这些数据帮助TCP实现一些特性. 可靠传输 TCP传输会保障数据的可靠和完整,如果数据传输过程丢失了,会重新传输. 保障的第一种协议方式是 停止等 ...
- [django]路由变量与正则表达式
示例: urlpatterns = [ path('detail.<int:id>.html', detailView, name='detail'), ] 路由变量的类型 示例路由配置了 ...
- 简述redis的单线程模式
前言 在redis版本6之前,网络IO和键值对读写都是由一个线程来完成的.而redis的其他功能,比如持久化.异步删除.集群数据同步等,是由其他线程完成的. 为什么采用单线程 多线程有助于提升吞吐率( ...
- [golang]标准库-json
前言 json数据格式通常包含两个操作:序列化(把对象转换成JSON数据类型)和反序列化(把JSON数据类型转换成对象),二者操作互逆. Go语言中相关标准库为encoding/json. 示例代码 ...
- 利用msfvenom生成木马
msfvenom命令行选项如下: 英文原版: 中文版: Options: -p, --payload <payload> 指定需要使用的payload(攻击荷载).如果需要使用自定义的pa ...