Ansible のインストール

ここでは、さまざまなプラットフォームに Ansible をインストールする方法を説明します。 Ansible は、デフォルトで SSH プロトコルを介してマシンを管理するエージェントレス自動化ツールです。インストールが完了すると、 Ansible はデータベースを追加せず、起動または稼働し続けるデーモンもありません。 Ansibleを 1 台のマシン (ラップトップでも可) にインストールするだけで、そのマシンからリモートマシン全体を一元管理できます。 Ansible は、リモートマシンの管理時には、ソフトウェアをマシンにインストールしたまま、あるいは実行したままにすることがないので、新しいバージョンに移行する場合に Ansible のアップグレードが問題になることはありません。

要件

Ansible をコントロールノードにインストールし、SSH (デフォルト) を使用して管理ノード (自動化するエンドデバイス) と通信します。

コントロールノードの要件

現在、Ansible は、Python 2 (バージョン 2.7) または Python 3 (バージョン 3.5 以降) がインストールされていればどのマシンからでも実行できます。 これには、Red Hat、Debian、CentOS、MacOS をはじめ、各種 BSD が含まれます。 Windows では、コントロールノードのサポートはありません。

コントロールノードの選択時には、管理システムを管理対象マシンの近くで実行すると利点があることを念頭に置いてください。Ansible をクラウドで実行している場合は、そのクラウド内のマシンから実行することを検討してください。オープンなインターネット上で実行するよりも、同じクラウド内から実行するほうがうまく機能します。

Note

MacOS はデフォルトで、少数のファイルハンドル向けに設定されているため、15 個以上のフォークを使用する場合は、「sudo launchctl limit maxfiles unlimited」を使用して ulimit を増やす必要があります。このコマンドでは、「Too many open files」エラーも修正できます。

Warning

一部のモジュールおよびプラグインには追加の要件がありますので注意してください。モジュールでは、「ターゲット」マシン (管理ノード) でこの追加要件を満たす必要があります。これについてはモジュール固有のドキュメントに記載されています。

管理ノードの要件

管理ノードでは通信手段が必要です。通常は SSH が使われます。デフォルトでは、 管理ノードの通信に SFTP を使用します。SFTP を使用できない場合は、 ansible.cfg で SCP に切り替えることができます。 Python 2 (バージョン 2.6 以降) または Python 3 (バージョン 3.5 以降) も 必要になります。

Note

  • リモートノードで SELinux を有効にしている場合は、 Ansible でコピー/ファイル/テンプレート関連の機能を使用する前に、libselinux-python をインストールすることもできます。Ansible で、 yum モジュール または dnf モジュール を使用して、 リモートシステムにこのパッケージがインストールされていない場合はインストールできます。

  • デフォルトでは、Ansible は /usr/bin/python にある Python インタープリターを使用して、 そのモジュールを実行します。 ただし、Linux ディストリビューションによっては、 デフォルトで /usr/bin/python3 に Python 3 インタープリターしかインストールされていない場合があります。 そのようなシステムでは、以下のようなエラーが表示される場合があります:

    "module_stdout": "/bin/sh: /usr/bin/python:No such file or directory\r\n"
    

    ansible_python_interpreter インベントリー変数を設定して ( インベントリーの構築方法 を参照) インタープリターを指定するか、 使用するモジュールに Python 2 インタープリターをインストールできます。Python 2 インタープリターが /usr/bin/python にインストールされていない場合にも、ansible_python_interpreter を設定する必要があります。

  • Ansible の:ref:raw モジュール<raw_module>、および script モジュール は、 実行する Python をインストールするクライアントに依存しません。 技術的には、 Ansible で raw モジュール を使用して 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 パッケージマネージャー) でインストールします。
  • ソースからインストールして開発 (devel) バージョンにアクセスし、最新の機能を開発またはテストします。

Note

Ansible のコンテンツをアクティブに開発している場合は、 devel からのみ Ansible を実行する必要があります。これは急速に変化するコードのソースであり、いつでも不安定になる可能性があります。

Ansible のリリースは、年に 2 ~ 3 回作成されます。リリースサイクルがこのように短いため、 マイナーバグの場合、通常は安定したブランチでバックポートを管理するのではなく、次のリリースで修正されます。 メジャーバグについては、必要なときにメンテナンスリリースが行われますが、このようなことはあまり頻繁には起こりません。

RHEL、CentOS、または Fedora への Ansible のインストール

Fedora の場合:

$ sudo dnf install ansible

RHEL および CentOS の場合:

$ sudo yum install ansible

RHEL 7 および RHEL 8 の RPM は、Ansible Engine リポジトリー から入手できます。

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

現在サポートされている RHEL、CentOS、および Fedora のバージョン用の RPM は、releases.ansible.com および EPEL から入手できます。

Ansible バージョン 2.4 以降では、Python 2.6 以降が含まれている旧オペレーティングシステムを管理できます。

RPM を独自に構築することも可能です。チェックアウトまたは tarball のルートから、make rpm コマンドを使用して、配布およびインストール可能な RPM を構築します。

$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible
$ make rpm
$ sudo rpm -Uvh ./rpm-build/ansible-*.noarch.rpm

Ubuntu への Ansible のインストール

Ubuntu ビルドは https://launchpad.net/~ansible/+archive/ubuntu/ansible の PPA で利用できます。

自分のマシンに PPA を設定して Ansible をインストールするには、次のコマンドを実行します。

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

Note

以前の Ubuntu ディストリビューションでは、「software-properties-common」は「python-software-properties」と呼ばれます。過去のバージョンでは apt ではなく apt-get を使用するほうがよい場合があります。また、-u あるいは --update フラグが指定されているのは新しいディストリビューション (例: 18.04、18.10 など) のみなので注意してください。随時、スクリプトは調整してください。

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

Note

この方法は、Debian Jessie および Stretch の Trusty ソースで検証されていますが、以前のバージョンではサポートされない可能性があります。過去のバージョンでは apt ではなく apt-get を使用するほうがよい場合があります。

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 以前を実行している場合に、Python Package Index に安全に接続するには最新の pip にアップグレードする必要があります。

Solaris への Ansible のインストール

Ansible は、OpenCSW の SysV パッケージ として Solaris で利用できます。

# pkgadd -d http://get.opencsw.org/now
# /opt/csw/bin/pkgutil -i ansible

Arch Linux への Ansible のインストール

Ansible はコミュニティーリポジトリーで入手できます:

$ pacman -S ansible

AUR には、ansible-git と呼ばれる GitHub から直接プルするための PKGBUILD があります。

ArchWiki の Ansible ページも参照してください。

Slackware Linux への Ansible のインストール

Ansible ビルドスクリプトは SlackBuilds.org リポジトリーで入手できます。 sbopkg <https://sbopkg.org/> を使用してビルドし、インストールできます。

Ansible およびすべての依存関係を含むキューを作成します:

# sqg -p ansible

作成した queuefile からパッケージを構築してインストールします (sbopkg がキューまたはパッケージを使用する必要がある場合の問題への回答 Q):

# sbopkg -k -i ansible

Clear Linux への Ansible のインストール

Ansible およびその依存関係は、sysadmin ホスト管理バンドルの一部として利用できます:

$ sudo swupd bundle-add sysadmin-hostmgmt

ソフトウェアの更新は、swupd ツールにより管理されます:

$ sudo swupd update

pip を使用した Ansible のインストール

Ansible は、Python パッケージマネージャー pip を使用してインストールできます。 Python のシステムに pip がまだない場合には、以下のコマンドを実行してインストールします:

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

次に Ansible [1] をインストールします:

$ pip install --user ansible

または、開発バージョンを探している場合は、以下を実行します:

$ pip install --user git+https://github.com/ansible/ansible.git@devel

MacOS Mavericks (10.9) にインストールしている場合は、コンパイラーにノイズが発生する可能性があります。回避するには以下を実行します:

$ CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install --user ansible

paramiko を必要とする paramiko 接続プラグインまたはモジュールを使用するには、必要なモジュール [2] をインストールします:

$ pip install --user paramiko

Ansible は、新規または既存の virtualenv 内にもインストールできます:

$ python -m virtualenv ansible  # Create a virtualenv if one does not already exist
$ source ansible/bin/activate   # Activate the virtual environment
$ pip install ansible

Ansible をグローバルにインストールする場合は、以下のコマンドを実行します:

$ sudo python get-pip.py
$ sudo pip install ansible

Note

sudo を付けて pip を実行すると、システムにグローバルな変更が加えられます。pip はシステムパッケージマネージャーとは連携しないため、これが原因でシステムに変更が加えられ、不整合状態または不機能状態のままになる可能性があります。特に、これは MacOS の場合に当てはまります。システムのグローバルファイルの修正による影響を十分に理解していない場合には、--user を使用してインストールするようお推めします。

Note

以前のバージョンの pip でのデフォルトは http://pypi.python.org/simple ですが、これはもう機能しません。 Ansible をインストールする前に、最新バージョンの pip を使用していることを確認してください。 古いバージョンの「pip」がインストールされている場合は、以下の pip のアップグレードの説明 に従ってアップグレードできます。

ソース (devel) からの Ansible の実行

Note

Ansible のコンテンツをアクティブに開発している場合は、 devel からのみ Ansible を実行する必要があります。これは急速に変化するコードのソースであり、いつでも不安定になる可能性があります。

Ansible は、ソースから簡単に実行できます。これを使用するのに root 権限は必要ありません。 実際にインストールするソフトウェアはありません。デーモンや、 データベースの設定も必要ありません。

Note

Ansible Tower をコントロールノードとして使用する場合は、Ansible のソースインストールを使用しないでください。OS パッケージマネージャー (apt もしくは yum など) または pip を使用して、安定したバージョンをインストールしてください。

ソースからインストールするには、Ansible git リポジトリーのクローンを作成します。

$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible

git で Ansible リポジトリーのクローンを作成したら、Ansible 環境を設定します。

Bash の使用:

$ source ./hacking/env-setup

Fish の使用:

$ source ./hacking/env-setup.fish

誤った警告やエラーが表示されないようにするには、以下を使用します:

$ source ./hacking/env-setup -q

お使いのバージョンの Python に pip がインストールされていない場合は、インストールします:

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

Ansible は、インストールする必要がある以下の Python モジュールも使用します [1]:

$ pip install --user -r ./requirements.txt

Ansible チェックアウトを更新するには、pull-with-rebase を使用してローカルの変更がリプレイされるようにします。

$ git pull --rebase
$ git pull --rebase #same as above
$ git submodule update --init --recursive

env-setup スクリプトを実行すると、実行がチェックアウトから行われ、 デフォルトのインベントリーファイルが /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」も使用できます。

タグ付けされたリリースの tarball の場所

git チェックアウトせずに、Ansible をパッケージ化したり、ローカルパッケージをご自身で構築する場合があります。 リリースの tarball は、Ansible downloads ページで入手できます。

リリースは、git repository でリリースバージョンのタグが付けされています。

Ansible コマンドシェルの完了

Ansible 2.9 では、Ansible コマンドラインユーティリティーのシェル補完が利用でき、 argcomplete と呼ばれる任意の依存関係により提供されます。argcomplete は bash に対応し、zsh と tcsh のサポートは限定されています。

python-argcomplete は、Red Hat Enterprise ベースのディストリビューションでは EPEL からインストールでき、その他の多くのディストリビューションでは標準 OS リポジトリーで入手できます。

インストールと設定の詳細は、「 argcomplete のドキュメント 」を参照してください。

RHEL、CentOS、または Fedora への argcomplete のインストール

Fedora の場合:

$ sudo dnf install python-argcomplete

RHEL および CentOS の場合:

$ sudo yum install epel-release
$ sudo yum install python-argcomplete

apt を使用した argcomplete のインストール

$ sudo apt install python-argcomplete

argcomplete の設定

Ansible コマンドラインユーティリティーのシェル補完を可能にする argcomplete の設定方法は、2 通りあります。

グローバル

グローバル補完には 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)

上記のコマンドは、~/.profile~/.bash_profile などのシェルプロファイルファイルに置くことが推奨されます。

GitHub 上の Ansible

以下の場合は、`GitHub プロジェクト<https://github.com/ansible/ansible>`_ をフォローすることもできます。 GitHub アカウントがある。このプロジェクトは、 バグおよび機能に関する意見を共有するための問題トラッカーが保持されている場所でもあります。

See also

アドホックコマンドの概要
基本コマンドの例
Playbook の使用
Ansible の設定管理言語について
Ansible インストール中に Ansible パッケージに必要な依存関係にどのように対応すればいいですか
FAQ に関連する Ansible インストール
メーリングリスト
ご質問はございますか。サポートが必要ですか。ご提案はございますか。 Google グループの一覧をご覧ください。
irc.freenode.net
#ansible IRC chat channel
[1](1, 2) MacOS への「pycrypto」パッケージのインストールに問題がある場合は、CC=clang sudo -E pip install pycrypto を試す必要がある場合があります。
[2]2.8 よりも前の Ansible の requirements.txt には、paramiko が含まれていました。