自分でAnsibleモジュールを作る

Vince Sesto

Follow

Mar 20, 2019 – 4 min read

Customising Ansible For Your Needs Is So Easy

(英語のみ

Ansible モジュールの数は日々増え続け、アプリケーションの使用が続くと追加サポートが追加されます。 では、なぜ独自の Ansible モジュールを作成する必要があるのでしょうか。 理由はいくつかありますが、最も妥当な理由は、モジュールがどのように動作するかを理解できるようになることだと思います。 この新しいスキルはあまり出てこないかもしれませんが、既存の Ansible モジュールのエラーや問題をトラブルシューティングする必要がある可能性が高いので、すべてがどのように動作するかを知ることは貴重なスキルになりえます。 Ansible を使用してこれらのアプリケーションを展開し、それらを設定するためのテンプレートを提供する他のオプションもありますが、これらのアプリケーションのために独自のモジュールを作成する方が簡単かもしれません。 いずれにせよ、次の文書は、あなたが始めるための詳細を提供し、うまくいけば、さらに拡張できるようにします。

Ansible についてもっと学ぶには、当社の最新の書籍へのリンクをたどってみてください。 Ansible Answers

これはかなり基本的な例ですが、Python の知識が少しあれば、Ansible のスキルと組み合わせて、独自の Ansible モジュールの作成を開始できることがおわかりいただけると思います…どちらかの知識が少し足りなくても、一緒にやりながら説明していきますのでご安心ください。

ここでは、基本的な「Hello World」モジュールを取り上げ、これがいかに簡単であるかを説明します。 この投稿では、Ansible のインストールや基本的なことは説明しませんので、詳細については、以前の投稿を参照してください。

mkdir library

2.library ディレクトリの中に、新しいモジュールファイル名 hello_module.py を作成します。 お気に入りのテキストエディタで新しいファイルを開き、次のコードを追加します(左の数字は参考のためで、ファイルに追加する必要はありません):

ここは特に複雑ではありませんが、Pythonに慣れていない場合は、それぞれの行を分解して説明します。 1行目は、ローカルにインストールされたバージョンのPythonを使用する必要があることを指定しています。 3行目では、Ansibleで実行する特定のモジュールをインポートしています。 5行目から8行目までは、モジュールの一部として実行される関数です。具体的には、6行目でAnsibleModuleクラスを提供して、入力されるパラメータを処理できるようにし、7行目で「hello」、そして「world!」と応答して、プログラムを終了できるようにしています。 そして10行目と11行目では、モジュールが呼び出されたときに関数を実行します。

4.これで、モジュールを実行するためのプレイブックを作成することができます。 作業ディレクトリに newmodule_test.yml:

touch newmodule_test.yml

5.If you never worked with Ansible before, the above code is able to assign the host in line 2 to be the one of you working on.上記のコードは、作業中のホストを 2 行目で指定することができます。 3~6行目で新しいモジュールを実行し、4行目でタスクの名前、5行目でモジュールの呼び出し、6行目で結果をresultという変数に登録しています。

6.We can now run the new playbook with the following command:

ansible-playbook newmodule_test.yml

Which gets you the following output:

If all went well, you see the above mentioned output giving you a nice “hello”.If you had a fine: 「

Ok, we’ve been pretty quick and dirty here and that was the aim of the post, but all you need is to extend your knowledge of Python and you can also be extended what your modules can do.

Found this post useful? 親切に下の拍手ボタンをタップしてください! 🙂

作者について

コメントする