Ansible Galaxyは、すでに作成されているAnsibleの役割を見つけ、役割を作成して共有し、Ansibleコンテンツの銀河に飛び込む最も簡単な方法です。
====================プライムタイムの発表! ====================
FOSDEM PGDay 2016は、ヨーロッパ最大のオープンソースイベントであるFOSDEMの前に1月29日に開催され、PostgreSQLDevroomはブリュッセルのFOSDEMで1月31日に開催されます。
構成管理、サーバーオーケストレーション、自動デプロイに興味があり(そのため、このブログ投稿を読んでいますよね?)、PostgreSQLでの作業が好きな場合(確かに)AWSで(オプションで)、1月29日12:30-13:20に開催される私の講演「ManagingPostgreSQLwithAnsible」に参加することをお勧めします。
両方のイベントのすばらしいスケジュールを確認してください!今週ブリュッセルでお会いしましょう!
====================プライムタイムの発表! ====================
Hello Ansible Galaxy!
Ansibleには強力なコミュニティがあり、さらに強力になっています。 Ansibleに貢献する開発者は喜んで貢献し、Ansibleを自分のシステムに使用するユーザーは喜んでそれを使用します。
彼らが彼らのウェブページで言及したAnsibleコンテンツは、基本的にAnsibleの役割です。このブログ投稿で役割を続けて、Ansibleの役割の意味と、役割、プレイブック、タスクの違いを理解してみましょう。
Ansibleの役割とは何ですか?
絶対にロールを使用する必要があります。役割は素晴らしいです。役割を使用します。役割!十分に言いましたか?役割は素晴らしいです。
役割について話す前に、Ansibleの用語でのタスクとプレイブックの定義を覚えておきましょう。
タスク
タスクは、特定のパラメータセットを使用してモジュールを呼び出す責任があります。
Ansibleモジュールについて学ぶための以前のブログ投稿を読んだり、AnsiblePostgresモジュールを例で確認したりできます。
各Ansibleタスクには、名前、呼び出されるモジュール、モジュールパラメーター、およびオプションで事前/事後条件が含まれています。これにより、Ansibleモジュールを呼び出して、連続するタスクに情報を渡すことができます。
以下のタスクは、4つのパラメーターを指定してファイルモジュールを呼び出します。
- name: Ensure the data folder has right ownership
file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres
これにより、次の3つの条件が満たされます。
- / var / lib/postgresqlはディレクトリとして存在します
- / var / lib/postgresqlの所有者は「postgres」です
- / var / lib/postgresqlのグループは「postgres」です
存在しない場合、Ansibleはディレクトリを作成し、所有者とグループを割り当てます。所有者だけが異なる場合、Ansibleはそれを「postgres」にします。
プレイブック
プレイブックには演劇が含まれ、演劇にはタスクが含まれます。タスクはモジュールを呼び出し、(オプションで) トリガーハンドラー(1回実行、最後に実行) 。
これで、以下の非常に簡単なプレイブックの例を確認できます。
- name: Ensure all virtual machines are ready
hosts: 127.0.0.1
connection: local
vars_files: # load default variables from YAML files below
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/provision.yml' # load infrastructure setup tasks
- name: Ensure all required PostgreSQL dependencies ready
hosts: postgresql-all # manage all PostgreSQL servers
sudo: yes
sudo_user: root
vars_files:
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks
このプレイブックには2つのプレイがあります:
最初のプレイにより、すべての仮想マシンの準備が整い、ローカルホストで動作することが保証されます。 postgresql.ymlおよびaws.ymlという名前のYAMLファイルからデフォルトの変数をロードします。これらのファイルは、PostgreSQLとAWS(この例では)のロールとプレイブックの構成ファイルと考えることができます。どちらのプレイもこれらのファイルをデフォルトの変数として使用していることがわかります。このプレイでは、インフラストラクチャのセットアップタスクを含むprovision.ymlタスクを呼び出します。
2回目の再生により、必要なすべてのPostgreSQL依存関係の準備が整い、インベントリファイルで定義されているpostgresサーバーで動作します。このプレイは、PostgreSQLセットアップタスクを含むpostgresql.ymlタスクを呼び出します。
完全なプレイブックを見たい場合は、私のリポジトリをチェックして、それを改善するために貢献してください。
Playbookの概念をよりよく理解するために、Ansibledocsで提案されているPlaybookの例を見ることができます。
役割の話に戻りましょう。 Ansibleで;
- プレイブック タスクを整理する
- 役割 プレイブックを整理する
管理する独立したリソースがたくさんあると想像してください(たとえば、Webサーバー、PostgreSQLサーバー、ロギング、モニタリング、AWS)。すべてを1つのプレイブックに入れると、解決策が維持できなくなる可能性があります。
このような複雑さを軽減するために、役割は次のことに役立ちます。
タスクをはるかに小さなプレイブックに分割する
これにより、独立してリソースに集中できます。これにより、保守とデバッグが簡単になります。また、構造を理解するのがはるかに簡単になります。
構成、ファイル、テンプレート、タスクの再利用
このようにして、何度も書き直すことなく、これらのコンポーネントをプレイブック間で簡単に共有できます。
プレイブックの依存関係の処理
役割を実行すると、その役割のすべての前提条件が満たされていることを確認できます。
ここで、依存関係グラフと対応するロールディレクトリ構造を確認できます。
AnsibleGalaxyでのPostgreSQLの役割
私がこのブログ投稿を書いている間、 postgresqlの出力として変わる146の役割がありました およびpostgres フィルタ検索。
私は個人的に、これらの役割のいくつかをチェックし、それらが十分に優れていて、ニーズを満たしている場合は、アーキテクチャでそれらを使用することをお勧めします。そうでない場合は、Ansible Galaxyにサインアップして、独自の役割を作成してください。
ハッピーハッキング!
Ansibleの詳細については:
- よく書かれたドキュメントを確認してください。
- 非常に役立つチュートリアルであるAnsibleクイックスタートビデオをご覧ください。
- ウェビナーのスケジュールに従って、リストにいくつかのクールな今後のウェビナーがあります。