Ansible-安装 (Centos7 通过Yum安装最新发布版本)

本文介绍如何在Centos7上安装Ansible,并通过Yum进行配置。此外,还介绍了设置SSH密钥以实现节点鉴权,以及如何使用Ansible执行ad-hoc命令和编写playbook来完成各种自动化任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ansible-安装 (Centos7 通过Yum安装最新发布版本)

1.环境准备

操作系统:Contos7
Python版本: Python 2.6Python 2.7

2.设置EPEL仓库

通过Yum安装RPMs适用于 EPEL 6, 7。Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库

rpm -iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm

3.使用yum安装Ansible

安装 : yum install ansible

[root@localhost myron01]# yum install ansible
Loaded plugins: fastestmirror, langpacks
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
.......
.......
Installed:
  ansible.noarch 0:2.2.1.0-1.el7                                                
Dependency Installed:
  PyYAML.x86_64 0:3.10-11.el7             libtomcrypt.x86_64 0:1.17-23.el7     
  libtommath.x86_64 0:0.42.0-4.el7        libyaml.x86_64 0:0.1.4-11.el7_0      
  python-babel.noarch 0:0.9.6-8.el7       python-httplib2.noarch 0:0.7.7-3.el7 
  python-jinja2.noarch 0:2.7.2-2.el7      python-keyczar.noarch 0:0.71c-2.el7  
  python-markupsafe.x86_64 0:0.11-10.el7  python-six.noarch 0:1.9.0-2.el7      
  python2-crypto.x86_64 0:2.6.1-13.el7    python2-ecdsa.noarch 0:0.13-4.el7    
  python2-paramiko.noarch 0:1.16.1-2.el7  python2-pyasn1.noarch 0:0.1.9-7.el7  
  sshpass.x86_64 0:1.06-1.el7            
Complete!
[root@localhost myron01]# 

版本检查:ansible –version(两个-)

[root@localhost myron01]# ansible --version
ansible 2.2.1.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides

4.设置用于节点鉴权的SSH密钥

进入~/.ssh生成秘钥 ssh-keygen

[root@localhost ansible]# cd ~/.ssh
[root@localhost .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
5b:ae:1e:90:b9:85:90:f2:0a:c1:ef:e7:88:23:f5:a6 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|.    .           |
|... o            |
| ..o . +         |
|.  .. = S .      |
| .o.   + +       |
| ..o .. o .      |
|... *    o       |
|..E+ . .o        |
+-----------------+
[root@localhost .ssh]# 

使用ssh-copy-id命令来复制Ansible公钥到节点中

[root@localhost .ssh]# ssh-copy-id myron@192.168.150.136
The authenticity of host '192.168.150.136 (192.168.150.136)' can't be established.
ECDSA key fingerprint is f6:c2:20:dc:ec:28:71:4a:fe:4d:d9:5d:39:39:65:8f.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
myron@192.168.150.136's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'myron@192.168.150.136'"
and check to make sure that only the key(s) you wanted were added.
[root@localhost .ssh]#

测试免密操作 ansible all -m ping -u myron

[root@localhost .ssh]# ansible all -m ping -u myron
192.168.150.136 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
[root@localhost .ssh]# 

5.基本功能

Ansible提供两种方式去完成任务,ad-hoc 命令和写 Ansible playbook

  1. ad-hoc 命令—可以解决一些简单的任务
    ad-hoc 命令是什么?

    ad-hoc这其实是一个概念性的名字,是相对于写 Ansible playbook 来说的.类似于在命令行敲入shell命令和 写shell scripts两者之间的关系

    示例:查看托管节点的主机名

    [root@localhost ansible]# ansible 192.168.150.138 -m command -a "hostname" -u myron
    192.168.150.138 | SUCCESS | rc=0 >>
    localhost.localdomain
    [root@localhost ansible]#

    示例:查看托管节点主机的Java版本

    [root@localhost ansible]# ansible 192.168.150.138 -a "java -version" -u myron
    192.168.150.138 | SUCCESS | rc=0 >>
    java version "1.7.0_51"
    OpenJDK Runtime Environment (rhel-2.4.5.5.el7-x86_64 u51-b31)
    OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
    [root@localhost ansible]# 
    

    说明:
    192.168.150.138 是管理主机配置的托管节点 /etc/ansible/hosts 中配置
    -m 模块名 用户执行对应的功能 (默认:command) 所以执行ansible 192.168.150.138 -a “hostname” -u myron 效果一样

    Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

  2. 写 Ansible playbook—后者解决较复杂的任务.
    Playbooks是什么?

    Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.

//TODO ansible playbook 用例

6.参考文档或博客

  1. 自动化运维工具Ansible详细部署:http://sofar.blog.51cto.com/353572/1579894

<think>我们正在CentOS 7上使用pip安装Ansibleansible-navigator。请注意,CentOS 7自带的Python版本可能较低(默认为2.7),而Ansible 2.9及之前版本支持Python 2.7,但自Ansible 2.10起,Ansible分拆为多个包,并且需要Python 3.6或更高版本。因此,我们可能需要先安装Python 3。 步骤概述: 1. 更新系统并安装必要的开发工具。 2. 安装Python 3和pip(如果尚未安装)。 3. 使用pip安装Ansibleansible-navigator。 4. 验证安装。 详细步骤: ### 1. 更新系统并安装开发工具 首先,更新系统并安装必要的开发工具,包括用于编译Python模块的工具。 ```bash sudo yum update -y sudo yum groupinstall -y "Development Tools" sudo yum install -y epel-release sudo yum install -y openssl-devel bzip2-devel libffi-devel ``` ### 2. 安装Python 3 CentOS 7默认安装的是Python 2.7,我们需要安装Python 3。我们将从源代码安装Python 3.9(或更高版本,但需确保Ansible支持)。 #### 下载并编译Python 3.9 ```bash cd /usr/src sudo wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz sudo tar xzf Python-3.9.16.tgz cd Python-3.9.16 sudo ./configure --enable-optimizations sudo make altinstall ``` 注意:使用`make altinstall`以避免覆盖系统默认的Python二进制文件。安装后,Python 3.9将位于`/usr/local/bin/python3.9`,pip3将位于`/usr/local/bin/pip3.9`。 #### 创建软链接(可选) 为了方便,我们可以创建软链接: ```bash sudo ln -s /usr/local/bin/python3.9 /usr/bin/python3 sudo ln -s /usr/local/bin/pip3.9 /usr/bin/pip3 ``` ### 3. 安装Ansibleansible-navigator 现在,使用pip3安装Ansibleansible-navigator。 ```bash sudo pip3 install ansible sudo pip3 install ansible-navigator ``` 注意:ansible-navigator是Ansible的命令行工具,提供文本用户界面(TUI)体验。 ### 4. 验证安装 检查Ansible版本: ```bash ansible --version ``` 检查ansible-navigator版本: ```bash ansible-navigator --version ``` ### 常见问题解决 如果在安装过程中遇到问题,请参考以下提示: - **问题1:** 如果遇到与`pip`相关的问题,请确保使用的是`pip3`。 - **问题2:** 如果安装后`ansible`命令找不到,可能是因为`/usr/local/bin`不在`PATH`中。可以将其添加到`PATH`中,或者创建符号链接到`/usr/bin`下: ```bash sudo ln -s /usr/local/bin/ansible /usr/bin/ansible ``` 其他命令类似处理。 - **问题3:** 关于SSH连接问题,如引用[3]中提到的错误,可能需要安装相关库。但该错误通常与主机SSH配置有关,确保安装了`openssh-clients`: ```bash sudo yum install -y openssh-clients ``` ### 引用说明 在安装过程中,我们参考了Ansible官方文档以及常见的CentOS系统管理实践[^1][^2][^3]。 §§相关问题§§ 1. 如何在CentOS 7安装特定版本Ansible2. 如何配置Ansible的inventory文件? 3. 如何使用ansible-navigator运行Playbook?</think>### 在 CentOS 7 上使用 pip 安装 Ansibleansible-navigator #### 1. 准备 Python 3 环境 CentOS 7 默认使用 Python 2.7,但 Ansible 需要 Python 3.6+。先安装 Python 3.8: ```bash sudo yum install -y gcc openssl-devel bzip2-devel libffi-devel sudo yum groupinstall -y "Development Tools" cd /usr/src sudo curl -O https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz sudo tar xzf Python-3.8.16.tgz cd Python-3.8.16 sudo ./configure --enable-optimizations sudo make altinstall # 保留系统默认 Python sudo python3.8 -m ensurepip --upgrade ``` #### 2. 安装 Ansible ```bash sudo python3.8 -m pip install --upgrade pip sudo python3.8 -m pip install ansible cryptography ``` 验证安装: ```bash ansible --version # 应显示 Ansible 核心版本 ``` #### 3. 安装 ansible-navigator ```bash sudo python3.8 -m pip install ansible-navigator ``` 验证安装: ```bash ansible-navigator --version # 应显示 TUI 工具版本 ``` #### 4. 解决常见依赖问题 若遇到 SSH 连接问题(如引用[3]中的 libsss_util.so 错误): ```bash sudo yum install -y sssd-client openssh-clients sudo ln -s /usr/lib64/libsss_util.so /usr/lib/libsss_util.so ``` #### 5. 验证完整功能 创建测试 Playbook `test.yml`: ```yaml --- - name: Test Connection hosts: localhost tasks: - ping: ``` 运行验证: ```bash ansible-navigator run test.yml -m stdout ``` 成功输出应显示: ```json { "ping": "pong" } ``` > **重要提示**: > - 使用 `python3.8` 明确调用 Python 3 > - 避免使用系统默认 Python(`/usr/bin/python`),防止包冲突 > - 若需管理远程节点,确保 SSH 密钥已配置[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值