前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >离线环境安装使用 Ansible

离线环境安装使用 Ansible

作者头像
大江小浪
发布2022-05-06 16:00:39
2.7K0
发布2022-05-06 16:00:39
举报
文章被收录于专栏:小狼的世界

之前写了一篇介绍 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 源安装几个必须的依赖。

代码语言:javascript
复制
$ 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 整理的一个安装脚本来自动化这个过程,如果需要特定的版本,自己修改脚本内容就可以。

代码语言:javascript
复制
$ ansible --version

配置与使用

使用 ansible 操作目标主机的方式有两种,一种是通过配置主机列表后在命令行中通过主机列表名称选择设备。例如:

代码语言:javascript
复制
$ ansible machinelist -m command -a 'cat /etc/redhat-release'

这里的 machinelist 对应 /etc/ansible/hosts 文件中的一组机器列表

代码语言:javascript
复制
[machinelist]
10.2.1.1
10.2.1.2

使用这种方式配置的机器列表,需要安装了 ansible 的这台机器与列表中的主机都做了 ssh 互信。

我们可以利用 sshpass 这个应用来实现使用用户密码登录,这种方式要求安装了 ansible 的机器上先要安装 sshpass 。在离线环境下,推荐大家通过 rpm 包进行安装或者编译安装。

安装完成后,修改 hosts 文件配置如下。

代码语言:javascript
复制
[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 中添加以下配置。

代码语言:javascript
复制
[defaults]
interpreter_python = auto_legacy_silent

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用前准备
  • 安装过程
  • 配置与使用
  • 题外话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档