Ansible のインストール¶
ここでは、さまざまなプラットフォームに Ansible をインストールする方法を説明します。 Ansible は、デフォルトで SSH プロトコルを介してマシンを管理するエージェントレス自動化ツールです。インストールが完了すると、 Ansible はデータベースを追加せず、起動または稼働し続けるデーモンもありません。 Ansibleを 1 台のマシン (ラップトップでも可) にインストールするだけで、そのマシンからリモートマシン全体を一元管理できます。 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 のインストール
pip
を使用した Ansible のインストール- ソース (devel) からの Ansible の実行
- タグ付けされたリリースの tarball の場所
- Ansible コマンドシェルの完了
- GitHub 上の 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
pip
を使用した argcomplete
のインストール¶
$ pip install 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
などのシェルプロファイルファイルに置くことが推奨されます。
zsh または tcsh での argcomplete
¶
argcomplete ドキュメント を参照してください。
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 が含まれていました。 |