自动化运维工具Ansible连续剧之--介绍安装与连接
介绍
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连续剧之--介绍安装与连接相关推荐
- 自动化运维工具ansible(安装与模块介绍)
自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...
- 自动化运维工具ansible的安装管理以及模块介绍
自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...
- 自动化运维工具Ansible实战---常用模块
Ansible默认提供了很多模块来供我们使用.在Linux中,我们可以通过 ansible-doc -l 命令查看到当前Ansible支持哪些模块,通过 ansible-doc -s [模块名] 又可 ...
- 自动化运维工具-Ansible的Playbook的使用
Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...
- 自动化运维工具----ansible
自动化运维工具----ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能 ...
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...
- 自动化运维工具-Ansible实战指南
Ansible实战 前言 一.Ansible简介 1.ansible是什么? 2.ansible特点 3.ansible架构 主要模块 工作流程 命令执行过程 二.Ansible 配置 1 安装ans ...
- 自动化运维工具——Ansible(三)——分组管理
自动化运维工具--Ansible(三)--分组管理 1. 通过ip地址分组 1.1 写法一 1.2 写法二 2. 通过主机名分组 2.1 写法一 2.2 写法二 3. 子组 1. 通过ip地址分组 1 ...
- 轻量级自动化运维工具ansible之一:初步介绍及简单运用
一.常见的自动化运维工具: OS Provisioning:PXE, Cobbler OS Config:puppet, saltstack, chef, func Task Exec:fabric, ...
最新文章
- 深度学习的Xavier初始化方法
- javascript 编辑网页
- 市面上常见的TCP/IP以太网一卡通设备硬件产品电路拆解分析
- SecurityManager安全管理器
- 阿里云混合云的政企上云新路径
- Linux 安装Opencv3.2
- 【Python】list和tuple 区别比较
- 长春学校计算机科学技术学院,长春大学计算机科学技术学院
- 解决JupyterLab/JupyterNotebook安装pycherts后依旧报错报错 ModuleNotFoundError: No module named ‘pyecharts‘
- OSPF配置末梢区域
- java redis教程视频_2020年Java视频教程-Redis全集
- Web Science笔记 Emotion, Event detection
- 多文件自平衡云传输(二)资源接收 断点续传篇 —————— 开开开山怪
- 使用Pulseview软件辅助verilog数字设计仿真协议解码
- 菜鸡哈屠教你合并果子
- VUE3 使用 Ant Design Vue的icon图标
- Android项目用到的or比较好的资料
- 测试分析与测试用例设计方法
- api有哪些 javasocket_Java Socket编程以及与Linux Socket API关系
- svn: E155007: 'XXX' is not a working copy
热门文章
- JavaScript模板引擎Template.js基本使用详解
- Web Visibilitychange
- 7-46 银行排队问题之单队列多窗口服务 (10 分)
- 7-293 鸡兔同笼 (10 分)
- mysql innodb事务中 出现_MySql InnoDB事务死锁问题
- java 中加法递归_java 简单的加法 递归 从A加到B
- 使用C语言----修改密码
- Linux 免密登录和配置环境变量
- Tornado 错误 Global name 'memoryview' is not defined
- linux_iptables 详解