1、ansible概念:
1)ansible和saltstck是目前互联网IT运维人员使用最多的自动化运维管理工具,主要用于对批量(并行)Linux服务器:安装、部署、配置、指令操作、任务计划、参数调整、优化等。
2)ansible是基于python语言编写的,只要在一台普通服务器安装即可,无需再客户端安装agent插件,ansible服务端是如何进行链接呢, 主要是通过SSH协议,每台Linux服务器都会安装SSH服务。
3)ansible的工作原理:
在ansible服务端,通过ansible程序读取本地hostsIP列表(提前配置客户端的IP),通过SSH协议(用户名和密码、key),同时调用本地各个模块(实现不同功能),去连接客户端服务器,并且向客户端服务器发送指令操作,客户端最终执行指令,会将处理的数据返回给ansible服务端。

4)ansible自动化运维管理工具优点:
  • 轻量级,更新时,只需要在操作机上进行一次更新即可;
  • 采用SSH协议;
  • 不需要去客户端安装agent;
  • 批量任务执行可以写成脚本,而且不用分发到远程端就可以执行;
  • 使用python编写的,维护更简单;
  • 支持sudo普通用户命令;
  • 去中心化管理。
 
5)默认ansible管理客户端,会通过SSH协议,使用-用户名、密码去客户端执行命令,如果不想输入客户端的用户名和密码,可以做免密钥,操作方法:
#在管理端(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登录客户端,第一次输入密码,第二次无需输入客户端密码:(如下图)

2、ansible安装部署:
ansible可以在Linux、BSD、Mac OSX等平台,对python环境的版本最低要求为python2.6以上,如果操作系统python软件版本为2.4,需要升级方可使用ansible工具。
Red Hat、Centos操作系统可以直接基于YUM工具自动安装ansible,centos6.x或者centos7.x安装前,需先安装epel扩展源,代码如下:
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
ansible工具默认主目录为:/etc/ansible/,其中hosts文件为管理及器的IP或者主机名列表,ansible.cfg为ansible主配置文件,roles为角色或者插件路径,默认该目录为空,如图所示:

ansible远程批量管理,其中执行命令是通过Ad-Hoc来完成,也即点对点单条执行命令,能够快速执行,而且不需要保存执行的命令。默认hosts文件配置主机列表,可以配置分组,可以定义各种IP及规则,hosts列表默认配置如下图所示:(可以备份一份或者将其删除,添加自己客户端的IP)

ansible基于多模块管理,常用的ansible工具管理模块包括:command、shell、script、yum、copy、file、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy等。
 
可以使用ansible-doc -l|more查看ansible支持的模块,也可以查看每个模块的帮助文档,ansible-doc module_name,下图所示:

3、ansible工具参数详解:
基于ansible自动化运维工具管理客户端实例操作,由于ansible管理远程服务器基于SSH,在登录远程服务器执行命令时需要远程服务器的用户名和密码,也可以加入-k参数手动输入密码或者基于ssh-keygen生成免密钥。
ansible自动化批量管理工具主要参数如下:
-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软件版本信息。
 
4、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 command模块远程执行data命令:
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 copy模块操作,src表示源文件,dest表示目标目录或者文件,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 yum模块操作,name表示需要安装的软件名称,state表示状态,常见state=installed表示安装软件:
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 file模块操作, path表示目录的名称和路径,state=directort表示创建目录:
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 user模块操作,name表示用户名称,home表示其家目录:
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 cron模块操作,基于cron,创建crontab任务计划:
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 synchronize模块操作,src源目录、dest目标目录:
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 shell模块操作,-m shell指定模块为shell,远程执行shell脚本,远程执行脚本也可采用script模块。并把执行结果追加至客户端服务器/tmp/var.log文件:
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 service模块操作,远程重启httpd服务:
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平台的更多相关文章

  1. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...

  2. CentOS6.7下Ansible部署

    Ansible是一种集成IT系统的配置管理, 应用部署, 执行特定任务的开源平台. 它基于Python语言实现, 部署只需在主控端部署Ansible环境, 被控端无需安装代理工具, 只需打开SSH, ...

  3. ansible的安装部署及简单应用

    Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平台由 Mi ...

  4. 1、Ansible简介及简单安装、使用

    参考Ansible权威指南:https://ansible-tran.readthedocs.io/en/latest/index.html 以下内容学习自马哥教育 Ansible: 运维工作:系统安 ...

  5. Ansible 手册系列 一(介绍)

    一 介绍 Ansible 是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具 Chef,Puppet,Saltstack.Ansible 是通过 Python 语言开发.Ansible 平 ...

  6. 使用 Ansible 管理 MySQL 复制

    Ansible 是一个新兴的 IT 自动化工具.本文将介绍如何通过 Ansible 配置及管理 MySQL 主.从复制环境,实现部署过程自动化,体验 Ansible 简单快速带来的快感. 简介: An ...

  7. 阿里巴巴 Kubernetes 能力再获 CNCF 认可 | 云原生生态周报 Vol. 32

    作者 | 丁海洋  陈有坤 李鹏  孙健波 业界要闻 阿里巴巴 Kubernetes 技术能力再获 CNCF 认可 CNCF 官网发布博文<Demystifying Kubernetes as ...

  8. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

  9. Flask Ansible自动化平台搭建(持续更新)

    一:简介 使用Ansible + Flask + Celery搭建web平台. 目录结构 . ├── ansible_api │   ├── ansible_playbook_inventory.py ...

  10. 集中化管理平台 — Ansible 详解

    # Ansible 简介 Ansible 类似于Saltstack,是一种集成IT系统的配置管理.应用部署.执行特定任务的开源平台.Ansible基于Python语言实现,由Paramiko和PyYA ...

随机推荐

  1. 现代C++(Modern C++)基本用法实践:三、移动语义

    概述 移动 移动(move)语义C++引入了一种新的内存优化,以避免不必要的拷贝.在构造或者赋值的时候,如果实参是右值(或者左值由std::move转换成右值),便会匹配移动语义的函数调用如下述举例的 ...

  2. SpringBoot 使用 Sa-Token 实现账号封禁、分类封禁、阶梯封禁

    一.需求分析 之前的章节中,我们学习了 踢人下线 和 强制注销 功能,用于清退违规账号.在部分场景下,我们还需要将其 账号封禁,以防止其再次登录. Sa-Token 是一个轻量级 java 权限认证框 ...

  3. 从0开发属于自己的nestjs框架的mini 版 —— ioc篇

    如今,nodejs的框架也是层出不穷,偏向向底层的有 express.koa. Fastify,偏向于上层有阿里的 Egg.thinkjs .还有国外的 nestjs. 在这里我更喜欢 nestjs, ...

  4. .NET Core多线程 (2) 异步 - 上

    去年换工作时系统复习了一下.NET Core多线程相关专题,学习了一线码农老哥的<.NET 5多线程编程实战>课程,我将复习的知识进行了总结形成本专题. 本篇,我们来复习一下异步的相关知识 ...

  5. 形象谈JVM-第一章-认识JVM

    对jvm的历史不做过多介绍,感兴趣的同学可以去自行搜索. 我们直接以HotSpot VM(Virtual Machine)举例. why  为什么要有虚拟机? 举一个形象的例子:手机现在几乎是人手一台 ...

  6. 无界AI绘画基础教程,和Midjourney以及Stable Diffusion哪个更好用?

    本教程收集于:AIGC从入门到精通教程汇总 简单的总结 Midjourney,Stable Diffusion,无界AI的区别? Midjourney,收费,上手容易,做出来高精度的图需要自己掌握好咒 ...

  7. 如何将现有的`Blazor`项目的主题切换写的更好看?

    如何将现有的Blazor项目的主题切换写的更好看? 在现有的系统当中,我们的主题切换会比较生硬,下面我们将基于Masa Blazor实现好看的扩散主题切换的样式效果. 安装MASA.Template ...

  8. python实现图片提取文字功能

    安装需要的包 # pip install pytesseract # pip install Pillow # 安装OCR环境 # 下载exe安装文件 # https://digi.bib.uni-m ...

  9. Journey -「CQOI 2021」

    Day -1 Thu. & Fri. 恰逢学校运动会,于是向班主任申请了不去,然后就在机房坐着.不美好的事情可能就是文化课老师还留了这两天的作业,不过-> 一旦放弃了作业,什么都好说了呢 ...

  10. Note -「Polynomial」

    Part. 1 FFT Part. 1-1 Main 对于一个 \(n\) 次多项式 \(F(x)=\sum_{i=0}^{n}a_{i}x^{i}\),在平面直角坐标系中可以由 \(n+1\) 个点 ...