2017年7月19日

Ubuntu 16.04でAnsibleを始める時にはまったこと(Pyhon3編)

Ubuntu16.04にAnsibleのインストールはできたけど、こんどはAnsibleを実行しようとしてはまったこと

1. インベントリファイルを作成

hostsというファイル名を作成して、「node1」というエイリアス名で制御対象のマシン情報を定義する(実際には\は記入しないで1行で書いておくべきとのこと)。

node1 \
 ansible_ssh_host=[対象のホスト名かIPアドレス]\
 ansible_ssh_port=22\
 ansible_ssh_user=[制御対象のログインユーザー名]\
 ansible_ssh_private_key_file=[SSH秘密鍵]

2. ansibleコマンドでnode1に接続できるか確認する

手順1で作成したhostsファイルを-iオプションで指定して、pingモジュールを実行する

> ansible node1 -i hosts -m ping

すると結果は以下エラーとなった
node1 | FAILED! => {
    "changed": false, 
    "failed": true, 
    "module_stderr": "Shared connection to 192.168.56.110 closed.\r\n", 
    "module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n", 
    "msg": "MODULE FAILURE", 
    "rc": 0
}

「/usr/bin/python: not found」とある。Pythonが見つからないと言っている。そんな馬鹿な。
試しにSSHで接続して/usr/bin/pythonを実行してみる。

-bash: /usr/bin/python: そのようなファイルやディレクトリはありません

ほんまや

調べてみると、Ubuntuは16.04からPython3をデフォルトとなりPython2.7はインストールされていない。ただし/usr/bin/pythonがPython3となるわけではなく、/usr/bin/python3で起動する。よってインストールした段階では/usr/bin/pythonは存在しない、ということらしい。で、AnsibleはPythonで実装されているので、おそらく内部ではPythonスクリプトを対象マシン上で実行するのだろう。その時/usr/bin/pythonを指定しているようだ。

参照:LinuxディストリビューションにおけるPython 3デフォルト化の流れ [http://orangain.hatenablog.com/entry/python3-as-default]

node1にPython2.7をインストールすれば動くんだけど、それは負けな気がする。

ドキュメントのPython 3 Supportを眺めていると「ansible_python_interpreter」という設定があることを発見。手順1で作成したhostsファイルに以下を追加
node1 \
 ansible_ssh_host=[対象のホスト名かIPアドレス]\
 ansible_ssh_port=22\
 ansible_ssh_user=[制御対象のログインユーザー名]\
 ansible_ssh_private_key_file=[SSH秘密鍵]\
 ansible_python_interpreter=/usr/bin/python3

そして再度pingモジュールを実行してみる
> ansible node1 -i hosts -m ping

node1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

成功した

2017年6月22日

沖縄に旅行してきた(闘牛編)

2017年6月に、長期休暇をとって沖縄へ旅行してきた。
ちょうどうるま市で闘牛大会が開催される日があったので観戦してきた。今回すごく楽しみにしていた。

勝敗はどちらかが逃げたら負け。相手が戦う前からまったく闘争心がなくなって不戦勝となった取り組みもあった。
この写真では全然迫力を伝えることができないが、見ていても興奮するくらい迫力があって面白かった。



そのほかの写真はアルバム

沖縄に旅行してきた(浜比嘉編)

2017年6月に、長期休暇をとって沖縄へ旅行してきた。
メインで滞在したのは浜比嘉島。どこも海がきれいできれいで

ホテル



塩工房







シルミチュー・アマミチュー




果報バンタ




そのほかの写真はアルバム

沖縄に旅行してきた(水族館編)

2017年6月に、長期休暇をとって沖縄へ旅行してきた。 4日目は美ら海水族館へ。
チケットは名護市に入る手前の許田道の駅で安く購入した。

ジンベイザメ・マンタ

でかい

イルカ・ウミガメ・マナティー



そのほかの写真はアルバム

沖縄に旅行してきた(南部編)

2017年6月に、長期休暇をとって沖縄へ旅行してきた。 2日目・3日目は、本島南部を観光。

旧海軍司令部豪




平和祈念公園

6/23には沖縄全戦没者追悼式が開催される。



ひめゆりの塔




そのほかの写真はアルバム

2017年5月30日

Ubuntu 16.04でAnsibleを始める時にはまったこと(インストール編)

結構時間がたってしまったけど「初めてのAnsible」を買ったので、Ansibleを勉強している。
Ubuntu 16.04をVirtualBoxのゲストとして2つインストール。1つはcenter、もうひとつはnode1という名前とする。
centerにAnsibleをインストールし、centerからAnsibleを使ってnode1を制御していく構成で進めていく。

インストールするときにちょこっとはまったので、その対処方法をメモ
インストールはpipで行おうと、まずはpipをインストール。つづけてAnsibleをインストールするとエラーが発生した

> apt install pip
> pip install ansible

build/temp.linux-x86_64-2.7/_openssl.c:434:30: fatal error: openssl/opensslv.h: そのようなファイルやディレクトリはありません
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-2dGflM/cryptography/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-YAGHX3-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-2dGflM/cryptography/

「openssl.c:434:30: fatal error」とある。OpenSSLのソースコードがないためにエラーとなっているようだ。これはlibssl-devをインストールすれば解決できる。

> apt install libssl-dev
> pip install ansible

すると、めでたくインストールが成功した、とのメッセージが表示された

Successfully built ansible
Installing collected packages: ansible
Successfully installed ansible-2.3.0.0

2017年4月17日

2017年4月1日

円山別邸 でランチ

何度か行っている円山別邸だけど、今まではディナーしか行ったことがなかった。今回はランチに行ってきた。
ワインもいただき、ゆっくりで楽しい時間を過ごすことができた。








2017年3月21日

錦水庵 栗山町

栗山町の錦水庵(きんすいあん)という蕎麦屋さんでコースをいただいた。そばづくし。
そばの実雑炊

そばがき入りかしわごぼう

せいろ

せいろ(アップ)

甘未(アイスクリーム)
美味でした。