DUICUO

私が特に気に入って使っている 5 つの Ansible モジュール | Linux China

私が子供の頃、祖父は庭に小屋を持っていました。彼はよくそこで何時間もかけて何かを作ったり修理したりしていました。インターネットがまだなかった頃だったので、私は彼が小屋で何かを作る様子をよく見ていました。小屋にはドリルから旋盤、電気部品まで、そして今でも何なのか分からないものまで、たくさんの道​​具がありましたが、祖父は手元にあるもののほんの一部しか使っていませんでした。それでも、祖父のできることには限界がないように見えました。

[[329702]]

私がこの話をする理由は、私のキャリアが比喩的な意味での小屋の中で過ごしてきたように感じているからです。コンピューターもまさにそれです。たくさんのツールが、小さな(仮想?)空間に詰まっています。そして、そのツールの小屋の中にも、さらにツールの小屋が積み重なっています。私のお気に入りはAnsibleです。最新バージョンの2.9には3,681個のモジュールがあります! **3,681個!** 2013年の夏にAnsibleを使い始めたとき、バージョン1.2.1にはたった113個のモジュールしかありませんでした。それでも、当時書いたように、想像できる限りのことはすべて実現できました。

モジュールはAnsibleのバックボーンであり、重いタスクの負荷を軽減する歯車です。モジュールは1つの仕事を完璧にこなすように設計されており、Unix哲学を体現しています。だからこそ、私たちは多くのモジュールをまとめました。オーケストラの指揮者のように、Ansibleには指揮する楽器が数多くあるのです。

長年にわたるAnsibleスクリプトとキャラクターのGitリポジトリを振り返ってみると、使ったモジュールはたった35個しかないことに気づきました。この小さなサブセットは、大規模なインフラの構築に使用してきました。しかし、もっと小さなサブセットで何ができるだろうかと考えました。35個のモジュールを見直していくうちに、たった5個で同じ効果が得られるのではないかと考えました。そこで、順不同で、私のお気に入りのモジュールを5つご紹介します。

5. 承認キー

SSHはAnsibleの中核であり、少なくともWindowsを除くほぼすべての環境では重要です。AnsibleでSSHを効率的に使うための鍵(言葉遊びではありません)は…鍵です!ちなみに、SSH鍵を使えばセキュリティ対策として非常に便利な機能がたくさんあります。sshdのマニュアルページの「authorized_keys」セクションをよく読んでみてください。きめ細かなユーザーアクセス制御が必要な場合、SSH鍵の管理は面倒になることがあります。次の2つのモジュールのどちらを使っても構いませんが、変数を使って簡単に管理できるauthorized_keyモジュールの方が好きです。

4. ファイル

`file` モジュールは、ファイルを特定の場所に配置するという明らかな機能に加え、所有権と権限の設定も可能です。このようなモジュールには多くの利点があると言えるでしょう。セキュリティ上の問題の多くは権限の設定に関連しているため、`file` モジュールと `authorized_key` モジュールは連携して動作します。

3. テンプレート

ファイルの内容を操作する方法は非常に多く、多くの人がlineinfileを使っているのを目にします。私自身も小さなタスクで使用したことがあります。しかし、テンプレートモジュールはファイル全体のコンテキストを維持できるため、はるかに明確です。私はAnsibleのコンテンツを誰でも簡単に理解できる方法で記述することを好みます。私にとってこれは、何が起こっているのかを簡単に理解できることを意味します。テンプレートを使用すると、コンテンツを配置するファイル全体と、変更するすべての変数を確認できます。

2. ウリ

現在のリリースでは、多くのモジュールがAnsibleをオーケストレーションツールとして利用しています。これらのモジュールは、ファイルをどこかに配置するといった特定のタスクを実行するのではなく、他のサービスと通信します。通常、この通信もHTTP経由で行われます。このようなモジュールが数多く存在する以前は、URIモジュールを使ってプログラム的にAPIに直接アクセスできました。これは多くのことを可能にする強力なアクセスツールでした。私のAnsible仮想小屋では、これがなくてはならない存在です。

1. シェル

これは私たちの切り札であり、万能のツールです。他のものを制御する方法に困っているなら、そうではなく「shell」だと言いましょう。こう言うとAnsibleはBashスクリプトになってしまうと言う人もいるかもしれませんが、スクリプトやロールで「name」パラメータを使ってすべてのステップを記録できるため、メリットがあると私は考えています。私にとってこれは大きなメリットです。私がまだコンサルタントをしていた頃、あるデータベース管理者(DBA)のAnsibleへの移行を支援しました。このDBAは変化を嫌い、ワークフローの変更に消極的でした。そこで、Ansibleへの移行を簡素化するために、Ansibleのshellモジュールを使って既存のデータベース管理スクリプトを呼び出し、タスクに詳細な「name」宣言を付加しました。

これら5つのモジュールを使えば、多くのことを実現できます。確かに、特定のタスクを実行するために設計されたモジュールは、あなたの作業を楽にしてくれます。しかし、シンプルなエンジニアリング設計を活用すれば、半分の労力でほぼ2倍の成果を達成できるのです。Ansible開発者のBrian Coca氏はこの分野の第一人者であり、彼のヒントやコツに関する講義は、いつでも見る価値があります。