ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Ansibleを動かす(初級編)

AnsibleをLinuxで動かすには、pipを使う方法と、ディストリビューション配布のパッケージを使う方法があるようです。
新しいバージョンを使いたい場合はpip、別にとりあえず動かしたいならaptなりyumなり使ってインストールするといいようです。LTSじゃないUbuntuとか、Fedoraの新しいバージョンを使えば、比較的新しいバージョンのAnsibleを手間なく使えそうです。


[ディストリビューション配布のパッケージを使う]
aptとかyumで一発です。簡単だけどAnsibleのバージョンが古いかも?

Ubuntuを使う例

$ sudo apt-get -y install ansible sshpass

Fedoraを使う例

# yum -y install ansible sshpass

※sshpassはホスト認証をする際に必要なパッケージです。


[pipを使って最新版を導入する]
pipを使う場合は次のような感じみたいです。

Ubuntuを使う例

$sudo apt-get -y install python-dev python-pip sshpass

Fedoraを使う例

# yum -y install python-backports python-setuptools python-devel python-pip python-crypto python-ecdsa python-simplejson sshpass

そして、Ansibleをpipコマンドを使ってインストールします。

Ubuntuの場合:
$ sudo pip install ansible PyYaML Jinja2

Fedoraの場合:
# pip install ansible PyYaML Jinja2

インストールしたバージョンを確認します。

# ansible --version
ansible 1.8.2
configured module search path = None
(バージョンを確認)


■はじめの一歩
早速使ってみます。まずはつなぎ先のファイルを準備します。まずは自分自身にします。

  • ファイルを書き込みます。

$ echo "127.0.0.1" > hosts

  • ansibleコマンドを使って、pingを発行してみます。

$ ansible all -i hosts -m ping
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes

127.0.0.1 | FAILED => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue

そうすると、上記のようにエラーが出ます。でも安心していいです。これで.ssh/known_hostにSSH鍵を登録できたので、コマンドの最後に--ask-passを付加してもう一度実行します。

$ ansible all -i hosts -m ping --ask-pass
SSH password: (自分自身<127.0.0.1>のパスワードを入力)
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}

正しいパスワードを入力すると次のように表示されます。
同様に、別の環境を用意して、リモートホストに対してコマンドを実行することもできます。

$ echo "192.168.1.102" > hosts
(リモートホスト<192.168.1.102>を設定)
$ ansible all -i hosts -m ping
(鍵を.ssh/known_hostに登録)
...
Are you sure you want to continue connecting (yes/no)? yes
...
$ ansible all -i hosts -m ping --ask-pass
SSH password: (リモートホスト<192.168.1.102>のパスワードを入力)
192.168.1.102 | success >> {
"changed": false,
"ping": "pong"
}

以上でAnsibleを動かすことができました...よね?あとはAnsibleを使って、リモートホストに環境を構築したりいじくり倒すだけです。

ちなみに、次のようなエラーが出た場合はリモートホストpythonをインストールしてください。

$ ansible all -i hosts -m ping --ask-pass
SSH password:
node3 | FAILED >> {
"failed": true,
"msg": "/bin/sh: 1: /usr/bin/python: not found\r\n",
"parsed": false
}


参考にしたサイト

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。