介绍

ansible官方文档里写道

Ansible is a radically simple IT automation engine

即:Ansible是一款极其简单的IT自动化工具

它基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

基本框架图

组件介绍

Ansible:Ansible核心程序。

connection plugins :连接插件,负责和被监控端实现通信。

HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。

Playbooks:”剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。

CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

ansible特点

  • 部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作,默认使用SSH协议对设备进行管理;

  • 有大量常规运维操作模块,可实现日常绝大部分操作。

  • 配置简单、功能强大、扩展性强;

  • 支持API及自定义模块,可通过Python轻松扩展;

  • 通过Playbooks来定制强大的配置、状态管理;

  • 轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;

  • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台。

  • 幂等性   幂等性不会重复执行相同的指令。例如不会重复安装软件。

工作原理图

测试环境

名称 IP 系统
ansible 192.168.10.10 CenOS7
PC1 192.168.10.11 CenOS7
PC2 192.168.10.12 CenOS7

安装

安装ansible非常简单,直接YUM安装就可以。

# yum install epel-release -y
# yum install ansible -y
# ansible --version  #查看版本ansible 2.7.0config file = /etc/ansible/ansible.cfgconfigured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']ansible python module location = /usr/lib/python2.7/site-packages/ansibleexecutable location = /usr/bin/ansiblepython version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]

配置

ansible.cfg为ansible的主配置文件,他主要定义了roles_path路径,主机清单路径,连接清单中的主机方式等。

hosts是我们定义主机清单的配置文件。

# cd /etc/ansible/
# ls
ansible.cfg  hosts  roles

主配置文件的一些解释

[defaults]
# some basic default values...
#inventory      = /etc/ansible/hosts       //定义资源清单文件的位置
#library        = /usr/share/my_modules/     //library指向ansible模块的目录
#module_utils   = /usr/share/my_module_utils/#remote_tmp     = ~/.ansible/tmp#local_tmp      = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks          = 5        //多少个进程可以同时工作
#poll_interval  = 15
#sudo_user      = root     //设置默认执行命令的用户
#ask_sudo_pass = True    //执行ansible命令是否询问ssh密码,每次都询问
#ask_pass      = True        //和上面一起的
#transport      = smart
#remote_port    = 22        //连接被管理的端口,默认22
#module_lang    = C
#module_set_locale = False    //第一次使用ansible连接客户端的提示开关
# SSH timeout#timeout = 10      //SSH连接超时的间隔,单位是秒

hosts定义方式

定义一个[组名]把地址或主机名加进去

我自己定义的两台主机,我把它分为了两个组。

[web]192.168.10.11
[sql]192.168.10.12

组成员可以使用通配符来匹配,如下 192.168.10.[1:5] #表示匹配从192.168.10.1——192.168.10.5的主机。

Ansible命令集

/usr/bin/ansible   # Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行

/usr/bin/ansible-doc  # Ansible 模块功能查看工具

/usr/bin/ansible-galaxy # 下载/上传优秀代码或Roles模块的官网平台,基于网络的

/usr/bin/ansible-playbook # Ansible 定制自动化的任务集编排工具

/usr/bin/ansible-pull # Ansible远程执行命令的工具(使用较少,海量机器时使用,对运维的架构能力要求较高)

/usr/bin/ansible-vault # Ansible 文件加密工具

/usr/bin/ansible-console  # Ansible基于Linux Consoble界面可与用户交互的命令执行工具

SSH与公私钥

在主机执行以下命令,将公钥发送到两台被连接主机。

#ssh-keygen -t rsa                             #创建公钥与私钥
#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.11            #将公钥传输给对端服务器

此时服务器可以免密码登录

测试

这里用一个PING模块来验证一下是否连接成功,下一篇博客我们再研究另外的常用模块。

命令格式:

ansible<host-pattern> [options]

命令参数

-a MODULE_ARGS, --args=MODULE_ARGS

module arguments  # 指定Ansible调用的模块

--ask-become-pass   ask forprivilege escalation password # Ansible su切换用户的时候使用该参数输入密码

-k,--ask-pass        ask for SSHpassword  # 以密码认证

--ask-su-pass         ask for supassword (deprecated, use become) # su的时候使用该参数

-K,--ask-sudo-pass   ask for sudo password(deprecated, use become) # sudo的时候

--ask-vault-pass      ask forvault password # ansible-valut 加密文件

-BSECONDS, --background=SECONDS  # 后台等待秒数

--become-user=BECOME_USER

run operations as thisuser (default=None)  # su到哪个用户

-C,--check           don't make any changes;instead, try to predict some

of the changes that mayoccur  # 不执行命令只做命令执行检查

-c CONNECTION, --connection=CONNECTION

connection type to use(default=smart)

-eEXTRA_VARS, --extra-vars=EXTRA_VARS  # 调用外部变量

set additionalvariables as key=value or YAML/JSON

-fFORKS, --forks=FORKS  # Ansible一次命令执行并发的线程数

-h,--help            show this help messageand exit

-iINVENTORY, --inventory-file=INVENTORY  #Ansible调用的Hosts文件,默认/etc/ansible/hosts

specify inventory hostfile

(default=/etc/ansible/hosts)

-lSUBSET, --limit=SUBSET  # 限定主机列表中的某台机器执行

further limit selectedhosts to an additional pattern

--list-hosts          outputs alist of matching hosts; does not execute

anything else  ## 列出主机列表中的主机

-mMODULE_NAME, --module-name=MODULE_NAME  #Ansible 调用的执行模块

-M MODULE_PATH, --module-path=MODULE_PATH  #调用的模块路径

-S,--su              run operations with su(deprecated, use become) #使用su和become结合使用

-RSU_USER, --su-user=SU_USER  # su的话切换至哪个用户

-s,--sudo            run operations withsudo (nopasswd) (deprecated, use

become)  # 执行sudo命令

-USUDO_USER, --sudo-user=SUDO_USER  # sudo

-TTIMEOUT, --timeout=TIMEOUT  # 执行命令的超时时间

--vault-password-file=VAULT_PASSWORD_FILE  ## ansible-vault加密的密码文件

-v,--verbose         verbose mode (-vvv formore, -vvvv to enable

connectiondebugging)  # 显示详细信息 -vvvv

--version             showprogram's version number and exit ## 显示版本号

ping模块测试:

# ansible all  -m ping
192.168.10.11 | SUCCESS => {"changed": false, "ping": "pong"}
192.168.10.12 | SUCCESS => {"changed": false, "ping": "pong"}

看到两台主机都返回了成功ping通,至此我们就可以愉快的使用ansible对区域内的服务器开始管理工作啦!

转载于:https://blog.51cto.com/13706064/2307646

自动化运维工具Ansible连续剧之--介绍安装与连接相关推荐

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

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

  2. 自动化运维工具ansible的安装管理以及模块介绍

    自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...

  3. 自动化运维工具Ansible实战---常用模块

    Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块名] 又可 ...

  4. 自动化运维工具-Ansible的Playbook的使用

    Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...

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

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

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

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

  7. 自动化运维工具-Ansible实战指南

    Ansible实战 前言 一.Ansible简介 1.ansible是什么? 2.ansible特点 3.ansible架构 主要模块 工作流程 命令执行过程 二.Ansible 配置 1 安装ans ...

  8. 自动化运维工具——Ansible(三)——分组管理

    自动化运维工具--Ansible(三)--分组管理 1. 通过ip地址分组 1.1 写法一 1.2 写法二 2. 通过主机名分组 2.1 写法一 2.2 写法二 3. 子组 1. 通过ip地址分组 1 ...

  9. 轻量级自动化运维工具ansible之一:初步介绍及简单运用

    一.常见的自动化运维工具: OS Provisioning:PXE, Cobbler OS Config:puppet, saltstack, chef, func Task Exec:fabric, ...

最新文章

  1. 深度学习的Xavier初始化方法
  2. javascript 编辑网页
  3. 市面上常见的TCP/IP以太网一卡通设备硬件产品电路拆解分析
  4. SecurityManager安全管理器
  5. 阿里云混合云的政企上云新路径
  6. Linux 安装Opencv3.2
  7. 【Python】list和tuple 区别比较
  8. 长春学校计算机科学技术学院,长春大学计算机科学技术学院
  9. 解决JupyterLab/JupyterNotebook安装pycherts后依旧报错报错 ModuleNotFoundError: No module named ‘pyecharts‘
  10. OSPF配置末梢区域
  11. java redis教程视频_2020年Java视频教程-Redis全集
  12. Web Science笔记 Emotion, Event detection
  13. 多文件自平衡云传输(二)资源接收 断点续传篇 —————— 开开开山怪
  14. 使用Pulseview软件辅助verilog数字设计仿真协议解码
  15. 菜鸡哈屠教你合并果子
  16. VUE3 使用 Ant Design Vue的icon图标
  17. Android项目用到的or比较好的资料
  18. 测试分析与测试用例设计方法
  19. api有哪些 javasocket_Java Socket编程以及与Linux Socket API关系
  20. svn: E155007: 'XXX' is not a working copy

热门文章

  1. JavaScript模板引擎Template.js基本使用详解
  2. Web Visibilitychange
  3. 7-46 银行排队问题之单队列多窗口服务 (10 分)
  4. 7-293 鸡兔同笼 (10 分)
  5. mysql innodb事务中 出现_MySql InnoDB事务死锁问题
  6. java 中加法递归_java 简单的加法 递归 从A加到B
  7. 使用C语言----修改密码
  8. Linux 免密登录和配置环境变量
  9. Tornado 错误 Global name 'memoryview' is not defined
  10. linux_iptables 详解