安装Ansible

安装Ansible
本页介绍如何在不同平台上安装Ansible。Ansible是一种无代理程序自动化工具,默认情况下会通过SSH协议管理计算机。安装后,Ansible不会添加数据库,并且将没有启动或继续运行的守护程序。您只需要将其安装在一台计算机上(可以很容易地是一台笔记本电脑),它就可以从该中心管理整个远程计算机。当Ansible管理远程计算机时,它不会在其上安装或运行软件,因此,在移至新版本时如何升级Ansible并没有真正的问题。

先决条件

控制节点要求

受管节点要求

选择要安装的Ansible版本

在RHEL,CentOS或Fedora上安装Ansible

在Ubuntu上安装Ansible

在Debian上安装Ansible

通过Portage在Gentoo上安装Ansible

在FreeBSD上安装Ansible

在macOS上安装Ansible

在Solaris上安装Ansible

在Arch Linux上安装Ansible

在Slackware Linux上安装Ansible

在Clear Linux上安装Ansible

使用安装Ansible pip

将Ansible从2.9和更早版本升级到2.10或更高版本

安装的开发版本 ansible-base

虚拟环境

ansible-base从源运行(开发)

查找带标记的发行版的压缩包

Ansible命令外壳完成

argcomplete在RHEL,CentOS或Fedora上安装

安装argcomplete使用apt

安装argcomplete使用pip

配置中 argcomplete

全球范围

每个命令

argcomplete 与zsh或tcsh

ansible-base 在GitHub上

先决条件
您将Ansible安装在控制节点上,然后使用SSH(默认情况下)与您的受管节点(您要自动化的那些终端设备)进行通信。

控制节点要求
当前,Ansible可以在安装了Python 2(2.7版)或Python 3(3.5版及更高版本)的任何计算机上运行。这包括Red Hat,Debian,CentOS,macOS,任何BSD等。控制节点不支持Windows,请在Matt Davis的博客文章中了解有关此内容的更多信息。

选择控制节点时,请记住,任何管理系统都可从在被管理机器附近运行而受益。如果您正在云中运行Ansible,请考虑从该云中的计算机上运行它。在大多数情况下,这将比在开放Internet上更好。

注意

默认情况下,macOS配置了少量文件句柄,因此,如果要使用15个或更多的fork,则需要使用来提高ulimit 。此命令还可以修复任何“打开文件过多”错误。sudo launchctl limit maxfiles unlimited

警告

请注意,某些模块和插件还有其他要求。对于模块,需要在“目标”计算机(受管节点)上满足这些要求,并应在特定于模块的文档中列出。

受管节点要求
在受管节点上,您需要一种通信方式,通常是SSH。默认情况下,它使用SFTP。如果不可用,可以在ansible.cfg中切换到SCP 。您还需要Python 2(2.6版或更高版本)或Python 3(3.5版或更高版本)。

注意

如果在远程节点上启用了SELinux,则还需要在Ansible中使用任何与复制/文件/模板相关的功能之前,在它们上安装libselinux-python。您可以使用Ansible中的yum模块或dnf模块在没有此软件包的远程系统上安装此软件包。

默认情况下,在剧本中的第一个Python模块在主机上运行之前,Ansible会尝试在该主机上发现合适的Python解释器。您可以通过将ansible_python_interpreter库存变量设置为特定的解释器来覆盖发现行为,或者通过其他方式。有关详细信息,请参见解释器发现。

Ansible的raw模块和script模块不依赖于客户端安装的Python来运行。从技术上讲,您可以使用原始模块来使用Ansible安装兼容版本的Python ,然后再使用其他模块。例如,如果您需要将Python 2引导到基于RHEL的系统上,则可以按以下方式安装它:

$ ansible myhost --become -m raw -a "yum install -y python2"
选择要安装的Ansible版本
根据您的特定需要安装哪个Ansible版本。您可以选择以下任何一种方式来安装Ansible:

使用OS软件包管理器安装最新版本(用于Red Hat Enterprise Linux(TM),CentOS,Fedora,Debian或Ubuntu)。

使用安装pip(Python软件包管理器)。

ansible-base从源代码安装以访问开发(devel)版本以开发或测试最新功能。

注意

仅当您正在修改或尝试开发中的功能时才应ansible-base从此运行。这是一个快速变化的代码源,并且随时可能变得不稳定。develansible-base

Ansible一年两次创建新版本两次。由于发行周期短,通常会在下一发行版中修复一些小错误,而不是在稳定分支上保留反向移植。必要时,主要错误仍将具有维护版本,尽管这些很少见。

在RHEL,CentOS或Fedora上安装Ansible
在Fedora上:

$ sudo dnf install ansible
在RHEL和CentOS上:

$ sudo yum install ansible
可从Ansible Engine存储库中获得RHEL 7和RHEL 8的RPM 。

要为RHEL 8启用Ansible Engine存储库,请运行以下命令:

$ sudo subscription-manager repos --enable ansible-2.9-for-rhel-8-x86_64-rpms
要为RHEL 7启用Ansible Engine存储库,请运行以下命令:

$ sudo subscription-manager repos --enable rhel-7-server-ansible-2.9-rpms
EPEL还提供了RHEL和CentOS当前受支持版本的RPM 。

注意

由于目前无法使用RHEL的Ansible 2.10,因此请继续使用Ansible 2.9。

Ansible可以管理包含Python 2.6或更高版本的旧操作系统。

在Ubuntu上安装Ansible
可在此处的PPA中获得Ubuntu版本。

要在您的计算机上配置PPA并安装Ansible,请运行以下命令:

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
注意

在较旧的Ubuntu发行版中,“ software-properties-common”被称为“ python-software-properties”。您可能要使用apt-get而不是apt在旧版本中使用。另外,请注意,只有较新的发行版(即18.04、18.10等)才带有-u或--update标志,因此请相应地调整脚本。

Debian / Ubuntu软件包也可以从源签出中构建,运行:

$ make deb
您可能还希望从源头获得开发分支,下面将对此进行介绍。

在Debian上安装Ansible
Debian用户可以使用与Ubuntu PPA相同的来源。

将以下行添加到/etc/apt/sources.list中:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
然后运行以下命令:

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible
注意

此方法已在Debian Jessie和Stretch中的Trusty源中得到验证,但在早期版本中可能不受支持。您可能要使用apt-get而不是apt在旧版本中使用。

通过Portage在Gentoo上安装Ansible
$ emerge -av app-admin/ansible
要安装最新版本,您可能需要在出现之前取消屏蔽Ansible软件包:

$ echo 'app-admin/ansible' >> /etc/portage/package.accept_keywords
在FreeBSD上安装Ansible
尽管Ansible适用于Python 2和3版本,但是FreeBSD对于每个Python版本都有不同的软件包。因此要安装,您可以使用:

$ sudo pkg install py27-ansible
要么:

$ sudo pkg install py36-ansible
您可能还希望从端口安装,运行:

$ sudo make -C /usr/ports/sysutils/ansible install
您还可以选择特定版本,例如ansible25。

较早版本的FreeBSD可以使用以下功能(代替您选择的软件包管理器):

$ sudo pkg install ansible
在macOS上安装Ansible
在Mac上安装Ansible的首选方法是使用pip。

有关说明,请参见使用pip安装Ansible。如果您运行的是macOS 10.12或更早版本,则应升级到最新版本pip以安全地连接到Python软件包索引。应当注意,pip必须作为模块在macOS上运行,并且链接的pip说明将向您展示如何执行此操作。

注意

如果您安装了Ansible 2.9或更早版本,则需要先使用它来删除旧版本的Ansible,然后再重新安装它。pip uninstall ansible

如果要在macOS Mavericks(10.9)上安装,则编译器可能会产生一些噪音。解决方法是执行以下操作:

$ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install --user ansible
在Solaris上安装Ansible
OpenCSW可以将Ansible作为SysV软件包用于Solaris 。

# pkgadd -d http://get.opencsw.org/now
# /opt/csw/bin/pkgutil -i ansible
在Arch Linux上安装Ansible
Ansible在社区存储库中可用:

$ pacman -S ansible
AUR有一个PKGBUILD,可直接从GitHub提取,称为ansible-git。

另请参见ArchWiki上的Ansible页面。

在Slackware Linux上安装Ansible
Ansible构建脚本可在SlackBuilds.org存储库中找到。可以使用sbopkg进行构建和安装。

使用Ansible和所有依赖项创建队列:

# sqg -p ansible
从创建的队列文件构建和安装软件包(对于sbopkg是否应使用队列或软件包,请回答Q):

# sbopkg -k -i ansible
在Clear Linux上安装Ansible
Ansible及其依赖项可作为sysadmin主机管理软件包的一部分提供:

$ sudo swupd bundle-add sysadmin-hostmgmt
软件更新将由swupd工具管理:

$ sudo swupd update
使用安装Ansible pip
Ansible可以使用pipPython软件包管理器进行安装。如果pip您的Python系统尚不可用,请运行以下命令进行安装:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py --user
注意

如果您安装了Ansible 2.9或更早版本,则需要先使用它来删除旧版本的Ansible,然后再重新安装它。pip uninstall ansible

然后安装Ansible 1:

$ python -m pip install --user ansible
为了使用需要的paramiko连接插件或模块paramiko,请安装所需的模块2:

$ python -m pip install --user paramiko
如果要全局安装Ansible,请运行以下命令:

$ sudo python get-pip.py
$ sudo python -m pip install ansible
注意

运行pip与sudo将使该系统的全球变化。由于pip不与系统程序包管理器协调,因此可能会对您的系统进行更改,使系统处于不一致或无法运行的状态。对于macOS尤其如此。--user建议使用with进行安装,除非您完全了解在系统上修改全局文件的含义。

注意

pip默认的旧版本为http://pypi.python.org/simple,该版本不再起作用。pip在安装Ansible之前,请确保您具有的最新版本。如果您安装的是旧版本pip,则可以按照pip的升级说明进行升级。

将Ansible从2.9和更早版本升级到2.10或更高版本
从2.10版本开始,Ansible由两个软件包组成。您需要先卸载旧的Ansible版本(2.9或更早版本),然后再升级。如果您不卸载旧版本的Ansible,则会看到以下消息,并且不会进行任何更改:

Cannot install ansible-base with a pre-existing ansible==2.x installation.

Installing ansible-base with ansible-2.9 or older currently installed with
pip is known to cause problems. Please uninstall ansible and install the new
version:

pip uninstall ansible
pip install ansible-base

...
如该消息所述,要升级,您必须首先删除已安装的Ansible版本,然后再将其安装到最新版本。

$ pip uninstall ansible
$ pip install ansible
安装的开发版本 ansible-base
在Ansible 2.10和更高版本中,ansible / ansible存储库包含基本功能的代码,例如将模块代码复制到受管节点。此代码也称为ansible-base。

注意

您应该只运行ansible-base的devel,如果要修改ansible-base或正在开发尝试的功能。这是一个快速变化的代码源,并且随时可能变得不稳定。

注意

如果您安装了Ansible 2.9或更早版本,则需要先使用它来删除旧版本的Ansible,然后再重新安装它。pip uninstall ansible

您可以ansible-base直接从GitHub使用pip安装开发版本。

$ python -m pip install --user https://github.com/ansible/ansible/archive/devel.tar.gz
将devel上述URL替换为GitHub上的任何其他分支或标签,以安装旧版本的Ansible(ansible-base2.10之前的版本)。这将安装所有Ansible。

$ python -m pip install --user https://github.com/ansible/ansible/archive/stable-2.9.tar.gz
请参阅从源代码运行ansible-base(开发)以获取有关如何ansible-base直接从源代码运行而不需要安装的说明。

虚拟环境
注意

如果您安装了Ansible 2.9或更早版本,则需要先使用它来删除旧版本的Ansible,然后再重新安装它。pip uninstall ansible

Ansible也可以安装在新的或现有的内部virtualenv:

$ python -m virtualenv ansible # Create a virtualenv if one does not already exist
$ source ansible/bin/activate # Activate the virtual environment
$ python -m pip install ansible
ansible-base从源运行(开发)
在Ansible 2.10和更高版本中,ansible / ansible存储库包含基本功能的代码,例如将模块代码复制到受管节点。此代码也称为ansible-base。

注意

您应该只运行ansible-base的devel,如果要修改ansible-base或正在开发尝试的功能。这是一个快速变化的代码源,并且随时可能变得不稳定。

ansible-base易于从源代码运行。您不需要root使用它的权限,并且没有要实际安装的软件。不需要守护程序或数据库设置。

注意

如果要将Ansible Tower用作控制节点,请不要使用Ansible的源安装。请使用OS软件包管理器(如apt或yum)或pip安装稳定的版本。

要从源代码安装,请克隆ansible-basegit存储库:

$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible
一旦git已经克隆了ansible-base仓库,建立了Ansible环境:

使用Bash:

$ source ./hacking/env-setup
使用鱼:

$ source ./hacking/env-setup.fish
如果要抑制虚假警告/错误,请使用:

$ source ./hacking/env-setup -q
如果您尚未pip安装Python版本,请安装它:

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py --user
Ansible还使用以下需要安装的Python模块1:

$ python -m pip install --user -r ./requirements.txt
要更新ansible-base结帐,请使用重载基础,以便重播任何本地更改。

$ git pull --rebase
$ git pull --rebase #same as above
$ git submodule update --init --recursive
运行env-setup脚本后,您将从checkout运行,默认清单文件将为/etc/ansible/hosts。您可以选择指定除以下以外的清单文件(请参阅如何构建清单)/etc/ansible/hosts:

$ echo "127.0.0.1" > ~/ansible_hosts
$ export ANSIBLE_INVENTORY=~/ansible_hosts
您可以在如何建立库存中阅读有关库存文件的更多信息。

现在让我们使用ping命令测试事物:

$ ansible all -m ping --ask-pass
您也可以使用“ sudo make install”。

查找带标记的发行版的压缩包
包装Ansible还是想自己构建一个本地包,但是不想进行git checkout?发布的包是从pypi作为https://pypi.python.org/packages/source/a/ansible/ansible - {{VERSION}} tar.gz的。您可以在软件包管理系统中将VERSION设置为变量,并在每次打包新版本时在一个位置进行更新。或者,您可以下载https://pypi.python.org/project/ansible 以获得最新的稳定版本。

注意

如果要创建自己的Ansible软件包,则还必须下载或打包ansible-base为Ansible软件包的一部分。您可以将其下载为https://pypi.python.org/packages/source/a/ansible-base/ansible-base-{{VERSION}}。tar.gz。

这些发行版还在git存储库中用发行版标记。

Ansible命令外壳完成
从Ansible 2.9开始,Ansible命令行实用程序的shell完成是可用的,并且是通过称为的可选依赖项提供的argcomplete。argcomplete支持bash,并且对zsh和tcsh的支持有限。

您可以python-argcomplete在基于Red Hat Enterprise的发行版上从EPEL进行安装,也可以从许多其他发行版的标准OS存储库中进行安装。

有关安装和配置的更多信息,请参见argcomplete文档。

argcomplete在RHEL,CentOS或Fedora上安装
在Fedora上:

$ sudo dnf install python-argcomplete
在RHEL和CentOS上:

$ sudo yum install epel-release
$ sudo yum install python-argcomplete
安装argcomplete使用apt
$ sudo apt install python-argcomplete
安装argcomplete使用pip
$ python -m pip install argcomplete
配置中 argcomplete
有两种方法可以配置argcomplete以允许Shell完成Ansible命令行实用程序:全局或每个命令。

全球范围
全局完成需要bash 4.2。

$ sudo activate-global-python-argcomplete
这会将bash完成文件写入全局位置。使用--dest来改变位置。

每个命令
如果没有bash 4.2,则必须独立注册每个脚本。

$ eval $(register-python-argcomplete ansible)
$ eval $(register-python-argcomplete ansible-config)
$ eval $(register-python-argcomplete ansible-console)
$ eval $(register-python-argcomplete ansible-doc)
$ eval $(register-python-argcomplete ansible-galaxy)
$ eval $(register-python-argcomplete ansible-inventory)
$ eval $(register-python-argcomplete ansible-playbook)
$ eval $(register-python-argcomplete ansible-pull)
$ eval $(register-python-argcomplete ansible-vault)
您应该将上述命令放置在您的shell配置文件中,例如~/.profile或~/.bash_profile。

argcomplete 与zsh或tcsh
请参阅argcomplete文档。

ansible-base 在GitHub上
如果您拥有GitHub帐户,则可能还希望遵循GitHub项目。这也是我们保留问题跟踪器以共享错误和功能思想的地方。

也可以看看

临时命令简介
基本命令示例

使用剧本
学习Ansible的配置管理语言

如何在Ansible安装过程中处理Ansible软件包依赖关系所需的软件包依赖关系?
与常见问题解答相关的Ansible安装

邮件列表
有什么问题吗 救命?有想法吗?停在Google网上论坛的列表上

irc.freenode.net
#ansible IRC聊天频道

1 (1,2)
如果您在macOS上安装“ pycrypto”软件包时遇到问题,则可能需要尝试。CC=clang sudo -E pip install pycrypto

2
paramiko包含在requirements.txt2.8之前的Ansible版本中。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐