离线环境安装使用 Ansible
之前写了一篇介绍 Ansible 的文章 ,今天回顾看来写的有些匆忙,一些具体的操作步骤都没有讲明白,不利于读者复现学习。最近又申请了一个几百台机器的环境,正好借此机会把如何在离线环境中使用 Ansible 详细记录一下。
使用前准备
本机环境是 Python 2.7,操作系统版本是 Red Hat Enterprise Linux Server release 7.6 (Maipo)。
- 系统必须安装了 gcc,找一个内网的 yum 源安装
yum install gcc或使用 rpm 包进行安装 - 有些依赖包编译需要依赖 python 库,因此必须安装 python-devel ,安装方法同上
- 安装 cffi 需要依赖 libffi-devel,安装方法同上
- 安装 cryptography-2.6.1.tar.gz 依赖 openssl-devel
总结下来,必须使用本地 yum 源安装几个必须的依赖。
$ yum install -y python-devel openssl-devel gcc libffi-devel
安装过程
ansible 安装需要先将 18 个依赖包安装完成,依赖包的安装过程大同小异,都是解压文件后,通过 python setup.py install 命令进行安装。
- 安装 setuptools-41.1.0.zip
- 安装 pycrypto-2.6.1.tar.gz
- 安装 PyYAML-5.1.tar.gz ,这个编译安装依赖 _yaml.h ,如果没有会转为纯 python 模式
- 安装 MarkupSafe-1.1.1.tar.gz
- 安装 Jinja2-2.10.1.tar.gz
- 安装 simplejson-3.16.0.tar.gz
- 安装 pycparser-2.19.tar.gz
- 安装 cffi-1.12.3.tar.gz
- 安装 ipaddress-1.0.22.tar.gz
- 安装 six-1.12.0.tar.gz
- 安装 asn1crypto-0.24.0.tar.gz
- 安装 idna-2.8.tar.gz
- 安装 pyasn1-0.4.5.tar.gz
- 安装 PyNaCl-1.3.0.tar.gz
- 安装 enum34-1.1.8.tar.gz
- 安装 cryptography-2.6.1.tar.gz
- 安装 bcrypt-3.1.6.tar.gz
- 安装 paramiko-2.4.2.tar.gz
- 安装 ansible-2.9.7.tar.gz
完成后,验证安装结果。推荐大家使用 Github 上 ghl1024 整理的一个安装脚本来自动化这个过程,如果需要特定的版本,自己修改脚本内容就可以。
$ ansible --version
配置与使用
使用 ansible 操作目标主机的方式有两种,一种是通过配置主机列表后在命令行中通过主机列表名称选择设备。例如:
$ ansible machinelist -m command -a 'cat /etc/redhat-release'
这里的 machinelist 对应 /etc/ansible/hosts 文件中的一组机器列表
[machinelist]
10.2.1.1
10.2.1.2
使用这种方式配置的机器列表,需要安装了 ansible 的这台机器与列表中的主机都做了 ssh 互信。
我们可以利用 sshpass 这个应用来实现使用用户密码登录,这种方式要求安装了 ansible 的机器上先要安装 sshpass 。在离线环境下,推荐大家通过 rpm 包进行安装或者编译安装。
安装完成后,修改 hosts 文件配置如下。
[machinelist]
10.2.1.1 ansible_ssh_user=root ansible_ssh_pass=xxxxxx
10.2.1.2 ansible_ssh_user=root ansible_ssh_pass=xxxxxx
两种方式的配置可以混合使用。
- 配置主机列表
- 利用 sshpass 快速登录主机
- 批量设置主机间的互信
题外话
在使用 ansible 向多台主机发送命令的过程中,有些主机有以下的 WARNING 提示。
[WARNING]: Platform linux on host -.-.-.- is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
看文字的大意是某些机器上的 python 是在 /usr/bin/python 下的,未来可能会被替换。
忽略这个错误的办法是在 /etc/ansible/ansible.cfg 中添加以下配置。
[defaults]
interpreter_python = auto_legacy_silent
参考资料
- Ansible 离线安装
- ansible的安装配置和配合sshpass的使用
- sshpass 绕过ssh 密码交互式验证
- Ansible 实现批量建立互信
- Platform linux on host is using the discovered Python interpreter
离线环境安装使用 Ansible的更多相关文章
- 使用Pip在离线环境安装Python依赖库
一.安装多个包 1.有网的服务器 1.生成requirement.txt文件 pip freeze >/tmp/wheel_pip/requirements.txt 这个命令会把当前环境下面的p ...
- docker 离线环境安装oracle
因测试需要,需在内网的测试环境搭建一套docker Oracle 11g环境进行测试,测试环境为redhat 6.6 安装docker 1.7,本机windows 7 环境,安装docker 17.1 ...
- CentOS 7 离线环境安装nginx时报错:./configure: error: C compiler cc is not found
先说解决方法: 在nginx目录下,查看objs/autoconf.err文件,该文件记录了具体的错误信息 vi objs/autoconf.err 一般就是缺少一些文件,因为我的gcc.g++也是离 ...
- 【原创】运维基础之yum离线环境安装软件
首先查看系统版本号,然后根据版本号从 CentOS-7-x86_64-DVD-1708.iso 和 CentOS-7-x86_64-Everything-1708.iso 根据需要选择一个下载,我这里 ...
- 使用Rainbond实现离线环境软件交付
一.离线交付的痛点 在传统行业,如政府.能源.军工.公安.工业.交通等行业,为了防止数据泄露和运行安全考虑,一般情况下网络会采取内外网隔离的策略,以防范不必要的风险,毕竟在安全防护方面,网络物理隔离是 ...
- 离线环境下安装ansible,借助有网环境下pip工具
环境 有网的机器(192.168.19.222):rhe65,python2.7.13,pip9.0.1 离线机器(192.168.19.203):rhe65,python2.6 FTP(192.16 ...
- Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务
如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...
- Sencha Toucha 2 —1.环境安装配置、在线打包、离线打包
环境安装配置 1. 下载 1.1 Sencha Touch 下载 http://cdn.sencha.com/touch/sencha-touch-2.2.1-gpl.zip 1 ...
- 在离线环境中安装Visual Stuido 2017
在离线环境中安装Visual Stuido 2017 0x00 写在前面的废话 因为工作上大多数都是在离线环境中进行的,进出离线环境很麻烦,所以之前很长一段时间都在使用VS2010.后来尝试换了VS2 ...
随机推荐
- DevOps和SRE的区别
目录 一.误区 二.DevOps 和 SRE 定义 三.两者产生背景和历史 四.两者的职能不同 五.工作内容不同 六.DevOps 和 SRE 关系 七.附录:技能点 DevOps SRE 一.误区 ...
- 从Rest到Graphql
一.引言 ok,如图所示,我在去年曾经写过一篇文章<闲侃前后端分离的必要性>.嗯,我知道肯定很多人没看过.所以我做一个总结,其实啰里八嗦了一篇文章,就是想说一下现在的大型互联网项目一般是如 ...
- STM32F103ZET6 核心板制作指引
学点啥系列之 --STM32F103ZET6 核心板制作指引 原创资料,转载请联系 作者的话:会画stm32F103ZET6的话,rct6啥的简直不要太简单 一.电路总览 图1:电路整体 二.单片机部 ...
- 统计图—柱状图可视化(python)
# 柱状图 import matplotlib.pyplot as plt import matplotlib as mpl mpl.rcParams['font.sans-serif']=['Fan ...
- 联盛德 HLK-W806 (十): 在 CDK IDE开发环境中使用WM-SDK-W806
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 字符串函数(Excel函数集团)
此处文章均为本妖原创,供下载.学习.探讨! 文章下载源是Office365国内版1Driver,如有链接问题请联系我. 请勿用于商业!谢谢 下载地址:https://officecommunity-m ...
- CF31A Worms Evolution 题解
Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),试找出一个三元组 \((i,j,k)\),使得 \(a_i=a_j+a_k\). 数据范围:\(3\l ...
- ABP VNext框架中Winform终端的开发和客户端授权信息的处理
在ABP VNext框架中,即使在它提供的所有案例中,都没有涉及到Winform程序的案例介绍,不过微服务解决方案中提供了一个控制台的程序供了解其IDS4的调用和处理,由于我开发过很多Winform项 ...
- thinkphp 5 在页面输出当前时间
我遇到的使用场景是<input>默认为当前时间,代码如下: <input name="starttime" id="starttime" ty ...
- AQS的原理及源码分析
AQS是什么 AQS= volatile修饰的state变量(同步状态) +FIFO队列(CLH改善版的虚拟双向队列,用于阻塞等待唤醒机制) 队列里维护的Node节点主要包含:等待状态waitStat ...