之前写了一篇介绍 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

参考资料

  1. Ansible 离线安装
  2. ansible的安装配置和配合sshpass的使用
  3. sshpass 绕过ssh 密码交互式验证
  4. Ansible 实现批量建立互信
  5. Platform linux on host is using the discovered Python interpreter

离线环境安装使用 Ansible的更多相关文章

  1. 使用Pip在离线环境安装Python依赖库

    一.安装多个包 1.有网的服务器 1.生成requirement.txt文件 pip freeze >/tmp/wheel_pip/requirements.txt 这个命令会把当前环境下面的p ...

  2. docker 离线环境安装oracle

    因测试需要,需在内网的测试环境搭建一套docker Oracle 11g环境进行测试,测试环境为redhat 6.6 安装docker 1.7,本机windows 7 环境,安装docker 17.1 ...

  3. CentOS 7 离线环境安装nginx时报错:./configure: error: C compiler cc is not found

    先说解决方法: 在nginx目录下,查看objs/autoconf.err文件,该文件记录了具体的错误信息 vi objs/autoconf.err 一般就是缺少一些文件,因为我的gcc.g++也是离 ...

  4. 【原创】运维基础之yum离线环境安装软件

    首先查看系统版本号,然后根据版本号从 CentOS-7-x86_64-DVD-1708.iso 和 CentOS-7-x86_64-Everything-1708.iso 根据需要选择一个下载,我这里 ...

  5. 使用Rainbond实现离线环境软件交付

    一.离线交付的痛点 在传统行业,如政府.能源.军工.公安.工业.交通等行业,为了防止数据泄露和运行安全考虑,一般情况下网络会采取内外网隔离的策略,以防范不必要的风险,毕竟在安全防护方面,网络物理隔离是 ...

  6. 离线环境下安装ansible,借助有网环境下pip工具

    环境 有网的机器(192.168.19.222):rhe65,python2.7.13,pip9.0.1 离线机器(192.168.19.203):rhe65,python2.6 FTP(192.16 ...

  7. Linux系统如何在离线环境或内网环境安装部署Docker服务和其他服务

    如何在离线环境或纯内网环境的Linux机器上安装部署Docker服务或其他服务.本次我们以Docker服务和Ansible服务为例. 获取指定服务的所有rpm包 保证要获取rpm包的机器能够上网. 本 ...

  8. Sencha Toucha 2 —1.环境安装配置、在线打包、离线打包

    环境安装配置        1. 下载 1.1     Sencha Touch 下载 http://cdn.sencha.com/touch/sencha-touch-2.2.1-gpl.zip 1 ...

  9. 在离线环境中安装Visual Stuido 2017

    在离线环境中安装Visual Stuido 2017 0x00 写在前面的废话 因为工作上大多数都是在离线环境中进行的,进出离线环境很麻烦,所以之前很长一段时间都在使用VS2010.后来尝试换了VS2 ...

随机推荐

  1. 磁盘管理LVM

    目录 一.简介 二.操作 环境简介 操作 一.简介 LVM全称为Logical Volume Management,它是Linux环境下对磁盘分区进行管理的一种机制,它可以将多个硬盘合成一个资源池,然 ...

  2. shell脚本 系统状态信息查看

    一.简介 源码地址 日期:2018/6/23 介绍:显示简单的系统信息 效果图: 二.使用 适用:centos6+,ubuntu12+ 语言:中文 注意:无 下载 wget https://raw.g ...

  3. 查看MySQL正在执行的线程

    一.使用SQL语句查询正在执行的线程 SHOW PROCESSLIST; 二.使用kill 线程id就可以结束线程(引起数据变化的线程需特别小心) SHOW PROCESSLIST; +------+ ...

  4. [ZJCTF 2019]Login

    学了一段时间的堆溢出现在继续做题, 例行检查一下 64位的程序放入ida中 shift+f12查看程序函数 可以看到非常明显的后门程序 查看主函数 发现了程序给的账号和密码,但是没有看到明显的栈溢出漏 ...

  5. JavaFx Tooltip悬浮提示使用及自定义

    原文:JavaFx Tooltip悬浮提示使用及自定义 | Stars-One的杂货小窝 本篇是基于TornadoFx框架对Tooltip组件进行讲解,使用Kotlin语言,和传统Java使用有所区别 ...

  6. LuoguP5690 [CSP-S2019 江西] 日期 题解

    Content Alice 在纸上写下了一个日期,形式为 \(\text{MM-DD}\),其中 \(\text{MM}\) 与 \(\text{DD}\) 都是两位数字,分别表示月和天,然而这个日期 ...

  7. 端云协同,打造更易用的AI计算平台

    内容来源:华为开发者大会2021 HMS Core 6 AI技术论坛,主题演讲<端云协同,HUAWEI HiAI Foundation打造更易用的AI计算平台>. 演讲嘉宾:华为海思AI技 ...

  8. centos7修改时区EDT------CST

    root@localhost ~]# date Wed Oct 16 01:34:16 EDT 2019 [root@localhost ~]# cd /etc/ [root@localhost et ...

  9. 【LeetCode】855. Exam Room 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/exam-roo ...

  10. 【LeetCode】890. Find and Replace Pattern 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典+set 单字典 日期 题目地址:https:/ ...