ansible简介

 一、ansible简介
1、Ansible概述。
Ansible是一款开源运维自动化工具,可以实现运维自动化,提高运维工程师的工作效率,减少人为失误
Ansible可以通过本身集成的非常丰富的模块实现各种管理任务,其自带模块数量已超过上千个
Ansible操作非常简单,即使新手也比较容易上手
Ansible提供的功能却非常丰富,在运维领域,几乎可以实现任何事情。
2、Ansible 特点
Ansible自2012年发布以来,很快在全球流行,其特点表现如下:
Ansible 基于python开发,运维工程师对其二次开发相对较容易;
Ansible 拥有丰富的内置模块,基本可以满足一切要求;
管理模式非常简单,一条命令可以影响上千台机器;
无客户端模式设计,底层基于SSH通信;
Ansible发布后也陆续被AWS,Google Cloud Platfrom,Microsoft Azure,Cisco,HP,Mware.Twitter 等大公司接纳并投入使用;
    3、Ansible交互方式
Ansible使用者可以采用多种方式和Ansible交互,目前有四种方式:
CMDB:CMDB系统存储和管理着企业IT架构中的各种配置信息,是构建ITL项目核心工具,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具完成操作者所希望达到的目标。
PUBLIC/PRIVATE方式,Ansible除了丰富的内置模块外。同时提供丰富的API语言接口,如PHP,Python,PERL 等多种流行语言,基于PUBLIC/PRIVATE,Ansible以API调用的方式运行。
Ad-Hoc 命令集,Users 直接通过Ad-Hoc命令集调用Ansible工具来完成工作。
Playbooks:Users 预先编写好Ansible Playbooks,通过执行Playbooks中预先编排好的任务集按序执行命令。
       4、Ansible工具合集
Ansible 工具集合了Inventory,Moudles,Plugins和APl:
Inventory:Ansible 管理主机清单;
Moudle:Ansible执行命令工能模块,多数为内置的核心模块也可以用户自定义;
Plugins:模块功能的补充,如连接类型插件,循环插件,变量插件,过滤插件等,该功能不常用;
APl:提供第三方程序调用的应用程序编程接口;
Ansible Playbook:任务脚本,编排定义Ansible任务集的配置文件,由Ansible 按序依次执行,通常是JSON格式的YML/YAML文件;
Ansible:该部分图中表示的,组合lnventory,APl,Moudles,Plugins 可以理解为Ansible命令工具其核心执行工具;
        5、、执行流程
使用者使用Ansible 或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或Playbooks后,
Ansible会遵循预先定义安排的规则将Playbooks逐步拆解为Play,
再将Play 组织成Ansible可以识别的任务,
随后调用任务涉及的所有模板和插件,
根据lnventory中定义的主机列表通过SSH将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,
如果是临时文件则执行完毕后自动删除。
二、Ansible安装及命令
 安装ansible
修改hosts文件,配置主机名
192.168.200.111  ansible
192.168.200.112  client1
192.168.200.113  client2
 wget http://mirrors.aliyun.com/repo/Centos-7.repo
 mv Centos-7.repo /etc/yum.repos.d/
 yum clean all
 yum -y install ansible
修改配置文件hosts,写入要管理的主机
 vim /etc/ansible/hosts
[crushlinux]
192.168.200.112
192.168.200.113
ssh免交互
 ssh-keygen -t rsa -P "" -f .ssh/id_rsa
 sshpass -p 1 ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.200.113
免去第一次登录敲yes
 vim /etc/ssh/ssh_config
35 StrictHostKeyChecking no
 1、ansible命令:
Ansible是生产环境中使用非常频繁的命令之一,主要在以下场景应用
非固化需求
临时一次性操作
二次开发接口调用
格式:
ansible   <host-pattern>  [options]
参数:
-v :输出详细的执行过程信息,可以得到执行过程所有信息
-i  PATH :指定inventory信息,默认为/etc/ansible/hosts
-f  NUM :并发线程数,默认为5个线程
-p  rivate-key=PRIVATE_KEY_FILE 指定秘钮文件
-m  NAME :指定执行时使用的模块
-M  DIRECTORY :指定模块存放路径,默认为/usr/share/ansible
-a   ARGUMENTS :指定模块参数
-u   USERNAME :指定远程主机USERNAME运行命令
-I subset  :限定运行主机
--list-hosts  :列出符合条件的主机列表,不执行任何命令。
2、ansible-playbook
类似于Linux系统中的sh或 source命令,用来执行系列任务。
工作机制:通过读取编写好的playbook 文件实现集中处理任务,ansible-playbook命令后跟yml格式的playbook文件,playbook文件存放了要执行的任务代码
语法:ansible-playbook playbook.yml
playbookyml 需要之前编译好建议写playbook.yml文件的绝对路径
3、ansible-console
ansible-console 是ansible.为用户提供的一款交互式工具
在终端输入ansible-console命令后显示
三、ansible模块
1、command模块
shdir:在远程主机上运行命令前要提前进入的目录
creates:在命令运行时创建一个文件,如果文件已经存在,则不会创建任务
removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务
executeble:指明运行命令的shell 程序
2、shell模块
Shell 模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令,和command模块的区别是它支持shell特性,如管道,重定向等。
3、raw模块
最原始的方式运行命令(不依赖python,仅通过ssh实现)
4、copy模块
destf指出复制文件的目标目录位置,使用绝对路径。如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有内容
src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录
mode:指出复制时,目标文件的权限可选
owner:指出复制时,目标文件的属主可选
group:指出复制时,目标文件的属组可选
content:指出复制到目标主机上的内容,不能与src.一起使用,相当于复制content指明的数据到目标文件中
5、hostname模块
name:主机名
6、yum模块
name:程序包的名称,可以带上版本号,如不指定版本号默认安装为最新版本
state=present | latest | absent:指明对程序包执行的操作,pressent 表示安装程序包,latest表示安装最新版本的程序包,absent 表示卸载程序包。
disablerepo:在用yum安装时禁用某个仓库的ID
enablerepo:在用yum 安装时启用某个参考的ID
conf file:yum运行时的配置文件而不是使用默认的配置文件
diable gpg check-yeslno:是否启用完整性校验功能
7、service模块
name:被管理的服务名称
state=started | stopped | restarted:动作包含启动关闭或重启
enabled=yes | no:表示是否设置该服务开机自启动
runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自启动
8、user模块
name:必选参数账号名称
state=present | absent:创建账号或者删除账号,present 表示创建,absent 表示删除。
system=yes | no:是否为系统账号
uid:用户UID
group:用户的基本组
groups:用户的附加组
shell:默认使用的shell
home:用户的家目录。
move home=yes | no:如果设置的家目录已经存在,是否将已经存在的家目录进行移动。
password:用户的密码,建议使用加密后的字符串
comment:用户的注释信息
remove=yes | no:当 state=absent时,是否删除用户的家目录
9、script
script 模块能够实现远程服务器批量运行本地的shell脚本。

原文地址:https://www.cnblogs.com/elin989898/p/11978617.html