AnsibleRoles-プレイブックを解きほぐす究極の方法



このAnsibleRolesブログでは、MEANスタックの設定のデモンストレーションを使用して、複雑なプレイブックを読みやすく再利用できるようにするためにロールをどのように使用するかについて説明しています。

Ansibleを使用すると、システムの構成管理を自動化し、必要に応じてクライアントをいくつでも追加できます。これがどれほど複雑になるのか疑問に思ったことはありますか?プレイブックがどれくらい長くて混乱する可能性があるのか​​疑問に思ったことはありますか? Ansibleはどのようにしてそれをそよ風のように見せますか?これはAnsibleRolesの概念を使用しており、それがこのブログで説明する内容です。

取り上げるトピック:





DevOpsをマスターしたい場合は、 ' コースはあなたの頼りになるオプションです。

Ansibleの役割の概要

Ansible Roleは、イベントではなくアイデアを扱う概念です。基本的に、プレイブックを整理するために使用される別のレベルの抽象化です。これらは、プレイブックに自動的にロードできる変数、タスク、テンプレート、ファイル、およびモジュールの独立した再利用可能なコレクションのスケルトンを提供します。プレイブックは役割のコレクションです。すべての役割には特定の機能があります。



これを例を挙げて説明しましょう。プレイブックで5つの異なるシステムで10の異なるタスクを実行したい場合、これに1つのプレイブックを使用しますか?いいえ、1つのプレイブックを使用すると、混乱を招き、失敗しやすくなります。代わりに、各役割が1つのタスクを実行する10の異なる役割を作成できます。次に、あなたがする必要があるのは、それらを呼び出すためにプレイブック内の役割の名前を言及することです。このブログでは、役割の使用方法についてさらに学習します。

Ansibleロールの再利用性

Ansibleの役割は互いに独立しています。 1つの役割の実行は他の役割に依存しないため、再利用できます。要件に応じて、これらの役割を変更およびパーソナライズすることもできます。これにより、必要になるたびにコードのセクション全体を書き直すタスクが減り、作業が簡素化されます。

前の例に戻りましょう。 10個のロールを作成しましたが、そのうち5個を別のプロビジョニングセットに使用する必要があります。プレイブック全体をもう一度書きますか?いいえ、この新しいPlaybookでこれらの5つの役割を呼び出すだけで、それらを再利用できます。必要に応じて変更を加えることもできますが、それでも多くの時間を節約できます。



LAMPスタックを設定するためのプレイブックを作成する必要があるとします。 Linux、Apache、MongoDB、PHPを作成するために、それぞれ4つのロールを作成する必要があります。将来、WordPressだけでなくLAMPスタックをセットアップするための別のプレイブックが必要な場合、LAMPスタックとWordPressの新しい役割を再度作成しますか?番号!古い役割(LAMPスタックに使用)を再利用し、さらにWordPressの新しい役割を作成するだけです。

ロールディレクトリ構造

Ansibleロールを使用して、ファイルが特定のファイル構造にあることを期待します。ロールを使用する上で最も混乱する部分は、ファイル階層を理解することです。 Ansibleは、役割を操作するのに役立つAnsibleGalaxyと呼ばれる機能を提供します。 AnsibleがUbuntu(/ etc / ansible)のどこにあるかはすでにわかっています。 / etc / ansibleの下にrolesというディレクトリを見たことがありますか?そのディレクトリはまさにこの理由で存在します。このディレクトリ内にさまざまな役割を作成します。

ディレクトリは次のようになります。

ツリー-Ansibleの役割-Edureka

を使用して役割を作成できます ansible-銀河 / etc / ansible / roles内のinitコマンド。

$sudoansible-galaxy init

他の役割ディレクトリも作成されていることがわかります。

データサイエンスコースとは

これらのディレクトリは、タスク、ハンドラー、デフォルト、変数、ファイル、テンプレート、メタ、およびREADMEです。mdファイル。

タスク –ロールによって実行されるタスクのメインリストが含まれています。それ含まれていますその特定の役割のmain.ymlファイル。

ハンドラー –このロールまたはこのロール以外の場所で使用できるハンドラーが含まれています。

デフォルト –このロールで使用されるデフォルトの変数が含まれています。

誰の –このディレクトリーは、役割によって使用される予定の他の変数で構成されています。これらの変数はプレイブックで定義できますが、このセクションで定義することをお勧めします。

ファイル –このロールでデプロイできるファイルが含まれています。これには、ロールの構成中にホストに送信する必要のあるファイルが含まれています。

メタ –このロールのメタデータを定義します。基本的に、ロールの依存関係を確立するファイルが含まれています。

すべて 仕事 ディレクトリは、 main.yml その特定の役割の実際のコードが書き込まれるファイル。

MEAN Stackのインストールのデモで、作業または役割を理解しましょう。

デモ:Ansibleロールを使用したMEANスタックのインストール

1つのプレイブックを実行するだけで、Ansibleロールを使用してMEANスタックをインストールする方法を示します。 1)前提条件のインストール、2)MongoDBのインストール、3)NodeJSのインストールの3つの役割があります。私はあなたがすでに Ansibleをインストールし、Ubuntuでサーバークライアント接続を確立しました 。 AnsibleRolesで遊び始めましょう。

ステップ1 – / etc / ansible / rolesディレクトリーに移動し、前提条件、MongoDBおよびNodeJSのロールを作成します。

$ cd / etc / ansible / roles $ sudo ansible-galaxyinitの前提条件$ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

これで、「roles」ディレクトリに3つの役割が表示されます。

ステップ2 –Gitをインストールする前提条件のmain.ymlを記述します。

$ cdの前提条件/タスク/main.yml------名前:インストールgit apt:名前:git状態:現在update_cache:はい

ステップ3 –MongoDBロールのmain.ymlを記述します

$ cd /mongodb/tasks/main.yml --- --name:MongoDB-パブリックキーのインポートapt_key:keyserver:hkp://keyserver.ubuntu.com:80 id:EA312927-name:MongoDB-リポジトリの追加apt_repository:filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' state:present update_cache :はい-名前:MongoDB-MongoDBをインストールしますapt:名前:mongodb-org状態:現在update_cache:はい-名前:mongodシェルを開始します: 'mongod&'

ステップ4 –main.ymlをnodejs役割

$ cd nodejs / tasks / main.yml --- --name:Node.js-Get script get_url:url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh'-名前:Node.js-スクリプトファイルに実行権限を設定します:パス: '{{var_node}} / nodejs.sh'モード: 'u + x'-名前:Node.js-インストールスクリプトシェルを実行します:' {{var_node}} / nodejs.sh'-名前:Node.js-インストールスクリプトファイルを削除します:パス: '{{var_node}} /nodejs.sh'状態:不在-名前:Node.js-Node.jsをインストールしますapt :name = {{item}} state = present update_cache = yes with_items:-build-essential --nodejs --name:Node.js-bowerとgulpをグローバルにインストールするnpm:name = {{item}} state = present global = yes with_items :-バウアー-一口

ステップ5 –メインのプレイブックを書く

$ cd /etc/ansible/mean.yml ----ホスト:ノードremote_user:ansiblebecome:はいbecome_method:sudo vars:#ノードのインストール中に必要な変数var_node:/ tmpロール:-前提条件--mongodb --nodejs

前提条件をインストールするための役割を定義したので、MongoDBとNodeJ、それらをデプロイしましょう。次のコマンドを使用して、プレイブックを実行します。

$sudoansible-playbook /etc/ansible/mean.yml -K

ご覧のとおり、すべてのタスクが実行され、ステータスが変更されています。これは、プレイブックの変更がサーバーとホストに適用されたことを意味します。 MEANスタックの設定はほんの一例です。 Ansible Rolesを使用して、文字通り何でもすべてを設定できます。

これで、AnsibleRolesブログは終わりです。この記事が役に立った場合は、 ' Edurekaによって提供されます。 IT業界をより良くしたすべてのツールを網羅しています。

質問がありますか?投稿してください 折り返しご連絡いたします。