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. GO web学习(三)

    跟着b站https://space.bilibili.com/361469957 杨旭老师学习做的笔记 路由 Controller / Router 角色 main():设置类工作 controlle ...

  2. 我开源了团队内部基于SpringBoot Web快速开发的API脚手架stater

    我们现在使用SpringBoot 做Web 开发已经比之前SprngMvc 那一套强大很多了. 但是 用SpringBoot Web 做API 开发还是不够简洁有一些. 每次Web API常用功能都需 ...

  3. 即构携手智能对讲机品牌Runbo,打造可视化对讲通信系统

    现代通信技术的发展,让信息的传递变得前所未有的便捷.作为双向移动通信工具,对讲机不需要网络支持就可以进行通话,且没有话费产生,尤其适合酒店.物业等使用区域固定.通话频繁的场景. 随着技术的不断迭代,对 ...

  4. Java作业_Day21_

    多线程 一.判断题(T为正确,F为错误),每题1分 1.如果线程死亡,它便不能运行.(T) 2.在Java中,高优先级的可运行线程会抢占低优先级线程.( T) 3.线程可以用yield方法使低优先级的 ...

  5. 全网最详细4W字Flink入门笔记(下)

    本文已收录至Github,推荐阅读 Java随想录 微信公众号:Java随想录 目录 Flink State状态 CheckPoint & SavePoint CheckPoint原理 Sav ...

  6. .NET for Apache Spark 入门演练

    .NET for Apache Spark 入门演练 微软官方文档: .NET for Apache Spark 入门 | Microsoft Learn 注意:由于本次在windows平台下进行演练 ...

  7. 代码随想录算法训练营第二天| LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

    977.有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 文章讲解:https://programmercarl ...

  8. Nginx报错:nginx: [error] OpenEvent("Global\ngx_reload_14944") failed (2: The system cannot find the file specified)

    nginx.exe -s reload  执行报错 错误原因: Nginx 尚未启动导致,执行 start nginx 命令开启Nginx nginx.exe -s reload 至此问题解决

  9. Ubuntu新建Django工程错误:ModuleNotFoundError: No module named 'distutils.core'

    ubuntu18.04 默认没有安装 pip ,需要安装 python3-pip,即可解决 1 sudo apt-get install python3-pip 在shell脚本中输入以下命令: 1 ...

  10. CentOS安装ffmpeg并转码视频为mp4

    前言 现需要将一批avi格式的视频转码为mp4,以下为操作步骤.系统版本为CentOS 7. 如果不安装x264,转码后只有声音,没有视频. 编译安装nasm wget https://www.nas ...