Ansibleプロビジョニング:よりスマートで簡単なプロビジョニング方法



このAnsibleProvisioningブログは、最も便利なAnsible機能の1つを指摘しています。 LAMPスタックをセットアップし、Ubuntuでwensiteをホストする方法を示します。

アプリケーションの運用ライフサイクルを自動化する最初のステップは、インフラストラクチャのプロビジョニングを自動化することです。プロビジョニングは、実際に使用する前に、構成のセットアップ、メモリ、ディスクスペースの割り当てなどの煩わしいプロセスです。 AnsibleProvisioningがこれをどのようにシンプルかつ高速にするかを見てみましょう。

可変と不変の違い

大規模な展開のほとんどでは、複数のシステムで同じ環境をセットアップする必要があります。それで、どうやってそれをしますか? 100台のシステムで同じコマンドセットを手動で実行しますか?いや..それは古すぎる学校です。これは、人間ではなく、機械が得意なことです。この長くて退屈なプロセスは、1つのAnsibleプレイブックを実行するだけで実行できると言ったらどうでしょうか。これが、このブログで説明するAnsibleProvisioningです。





取り上げるトピックは次のとおりです。

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



Ansibleとは何ですか?

DevOpsは、自動化が非常に優先される文化です。展開とテストプロセスを自動化するためのツールがある場合は、構成管理とプロビジョニングのためのツールを用意してみませんか。スマートにする方法は無数にあり、Ansibleの使用もその1つです。これは、最も広く使用されているツールの1つです。

Ansibleは、初心者でも理解できるYAMLベースのプレイブックを使用しています。エージェントレスアーキテクチャを使用してクライアントと通信します。これには、クライアントのマシンにインストールされるサードパーティツールは含まれず、代わりにSSHベースの接続が使用されます。 Ansibleは自動化ツールなので、何を自動化できるかを見てみましょう。

Ansibleは何を自動化できますか?

開発サイクルのステージに名前を付けると、構成管理、プロビジョニング、オーケストレーション、継続的デリバリー、セキュリティ、さらにはアプリケーションのデプロイなど、Ansibleがそのステージを支援します。 Ansibleは、開発サイクルワークフローを単一のエージェントレス自動化プラットフォームに統合します。



  1. プロビジョニング: アプリケーション/ソフトウェアが動作するのに適した環境を作成する必要があります。 Ansibleは、アプリケーションの存在のために作成された環境を自動化する方法を提供します。
  2. 構成管理: サービスの開始/停止、システム、デバイス、またはアプリケーションの構成の変更など、さまざまな構成タスクを実行します。
  3. アプリケーションの展開: Ansibleを使用してデプロイメントの定義を自動化し、を使用してデプロイメントを管理します Ansibleタワー 。これにより、本番環境から展開までのアプリケーションサイクル全体が効率的で管理しやすくなります。
  4. 継続的デリバリー: 継続的インテグレーション/継続的デリバリーパイプラインの作成と管理は面倒になる可能性があります。そこでAnsibleが介入し、開発者の生活を楽にします。
  5. セキュリティとコンプライアンス: プロジェクトと連携し、常に境界を設定し、会社のセキュリティポリシーと統合します。セキュリティポリシーを展開に自動的に統合すると、ポリシーへの準拠が容易になります。
  6. オーケストレーション: プロジェクト全体は、異なる構成を持つ多くの異なるインスタンスのコレクションです。 Ansibleは、これらのさまざまなインスタンスを全体としてマージして管理します。

Ansibleプロビジョニングの必要性

先に述べたように、アプリケーションの運用ライフサイクルの自動化環境の準備、つまりプロビジョニングを行っています。大規模な展開では、まったく同じ構成の複数のホストが必要です。 1つのホストをプロビジョニングした後、手動で実行した場合、次の10のホストがまったく同じ構成になる可能性はどのくらいありますか?また、同じ繰り返しのタスクを実行するのにどのくらいの時間を費やしますか?これがAnsibleが私たちのサービスに来るところです。 1つのプレイブックを実行するだけで、数百のホストをプロビジョニングできます。魔法?ハハ!いいえ、自動化の進化だけです。

デモ:LAMPスタックを作成してWebページをデプロイする

30のシステムにWebサイトを展開しようとしているとすると、すべてのWebサイトの展開には、ベースOS、Webサーバー、データベース、およびPHPが必要になります。 Ansible Playbookを使用して、これらの前提条件を30のシステムすべてに一度にインストールします。

このAnsibleプロビジョニングのデモでは、Ansibleを使用してウェブサイトホスティング環境をプロビジョニングする方法を紹介します。 LAMP(Linux、Apache、MySQL、およびPHP)スタックをインストールしてから、Webサイトをデプロイします。

このデモでは、Ubuntuバージョン17.04のLinuxVirtualBoxを使用しました。 2つの仮想マシンを使用しました。1つはAnsibleがインストールされているサーバーとして機能し、もう1つはリモートホストとして機能します。サーバーでAnsibleを設定することから始めましょう。

フォルダに保存された単純な静的Webページを作成しました インデックス これには、index.htmlとstyle.cssの2つのファイルがあります。

index.html:

  HTMLとCSSを使用したWebサイト                今すぐ採用        

style.css

* {{ マージン:0 パディング:0 } ヘッダー{ 背景画像:linear-gradient(rgba(0,0,0,0.5)、rgba(0,0,0,0.5))、url( 'puppie.jpg') 高さ:100vh 背景サイズ:カバー 背景-位置:中央 } .nav-menu { フロート:右 list-style:none マージン-トップ:30px } .nav-menu li { 表示:インラインブロック } .nav-menu li a { 色:ターコイズ テキスト装飾:なし パディング:5px 20px font-family: 'Verdana'、 'sans-serif' font-size:20px } .homebtn a { ボーダー:1pxソリッドグレー 背景色:白 } .nav-menu li a:hover { border:1pxソリッドグレー 背景色:白 } .tagline { 位置:絶対 幅:1200px マージン左:0 margin-top:0 } h1 { 色:白 font-size:50px font-family: 'Verdana'、 'sans-serif' text-align:center マージントップ:275px } .adopt { マージン-トップ:30px マージン左:540px } .bttn { ボーダー:1pxソリッドホワイト パディング:10px 30px 色:黄色 font-family: 'Verdana'、 'sans-serif' フォントサイズ:22px テキスト装飾:なし } .adopt a:hover { 背景色:バーリーウッド }

ステップ1: 次のコマンドを実行して、リポジトリを更新し、必要なリポジトリを追加して、Ansibleインストール用にマシンにPPAを構成します。

$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible / ansible

Enterキーを押してPPAの追加を受け入れ、リポジトリを更新した後、最後にAnsibleをインストールします。

$ sudo apt-get update $ sudo apt-get install ansible

ステップ2: サーバーの/ etc / hostsファイルに移動し、ホスト名とホストのIPアドレスを追加します。

etcホスト-Ansibleプロビジョニング-Edureka図1–リモートホストを/ etc / hostsファイルに追加– Ansible Provisioning

ステップ3: AnsibleはSSHを使用してホストと通信するエージェントレスアーキテクチャで動作するため、sshキーを設定します。基本的に、1つのサーバーと1つのホストがあります。サーバーでホストを制御するため、サーバー上に公開sshキーを作成し、ホストのマシンにコピーします。サーバーで次のコマンドを実行します。

$ ssh-keygen

ファイル名の入力を求められますここで私はキーを保存し、生成されたキーにアクセスするためのパスワードを作成するように求めるプロンプトが表示されます。これはオプションです。デフォルトでは、公開鍵は.ssh / id_rsa.pubファイルに保存され、秘密鍵は.ssh / id_rsaに保存されます。

図2– sshキーの作成– Ansible Provisioning

ここで、この生成されたキーがホストに存在する必要があります。キーのホストへのコピーは、手動でホストにコピーするか、ssh-copy-idコマンドを使用するかの2つの方法で実行できます。この場合、ssh-copy-id root @IP_of_hostコマンドを使用してコピーします。

$ ssh-copy-id root@192.168.56.104

注-このコマンドを実行する前に、ホストにSSH接続できることを確認してください。

ステップ4: Ansibleホストを構成します。 / etc / ansible / hostsファイルに移動し、ホスト名を追加します。これは、使用しているホストとサーバーの数によって異なります。あなたはまた以上を持つことができます1台のサーバーここに。

図3–インベントリファイルへのリモートホストの追加– Ansible Provisioning

ステップ5: ホストの準備ができているかどうかを確認します。このコマンドを実行すると、同様の出力が得られます。

$ ansible -m ping all

図4–リモートホストのステータスの確認– Ansible Provisioning

ステップ6: これでAnsibleの準備が整いました。次に、Webサイトをデプロイするための環境を準備しましょう。単一のAnsibleプレイブックを使用して、Apache、MySql、およびPHPをインストールします。それを見てみましょう。

注:初心者の方は、こちらをご覧ください この プレイブックの書き方を説明するブログ。

---#LAMPスタックのセットアップ-hosts:host1タスク:-name:ppaリポジトリの追加become:yes apt_repository:repo = ppa:ondrej / php --name:ランプスタックのインストールbecome:yes apt:pkg:-apache2-mysql-server --php7.0 --php7.0-mysql状態:現在の更新キャッシュ:はい-名前:Apacheサーバーの開始:はいサービス:名前:apache2状態:開始有効:はい-名前:mysqlサービスの開始:はいサービス:名前: mysqlの状態:開始有効:はい-名前:ターゲットディレクトリファイルの作成:パス= / var / www / html状態=ディレクトリモード= 0755-名前:デプロイindex.htmlになりました:はいコピー:src:/ etc / ansible / index / index.html dest:var / www / html / index / index.html

ご覧のとおり、6つのタスクがあり、各タスクは特定の機能を実行します。

  • 最初のタスクは、MySQLとPHPのインストールに必要なリポジトリを追加します。
  • 2番目のタスクは、apache2、MySQL-server、PHP、およびPHP-MySQLをインストールします。
  • 3番目と4番目のタスクは、ApacheおよびMySQLサービスを開始します。
  • 5番目のタスクは、ホストマシンにターゲットディレクトリを作成し、
  • 最後に、6番目のタスクはindex.htmlファイルを実行し、サーバーマシンからファイルを取得して、ホストマシンにコピーします。

次のコマンドを使用して、このプレイブックを実行します。

$ ansible-playbook lamp.yml -K

台詞 なる:はい プレイブックでは、rootとして実行する必要があると記載されているため、コマンドを実行すると、sudoパスワードの入力を求められます。

図5– Ansible Playbookの実行–Ansibleプロビジョニング

これで、ホストマシンにアクセスして、Webサイトがホストされているかどうかを確認できます。

図6–ローカルホストでWebサイトをホストする– Ansible Provisioning

Javaイテレータの使用方法

これは、サーバーと対話するすべてのホスト(この場合は1つのホストしかありません)に展開されるWebページですが、100のリモートホストでも同じことが可能です。

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

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