一、ansible简介

运维工具种类众多,按其有无agent端可分为两类,agent类有puppet,func等,agentless类有ansible,fabric;agentless类无agent端,是基于ssh实现;可以说两类工具各有优缺点。
Ansible是一个强大的自动化运维管理工具,基于Python语言实现,由Jinja、Paramiko和PyYAML三个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等),ansible是模块化的,调用特定的模块以完成特定的任务,支持自定义模块;同时部署简单,可主从,支持playbook,具有幂等性。
ansible架构图

ansible各组件说明

  1. Ansible:核心程序
  2. Host Inventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以是静态的或者是使用Cobbler和AWS EC2的外部inventory脚本
  3. Playbooks:Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.如果 Ansible 模块你是工作室中的工具,那么 playbooks 就是你设置的方案计划.
  4. Custom Modules:自定义模块
  5. Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用核心模块,然后指明Host Inventory中的主机,就可以完成管理主机
  6. Connection Plugins:连接插件,Ansible和Host通信使用

二、ansible部署

1、ansible运行前提-公钥推送

        #ssh互免密:将管理端的公钥发送到所有被管理端ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.92.11ssh 192.168.92.11 ‘ifconfig’

2、安装ansible
ansible已经被收录进epel源,直接yum安装即可

yum install ansible -y

3、配置文件
ansible的配置文件主要是 /etc/ansible/ansible.cfg和/etc/ansible/hosts,ansible.cfg是ansible的配置文件,hosts是被管理的主机。
在hosts中加入被管理的主机组

[test]
192.168.92.11     

三、ansible常用模块

1、ping:测试主机连通性,回复pong表示成功

ansible all -m ping

2、user与group:创建用户与组,创建用户需在设置密码
常用参数:

home:指定用户的家目录,需要与createhome配合使用。
groups:指定用户的属组。
uid:指定uid。
gid:指定gid
password:指定用户的密码。
name:指定用户名。
createhome:是否创建家目录 yes|no。
system:是否为系统用户。
remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r。
state:是创建还是删除。(present,absent)
shell:指定用户的shell环境。
generate_ssh_key:是否为相关用户生成SSH密钥。 这不会覆盖现有的SSH密钥。
ssh_key_bits:可选择指定要创建的SSH密钥中的位数。
ssh_key_passphrase:设置SSH密钥的密码。 如果没有提供密码,SSH密钥将默认没有密码。
ssh_key_file:指定SSH密钥文件名(可选)。 如果这是一个相对的文件名,那么它将是相对于用户的主目录。
ssh_key_type:指定要生成的SSH密钥的类型(可选)。 可用的SSH密钥类型将取决于目标主机上的实现。

例1:创建redhat用户

ansible all -m user -a 'name=redhat state=present'

例2:为创建的用户设置密码

ansible all -m shell -a 'echo redhat|passwd --stdin redhat'

例2:删除用户

ansible all -m user -a 'name=redhat state=absent'


3、cron:创建删除修改计划任务(使用name识别计划任务)

常用参数:

minute:指定计划任务中的分钟hour:指定计划任务中的小时day:指定计划任务中的天month:指定计划任务中的月weekday:指定计划任务中的周special_time:计划任务的时间设定格式为 @reboot 或者@hourly。@reboot 表示重启时执行,@hourly 表示每小时执行一次,相当于设置成”0 0 * * *” ,这种@开头的时间设定格式则需要使用 special_time 参数进行设置,special_time 参数的可用值有 reboot(重启后)、yearly(每年)、annually(每年,与yearly相同)、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时),在未设置时间单位时special_time默认每秒执行,所以使用此参数需要设置好时间单位user:指定当前计划任务属于哪个用户job:指定计划任务需要执行的命令name:指定计划任务的名称,名称具有唯一性,创建删除修改操作都依靠名称来唯一标识state:再根据名称删除计划任务时,将state的值设置为absentdisabled:根据名称关闭计划任务,需要指定任务的名称(name),时间(hour…)以及命令(job)backup:如果设置此参数为yes时,那么当修改或删除对应计划任务时,会先备份在执行相应操作,cron 模块会在远程主机的 /tmp 目录下创建备份文件,以 crontab 开头并且随机加入一些字符,具体的备份文件名称会在返回信息的 backup_file 字段中看到,推荐将此此参数设置为 yes。

例1:每隔10分钟更新下时间

ansible all -m cron -a 'name="sync time for ntpserver" minute="*/10" job="/sbin/ntpdata 192.168.0.1 &> /dev/null"'

例2:删除任务

ansible all -m cron -a 'name="sync time for ntpserver" state=absent'

4、copy:文件复制或文件推送模块
常用参数:

    src:被复制到远程主机的本地对象文件或者文件夹,可以是绝对路径,也可以是相对路径。dest:被复制到远程主机的本地对象文件或者文件夹mode:复制对象的设定权限backup:在文件存在的时候可以选择覆盖之前,将源文件备份.设定值:yes/no 缺省为yesforce:是否强制覆盖.设定值:yes/no 缺省为noowner:修改被复制到远程主机的本地对象文件或者文件夹的属主group:修改被复制到远程主机的本地对象文件或者文件夹的属组

例1:复制文件到远程主机

ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.tmp mode=600'

5、file:设置文件属性
常用参数:

    path:必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以src:当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源。force:当state设置为link,force设置为yes时,表示强制创建链接文件;有三种情况分别是:情况一:当要创建的链接文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。情况二:当要创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,会将同名文件覆盖为链接文件,相当于删除同名文件,创建链接文件。情况三:当要创建链接文件的目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。owner:指定被操作文件的属主,属主必须存在,否则报错group:指定被操作文件的属组,属组必须存在,否则报错mode:设定被操作文件的权限recurse:操作目录时,recurse设置为yes,可以递归目录中文件的属性state:state设置为directory时,与path结合就可以操作目录,state设置为touch时,可以操作文件,state设置为link时,可以创建软连接,将state创建为hard时,可以创建硬链接,将state创建为absent时,删除目标。

例1:创建目录

ansible all -m file -a 'path=/tmp/testdir state=directory'

例2:创建文件

ansible all -m file -a 'path=/tmp/testfile state=touch mode=600'

例3:创建软链

ansible all -m file -a 'path=/tmp/testlink state=link src=/etc/fstab'

6、service:管理远程主机的服务,想要管理远程主机中的某个服务,那么这个服务必须能被 BSD init, OpenRC, SysV, Solaris SMF, systemd, upstart 中的任意一种所管理,否则 service 模块也无法管理远程主机的对应服务。
常用参数:

    name:指定需要管理的服务state:state的值有started、stopped、restarted、reloaded,用于指定服务的状态enabled:指定是否将服务开机启动

例1:开启httpd服务并开机启动

ansible all -m service -a 'name=httpd state=started enabled=yes'

例2:关闭httpd服务并取消开机启动

ansible all -m service -a 'name=httpd state=stopped enabled=no'

7、yum:管理红帽系列远程主机的程序包,前提是远程主机配置好yum源
常用参数:

    conf_file:设定远程yum执行时所依赖的yum配置文件disable_gpg_check:在安装包前检查包,只会影响state参数为present或者latest的时候disablerepo:不启用某个源enablerepo:启用某个源name:要进行操作的软件包的名字,默认最新的程序包,指明要安装的程序包,可以带上版本号,也可以传递一个url或者一个本地的rpm包的路径 state:state的值有present,installed,removed,absent,latest,默认是present或installed,都表示安装;absent和removed表示卸载,latest表示安装最新版本

例1:安装nginx

ansible all -m yum -a 'name=nginx state=latest'


8、shell:在被管理主机上执行命令,与command不同的是,shell在远程主机执行命令时,会用远程主机的/bin/bash来处理

常用参数:

    free_from:指定需要在远程主机上执行的命令chdir:指定一个目录,在执行命令时,先cd到chdir指定的目录creates:当指定的文件存在时,不执行命令removes:指定的文件不存在时,跳过执行命令步骤warn:如果执行的命令报错,warn值为false时,忽略报错信息executable:更改用于执行命令的shell,,默认为bash,要修改必须指定绝对路径

例1:为创建的用户设置密码

ansible all -m shell -a 'echo redhat|passwd --stdin redhat'

9、script:将本地脚本传输到远程节点后运行
常用参数:

    free_from:指定需要在远程主机上执行的命令chdir:指定一个目录,在执行命令时,先cd到chdir指定的目录creates:当指定的文件存在时,不执行命令removes:指定的文件不存在时,跳过执行命令步骤executable:更改用于执行命令的shell,,默认为bash,要修改必须指定绝对路径

例1:执行脚本

ansible all -m script -a '/root/test.sh'

10、setup:从远程主机收集facts
每个被管理节点在接收并运行管理命令之前,会将自己主机相关信息,如操作系统版本,IP地址等报告给远程的ansible主机

ansible all -m setup

获取到的常用数据:

    ansible_all_ipv4_addresses:仅显示ipv4的信息ansible_devices:仅显示磁盘设备信息ansible_distribution:显示是什么系统,例:centos,suse等ansible_distribution_major_version:显示是系统主版本ansible_distribution_version:仅显示系统版本ansible_machine:显示系统类型,例:32位,还是64位ansible_eth0:仅显示eth0的信息ansible_hostname:仅显示主机名ansible_kernel:仅显示内核版本ansible_lvm:显示lvm相关信息ansible_memtotal_mb:显示系统总内存ansible_memfree_mb:显示可用系统内存ansible_memory_mb:详细显示内存情况ansible_swaptotal_mb:显示总的swap内存ansible_swapfree_mb:显示swap内存的可用内存ansible_mounts:显示系统磁盘挂载情况ansible_processor:显示cpu个数(具体显示每个cpu的型号)ansible_processor_vcpus:显示cpu个数(只显示总的个数)ansible_python_version:显示python版本

11、command:命令模块,默认模块,用于在远程执行命令

例1:取时间

ansible all -a 'data'

转载于:https://blog.51cto.com/jiayimeng/2141006

运维自动化-ansible相关推荐

  1. 运维自动化------ansible搭建

    运维自动化发展历程及技术应用 IaaS基础设施即服务(相当于卖硬件) ,PaaS平台即服务(卖操作系统),SaaS软件即服务(卖软件) 企业实际应用场景分析 灰度环境(生产环境的一部分) 功能:在全量 ...

  2. 运维自动化—ansible的使用

    一.ansible的介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批 ...

  3. 运维自动化----Ansible

    学习目标: 掌握ansible的架构.搭建和实操 学习内容: 1.ansible软件架构介绍 ansible是一个同时管理多个远程主机的软件,必须是任意可以通过ssh登录的机器,因此ansible可以 ...

  4. 自动化运维工具----ansible

    自动化运维工具----ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能 ...

  5. 自动化运维工具ansible(安装与模块介绍)

    自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...

  6. 运维自动化之ANSIBLE

    成功不易,加倍努力! 运维自动化之ANSIBLE 本章内容 1 自动化运维应用场景 1.1 云计算运维工程师核心职能 1.2 运维职业发展路线 1.3 企业实际应用场景分析 1.3.1 Dev开发环境 ...

  7. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...

  8. 运维自动化之---ansilbe运维自动化和ansible架构介绍(1)

    运维自动化的发展历程 1.自动化运维应用场景 1.1云计算运维工程师核心职能 运维相关的工具 Podman是用来替代docker的工具 1.2 运维职业的发展路线 目标::一切皆自动化 1.3 企业实 ...

  9. 自动化运维-Ansible 运维自动化 ( 配置管理工具 )

    当下有许多的运维自动化工具( 配置管理 ),例如:Ansible.SaltStack.Puppet.Fabric 等. Ansible 一种集成 IT 系统的配置管理.应用部署.执行特定任务的开源平台 ...

最新文章

  1. python paramiko包 ssh报错No existing session 解决方法
  2. python获取电脑硬件信息_Python实现的读取电脑硬件信息功能示例
  3. java检测tomcat宕机_Tomcat意外宕机分析
  4. 观点:我们为什么需要威胁情报?
  5. 女神节爆猛料!. NET程序员男女比例公布!
  6. OpenCV图像分割-watershed
  7. Python二级笔记(6)
  8. (转)LUA与python根本就不具有可比性
  9. python中for循环和while循环else语句的执行过程和陷阱
  10. 怎么让jsp中的按钮置灰不能使用_拆解按钮规范
  11. 【预测模型-RBF】基于径向基神经网络实现数据分类附matlab代码
  12. ubuntu安装rtx
  13. [流媒体服务器搭建] EasyDarwin服务器搭建及客户端推流完整示例
  14. python libusb_使用python开发usb的两种方式(windriver与pyusb)
  15. 人脸关键点检测 face keypoint detect
  16. 贝索斯要卸任 亚马逊换CEO!!!
  17. 【脚本工具】QQ个人数据管理方法与脚本
  18. 【睡服】自动化面试官,就用2020年最全的自动化测试面试题及答案
  19. 抖音素材哪里收集_抖音素材哪里找?最全攻略来了
  20. Private Set Intersection(PSI)

热门文章

  1. shell 脚本实战笔记(7)--集群网络相关知识和环境搭建
  2. ios笔记一 追加数据
  3. 修改 tomcat 初始 ROOT 的方法
  4. Koding VM 配置nginx 小记
  5. hdu 1709 (母函数,有些特殊)
  6. Visual Studio 2012正式版官方下载地址
  7. DataGrid分页(1)
  8. 您的博文被删除了(1)
  9. 问题六十八:着色模型(shading model)(1)——反射模型(reflection model)(1)——概述
  10. 什么是数据可视化分析平台