自动化运维工具——ansible安装入门(一)
一、简介
现如今有很多运维自动化的工具,如:Ansible、Puppet、saltStack、Fabric、chef、Cfengine
1. Ansible介绍
Ansible 是由 Cobbler与Func的作者 Micheael DeHaan 编写。2012-03-09发布0.0.1版本,2015-10-17被红帽收购
Ansible 是一个配置管理系统(configuration management system)。你只需要可以使用ssh访问你的服务器或设备就可以;它不同于其他工具,因为它使用的是推送的方式,而不像其他工具一样使用拉去安装agent。
2. Ansible功能
Ansible 可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作;例如:
- 当公司扩大,测试环境与生产环境的服务器都要增加至百台。服务器的环境部署这样重复性的工作就可以使用到ansible;
- 在百台服务器中同时部署一个nginx服务,并且启动。
- 将一个配置文件同时拷贝到数十台服务器时。
3. Ansible 的特性
- 模块化:调用特定的模块完成特定的任务
- 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模板
- 支持自定义模块
- 基于Python语言实现
- 部署简单,基于python和SSH(系统已默认安装),agentless不需要客户端
- 安全,基于OpenSSH,需要SSH密钥验证
- 支持playbook编排任务
- 幂等性:一个任务执行1遍和执行多遍的效果一样,不会因为重复执行带来意外情况
- 无需代理不依赖PKI(无需ssl)
- 可以使用任何编程语言写模块
- YAML格式,编排任务,支持丰富的数据结构
- 较强大的多层解决方案
4. Ansible 架构
5. Ansible 工作原理
6. Ansible 主要组成部分
- ansible playbooks:任务剧本(任务集),编排第一Ansible任务集的配置文件,由Ansible顺序依次执行,通常是json格式的yml文件
- inventory:Ansible管理主机的清单/etc/ansible/hosts
- modules:Ansible 执行命令的功能模块,多数为内置的核心模块,也可自定义
- plugins:模块功能的补充,如连接类型插件,循环插件,变量插件,过滤插件等,该功能不常用
- API:供第三方程序调用的应用程序编程接口
- Ansible:组合inventory、API、modules、plugins的绿框,可以理解为是ansible命令工具,其为核心执行工具
7. Ansible 命令执行来源
- USER,普通用户,即system administrator
- CMDB 资产管理系统 API调用
- public/private cloud API调用
- USER-->ansible playbook --> Ansible
8. 利用ansible实现管理的方式:
- Ad-Hoc 即ansible命令,主要用于临时命令使用场景
- Ansible-playbook 主要用于长期规划好的,大型目的场景,需要有提前的规划
9. Ansible-playbook(剧本)执行过程:
- 将已有编排好的任务集写入Ansible-Playbook
- 通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行
10. Ansible 主要操作对象:
- HOSTS主机
- NETWORKING网络设备
注意事项
- 执行ansible的主机一般称为主控端,中控,master或堡垒机
- 主控端Python版本需要2.6或以上
- 被控端Python版本小于2.4需要安装python-simplejson
- 被控端如开启SELinux需要安装libselinux-python
- windows不能做为主控端
二、安装Ansible
Yum安装方式
Ansible安装包在EPEL源中,自行配置yum源
//Ansible 安装
yum install -y ansible
编译安装
> yum -y install python-jinja2 PyYAML python-paramiko
> python-babel python-crypto
> tar xf ansible-x.x.x.tar.gz
> cd ansible-x.x.x
> python setup.py build
> python setup.py install
> mkdir /etc/ansible
> cp -r examples/* /etc/ansible
git 安装
> git clone git://github.com/ansible/ansible.git --recursive
> cd ./ansible
> source ./hacking/env-setup
pip安装:pip是安装Python包的管理器,类似yum
> yum install python-pip python-devel
> yum install gcc glibc-devel zibl-devel rpm-bulid openssl-devel
> pip install --upgrade pip
> pip install ansible --upgrade
确认安装
ansible --version
·ansible 2.7.7
·config file = /etc/ansible/ansible.cfg
·configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
·ansible python module location = /usr/lib/python2.7/site-packages/ansible
·executable location = /usr/bin/ansible
·python version = 2.7.5 (default, Apr 11 2018, 07:36:10) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
1. Ansible 配置文件
- /etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
- /etc/ansible/hosts 主机清单
- /etc/ansible/roles/存放角色的目录
① 配置文件 /etc/ansible/ansible.cfg(一般保持默认)
[defaults]
#inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = $HOME/.ansible/tmp #临时py命令文件存放在远程主机目录
#local_tmp = $HOME/.ansible/tmp #本机的临时命令执行目录
#forks = 5 #默认并发数
#sudo_user = root # 默认sudo 用户
#ask_sudo_pass = True #每次执行ansible命令是否询问ssh密码
#ask_pass = True
#remote_port = 22 #默认的节点ssh端口
#host_key_checking = False # 检查对应服务器的host_key,建议取消注释
② 主机清单inventory
Ansible必须通过Inventory 来管理主机。Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置。
//语法格式:
//单台主机
www.test.com //FQDN方式
172.16.1.100 //IP地址
172.16.1.100:12222 //SSH服务端口不是22时使用
//多台主机
[mysqlServer] //定义一个组名
mysql.test.com //FQDN方式 【定义组内单台主机的地址】
172.16.1.101 //IP地址
[webServer]
172.16.1.100 //一台主机可以在不同的组内,它同时属于[mysqlServer]组
//组嵌套组
[group01:Server] //group01为自定义的组名,Server是关键字,固定语法必须填写;
mysqlServer //group01 组内包含的其他组名
webServer //group01 组内包含的其他组名
//有规律的主机地址
www.wj[01:06].test.com
//相当于:
www.wj01.test.com
www.wj02.test.com
........
www.wj06.test.com
可以定义有规律的ip地址,也可以定义 有规律的字母地址,例如 [a:f]
还有一个隐藏的组是 [all] 组,不指定机器或组,就默认主机列表中所有机器
主机列表中的参数说明
ansible_ssh_host
//将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
ansible_ssh_port
//ssh端口号.如果不是默认的端口号,通过此变量设置.这种可以使用 ip:端口 192.168.1.100:2222
ansible_ssh_user
//默认的 ssh 用户名
ansible_ssh_pass
//ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)
ansible_sudo_pass
//sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)
ansible_sudo_exe (new in version 1.8)
//sudo 命令路径(适用于1.8及以上版本)
ansible_connection
//与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.
ansible_ssh_private_key_file
//ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.
ansible_shell_type
//目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.
ansible_python_interpreter
//目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 \*BSD, 或者 /usr/bin/python 不是 2.X 版本的 Python.
//我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26).
//与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....
2. Ansible 主要程序
- /usr/bin/ansible 主程序,临时命令执行工具
- /usr/bin/ansible-doc 查看配置文档,模块功能查看工具
- /usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
- /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具
- /usr/bin/ansible-pull 远程执行命令的工具
- /usr/bin/ansible-vault 文件加密工具
- /usr/bin/ansible-console 基于Console界面与用户交互的执行工具
3. 被管理的主机做密钥验证
ansible通过ssh实现配置管理、应用部署、任务执行等功能,建议配置ansible端能基于密钥认证的方希联系各被管理节点
密钥验证不具体写了
4. Ansible系列命令
ansible
ansible-doc:显示模块磅数
// ansible-doc [option] [module...]
//-a 显示所有模块的文档;-l == --list 列出可用模块;-s == --snippet 显示指定模块的playbook片段
ansible-playbook
ansible-vault
ansible-console
ansible-galaxy
ansible-pull
注意:ansible使用,主机清单必须要先配置
自动化运维工具——ansible安装入门(一)的更多相关文章
- CentOS7Linux中自动化运维工具Ansible的安装,以及通过模块批量管理多台主机
使用自动化运维工具Ansible集中化管理服务器 Ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于saltstack和Puppet ...
- 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操
前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...
- 自动化运维工具Ansible介绍
一个由 Python 编写的强大的配置管理解决方案.尽管市面上已经有很多可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特点就在于它的简洁. 让 ansible 在主流的配置管理系统 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 自动化运维工具-Ansible基础
目录 自动化运维工具-Ansible基础 什么是Ansible 同类型软件对比 Ansible的功能及优点 Ansible的架构 Ansible的执行流程 安装Ansible ansible配置文件 ...
- 自动化运维工具-Ansible之7-roles
自动化运维工具-Ansible之7-roles 目录 自动化运维工具-Ansible之7-roles Ansible Roles基本概述 Ansible Roles目录结构 Ansible Roles ...
- 自动化运维工具-Ansible之5-流程控制
自动化运维工具-Ansible之5-流程控制 目录 自动化运维工具-Ansible之5-流程控制 playbook条件语句 单条件 多条件 多条件运算 示例 playbook循环语句 with_ite ...
- 自动化运维工具-Ansible之3-playbook
自动化运维工具-Ansible之3-playbook 目录 自动化运维工具-Ansible之3-playbook PlayBook初识 YAML语法 PlayBook部署httpd PlayBook实 ...
- 自动化运维工具-Ansible之2-ad-hoc
自动化运维工具-Ansible之2-ad-hoc 目录 自动化运维工具-Ansible之2-ad-hoc Ansible ad-hoc Ansible命令模块 Ansible软件管理模块 Ansibl ...
随机推荐
- JSTL截取字符串以及格式化时间
fn函数里面有很多好用的方法 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions& ...
- 数据库用户被锁怎么办,报the passord logon
–1.使用管理员用户登陆,查看用户状态: select username,account_status from dba_users; –2.修改用户状态: alter user base accou ...
- Soft skill
不要害怕让别人看到自己的无知 作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们: 这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你. 当我还是一个初级 ...
- A light-weight client-side OAuth library for Java
这个是一个Github上的开源项目-Signpost,主要封装了一些OAuth认证类的方法,项目地址:电极打开 Signpost 什么是Signpost Signpost是一种非常容易.直观的HTTP ...
- linux系统的安全小知识
最近安装linux虚拟机,出了几个小问题:1. 只有root用户 2.ftp连接不上 3.ssh连接虚拟机如何免密 1.创建用户 useradd –d /usr/sam -m sam 创建用 ...
- 多个图标图片(雪碧图)使用CSS样式显示
现在的网页中显示很多图标算是常态,发现项目中页面上用到的图标都是单个图标单个文件,用的时候直接往页面上挂,这确实很常态. 如果,网站是挂在外网上,或者网速过低,又大量使用图标的情况下,由于浏览器和服务 ...
- javascript的常用操作(三)
$.ajax 中的contentType 在 cnodejs.org 论坛中有一个问题,让我也很奇怪,说是 $.ajax 设置数据类型 applicaiton/json之后,服务器端(express) ...
- iOS - 毛玻璃动画效果
声明全局变量 #define kMainBoundsHeight ([UIScreen mainScreen].bounds).size.height //屏幕的高度 #define kMainBou ...
- 捷宇高拍仪XY530 网页集成总结
应甲方要求,需要把高拍仪集成到B/S系统中来,在集成过程中遇到的几点问题做为总结,以备查找. 1.甲方送来的高拍仪是淘宝上买来的,型号是XY530,功能非常简单,成像效果也很一般.如果没有其它要求,可 ...
- iBrand 教程:Xshell 软件安装过程截图及配置
下载 教程中使用的相关软件下载网盘: https://pan.baidu.com/s/1bqVD5MJ 密码:4lku 安装 请右键以管理员身份运行进行软件安装,安装过程如下: 配置 安装完成并运行软 ...