LoginSignup
9
12

More than 5 years have passed since last update.

Ansible入門 その1 インストール〜コマンド実行

Posted at

この記事について

この記事はAnsibleについてほとんど何も知らない私が公式ドキュメントを読みながらAnsibleをインストールして動かしていく記事です。

使用PCのOSはmacOS Sierra 10.12.6です。

Ansibleとは何か

いわゆる構成管理ツールというやつで、設定ファイルを書いておくことによって自動的にマシンにソフトウェアをインストールしてくれたり設定してくれたりします。サーバーのセットアップを自動化するソフトと考えれば大体あってるのではないかと思います。

他にも色々特徴はあるのでしょうが、それはおいおい勉強します。。

公式ドキュメントにしたがってAnsibleを使ってみる

さっそくドキュメントどおりにAnsibleを使ってみます。

インストール

環境がmacなのでLatest Releases on Mac OSXを参考にインストールします。pipでインストールしろと書いてありますので、pythonが必要です。pythonがない人はpythonをインストールしてください。pythonのインストールについては他の記事に譲ります。ぐぐったらコチラの記事がトップに出てきました。

(以下はほとんど公式ドキュメント通りのコマンドですので、気になる方は公式の方を見てください)

まずpipをインストールします。

$ sudo easy_install pip

そしてAnsibleをインストール。

$ sudo pip install ansible

バージョン指定したい場合は以下のようにするらしいです。(※参考)

$ sudo pip install ansible==1.9.1

開発中の最新バージョンが使いたいときはこれ。

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

OS X Mavericksの人は以下のようにする必要があるらしい。

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

Ansibleを起動

Ansibleを動かす前に、Ansibleがどうやってリモートマシンとやりとりしているのか理解するのが重要だと書いてありますので、一応メモ。(※公式ドキュメント)

AnsibleはSSHのControlPersistという機能を使っているらしいです。(ControlPersistについてはこちらの記事がわかりやすかったです)

しかし制御側のマシンのOpenSSHが古いとControlPersistに対応していないことがあるため、その場合Ansibleは'paramiko'というPythonによるOpenSSH実装を使うらしいです。

ほかにもリモート接続について書いてあるので気になる人は該当箇所を読んで下さい。

Ansibleからリモートマシンのコマンド実行

では実際にAnsibleを動かしてみます。

まずはローカルマシンのSSH公開鍵がリモートマシンのauthorized_keysに書いてある必要があります。

この辺はVagrantとかを使ってAnsibleで操作する対象となる環境を作るのが便利かと思います。今回はVagrantbox.esからCentOS 7.2 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30を選びました。他にもDiscover Vagrant Boxesなどもありますので探してみると良いと思います。

以下はVagrant環境を前提としますが、Vagrantを使ったことが無いという方はこの記事とか、公式ドキュメントとかをご覧になると良いと思います。

適当な作業ディレクトリに移ってvagrant initでVagrantfileを作ると

# config.vm.network "private_network", ip: "192.168.33.10"

という行があると思うので、これのコメントアウトを外します。

ここでいきなりansibleを実行しても失敗するので、

$ vagrant ssh-config --host 192.168.33.10 >> ~/.ssh/config

この一行を実行して$ ssh vagrant@192.168.33.10でログインできるようにします。

次に、/etc/ansible/hostsというファイルをディレクトリごと作り、下記の一行を書きます。

vagrant@192.168.33.10

このファイルはインベントリファイルと呼ばれるもので、構成管理対象のリストを意味するみたいです。

ファイルを編集したら、

$ ansible all -m ping

します。
結果が以下になれば成功です!

vagrant@192.168.33.10 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

実際のコマンドを実行。

$ ansible all -a "/bin/echo hello"
vagrant@192.168.33.10 | SUCCESS | rc=0 >>
hello

helloと出力されました。

同じことをローカルマシン向けに行うこともできるようです。

$ ansible localhost -a 'echo hello'
localhost | SUCCESS | rc=0 >>
hello

というわけで、ansibleを使ってリモートマシンにコマンドを実行させることができるということがわかりました。

その2に続く。

9
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
12