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を使う例
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 Jinja2Fedoraの場合:
# 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)? yes127.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
}
参考にしたサイト