Python ansible 自動化

Python学習【365日チャレンジ!】258日目のマスターU(@Udemy11)です。

釣りに行っている時間がないにも関わらず、風がなく晴れの予想だったので、最近好調のエギングに行ってきました。

前の釣行から数日経って、潮も小潮とそんなに期待はできないのかなと思っていました。

風はなく、潮位もそんなに下がっていなかったので、いい感じかもとおもってスタートすると、いきなり根がかりで今まで一番釣れていたエギをロストしてしまいがガックリ。。。

気を取り直して始めるも、1時間でコロッケサイズが1杯と寂しい状況だったので、「そろそろ帰ろうかな〜」と考えてフルキャストして沈めていると、底に当たるような感覚があり、ロッドをしゃくると重たいので、「根がかりかよ〜!」と思った瞬間、ドラグが出ていく強い引きで興奮度MAXに!

トンカツサイズだとそんなに引かないので、今回はじめてアオリイカのジェット噴射の引きを体験しました。

アオリイカ

エギングでアオリイカを釣りまくっている人にとっては、レギュラーサイズかもしれませんが、私にとってはかなり満足度の高い一杯になりました。

それでは今日もPython学習を始めましょう。

昨日の復習

昨日は、Ansibleの自動化で共通の処理を行うcommonサーバーを設定しました。

playbookファイルを分割して記述したり、hostの設定などを記述したりして、server2のcommonサーバーを設定しました。

詳細については、昨日の記事をごらんください。

今日は、昨日ハマったポイントを健忘録的に記録しておきます。

site.yaml

まず、最初にエラーが起こったのがsite.ymlファイルで、コードはきちんと書いているのですが、どうにもエラーがおこってしまいました。

---

- hosts: webservers

  roles:
    - common

...

こんな簡単なコードなので、間違うはずがないのですが、3行目の:がなにかおかしいというエラーでした。

エラーコードをキャプチャするのを忘れていたので、画像は残っていませんが、酒井さんが提供してくれている最後のファイルをダウンロードして、コードをコピー・ペーストすれば問題なく動きました。

もしかしたら、全角スペースが入っていたか、:が全角になっていたのかもしれません。

Install packages

次のエラーがInstall packagesのエラーです。

Python ansible 自動化

こちらのコードは、2つのパッケージをwithステートメントを使ってインストールする下記のようなコードです。

- name: Install pacakges
  apt:
    name: "{{ item }}"
  with_items:
    - python-setuptools
    - software-properties-common

どうもwithステートメントがうまく行っていない様子だったのと、どうやらAnsibleではPython2.7のsetuptoolsが使えない様子だったため、次のようにコードを書き換えたところ、ここはうまくクリアーしました。

- name: Install packages
  apt:
    name:
      - python3-setuptools
      - software-properties-common

Ansibleのバージョンが上がっているからなのかどうかわかりませんが、withステートメントを使用しなくても問題がなく動き、シンプルなコードになりました。

Install pip

次のエラーがInstall pipで、どうやらeasy_installがうまく働いていない様子でした。

Python ansible 自動化

これは、次回学習するwebseverのFlaskのインストールで問題が起こって解決したというQ&Aを参考にして、次のようなコードを書いたのですが、どうもうまくいかず。。。

- name: Install pip
  command: "sudo apt-get -y install python-pip python3-pip"

Python ansible 自動化

次に、素直にInstall packagesと同じ書き方でいいんじゃない?とおもって同じ書き方にしてみるとエラーが起こりませんでした。

- name: Install pip
  apt:
   name:
     - python-pip
     - python3-pip
   state: latest

Python ansible 自動化

まとめ

ほんとエラーが起こると、どこが間違っているのか原因を突き止めるのに時間がかかってしまいます。

一つ見つけても、また次にエラーが起こって、直したら元のコードが再びエラーが起こるようになったりしました。

よくよく見ると、作業しているときに変な文字がタイプされてしまっていたりするのですが、何度も同じコードを見るのはとても大切です。

実は今回、あまりにもエラーが頻出するので、途中でいらないことをしてしまっているかもしれないので、一旦Vagrantで作成したサーバーをvagrant destoryを使って削除して、再度vagrant upでサーバーを構築しました。

どの段階で再構築したのか忘れてしまいましたが、いざとなればすべての設定が準備されているので、このあたりが自動化のいいところじゃないかと思います。

使用している環境によってもエラーが出るでないが変わってくるので、自分でいろいろと試して解決するようにがんばりましょう!

それでは明日もGood Python!