Ansibleは、構成管理、アプリケーションのデプロイ、インフラストラクチャのオーケストレーションを含むオープンソースの自動化プラットフォームです。これは、DevOpsエンジニアとシステム管理者に人気のある自動化ツールです。システム管理者は、長時間の作業や多くのシステムで繰り返しタスクを実行することにより、燃え尽き症候群に直面することがよくありますが、Ansibleを使用すると、これらのタスクを簡単に完了できます。ユーザーの作成、サービス管理、ソフトウェアのインストールなどのタスクは、Ansibleを使用して実行できます。 Ansibleは宣言型ではなくプロシージャベースです。つまり、必要なすべてのステップをYAMLファイルに書き込んでから、すべてのターゲットシステムで順番に実行します。
[次もお読みください:Ansibleプレイブックを使用したワークステーションとサーバーの更新の管理]
ノード
Ansibleアーキテクチャでは、コントローラーノードと管理対象ノードがあります。 Ansibleはコントローラーノードにのみインストールされます。これはエージェントレスツールであり、管理対象ノードにインストールする必要はありません。コントローラと管理対象ノードは、SSHプロトコルを使用して接続されます。すべてのタスクは、YAML言語を使用して「プレイブック」に書き込まれます。各プレイブックには、複数のプレイを含めることができます。 タスクが含まれています 、およびタスクにはモジュールが含まれます 。モジュールは、システムの動作のいくつかの側面を管理する再利用可能なスタンドアロンスクリプトです。 Ansibleモジュールは、タスクプラグインまたはライブラリプラグインとも呼ばれます。
ロール
複雑なタスクのプレイブックは長くなる可能性があるため、読んだり理解したりするのが難しくなります。この問題の解決策は、Ansibleのロールです。 。ロールを使用すると、長いプレイブックを複数のファイルに分割して、各プレイブックを読みやすく理解しやすくすることができます。ロールは、テンプレート、ファイル、変数、モジュール、およびタスクのコレクションです。ロールの背後にある主な目的は、Ansibleコードを再利用することです。 DevOpsのエンジニアとシステム管理者は、常にコードの再利用を試みる必要があります。 Ansibleロールには、複数のプレイブックを含めることができます。役割が特定のケースに適している場合は、誰でも作成したコードを簡単に再利用できます。たとえば、Apacheホスティング用のプレイブックを作成し、index.html
のコンテンツを変更してこのコードを再利用できます。 他のアプリケーションやサービスのオプションを変更するため。
以下は、Ansibleの役割構造の概要です。次のような多くのサブディレクトリで構成されています:
|-- README.md
|-- defaults
|-------main.yml
|-- files
|-- handlers
|-------main.yml
|-- meta
|-------main.yml
|-- tasks
|-------main.yml
|-- templates
|-- tests
|-------inventory
|-- vars
|-------main.yml
最初は、ansible-galaxy
を使用してすべてのファイルが空で作成されます 指図。そのため、タスクに応じて、これらのディレクトリを使用できます。たとえば、vars
ディレクトリは変数を格納します。 tasks
で ディレクトリには、main.yml
があります 、メインのプレイブックです。 templates
ディレクトリはJinjaテンプレートを保存するためのものです。 handlers
ディレクトリはハンドラーを格納するためのものです。
Ansibleの役割の利点:
- コンテンツの再利用を可能にする
- 大規模なプロジェクトを管理しやすくする
Ansibleロールは、サブディレクトリを含む構造化ディレクトリです。
しかし、Red Hat Enterprise Linuxには、オペレーティングシステムのタスクを管理するためのAnsibleシステムロールもいくつか用意されていることをご存知ですか?
システムの役割
rhel-system-roles
パッケージはExtras(EPEL)チャネルで入手できます。 rhel-system-roles
パッケージは、RHELホストを構成するために使用されます。デフォルトのrhel-system-roles
は7つあります 利用可能:
- rhel-system-roles.kdump-このロールは、kdumpクラッシュリカバリサービスを設定します。 KdumpはLinuxカーネルの機能であり、カーネルクラッシュの原因を分析するときに役立ちます。
- rhel-system-roles.network-このロールはネットワークインターフェース専用です。これは、Linuxシステムでネットワークインターフェースを構成するのに役立ちます。
- rhel-system-roles.selinux-このロールはSELinuxを管理します。これは、SELinuxモード、ファイル、ポートコンテキストなどを構成するのに役立ちます。
- rhel-system-roles.timesync-このロールは、LinuxシステムでNTPまたはPTPを構成するために使用されます。
- rhel-system-roles.postfix-このロールは、Postfixメール転送エージェントの管理専用です。
- rhel-system-roles.firewall-名前が示すように、この役割はすべて、ホストシステムのファイアウォール構成を管理することです。
- rhel-system-roles.tuned-Tunedは、接続されたデバイスを監視するためのLinuxのシステムチューニングサービスです。したがって、この役割は、システムパフォーマンスのために調整されたサービスを構成することです。
rhel-system-roles
パッケージは、オープンソースのLinuxシステムロールから派生しています。このLinux-system-roleは、AnsibleGalaxyで利用できます。 rhel-system-roles
はRedHatでサポートされているため、これはrhel-system-roles
のように考えることができます。 Linuxシステムの下流にあります-役割。 rhel-system-roles
をインストールするには お使いのマシンでは、以下を使用してください:
$ sudo yum -y install rhel-system-roles
or
$ sudo dnf -y install rhel-system-roles
これらのロールは、/usr/share/ansible/roles/
にあります。 ディレクトリ。
これはデフォルトのパスであるため、プレイブックを使用してこれらの役割を参照する場合は常に、絶対パスを明示的に含める必要はありません。 Ansibleロールの使用についてはドキュメントを参照することもできます。ドキュメントのパスは/usr/share/doc/rhel-system-roles
です。
各ロールのドキュメントディレクトリには、そのロールに関する詳細情報があります。たとえば、README.mdファイルはその役割の例などです。ドキュメントは一目瞭然です。
以下は役割の例です。
例
ローカルホストマシンまたは任意のホストマシンのSELinuxモードを変更する場合は、システムロールを使用します。このタスクには、rhel-system-roles.selinux
を使用します
このタスクの場合、ansible-playbookは次のようになります:
---
- name: a playbook for SELinux mode
hosts: localhost
roles:
- rhel-system-roles.selinux
vars:
- selinux_state: disabled
プレイブックを実行した後、SELinuxモードが変更されたかどうかを確認できます。
[システム自動化についてもっと知りたいですか? RedHatの無料の本であるTheAutomatedEnterpriseを始めましょう。 ]
まとめ
このAnsibleの役割の簡単な紹介は、プレイブックでAnsibleの役割を使い始めるのに十分なはずです。 Ansibleは、これらの反復的なタスクを合理化および簡素化し、システム管理者の作業を楽にすることを目的としていることを忘れないでください。