GNU/Linux >> Linux の 問題 >  >> Cent OS

IT自動化のためのAnsibleプレイブックを作成する方法

PlaybookはAnsibleのに他なりません 構成管理スクリプト。管理対象ノードの展開と構成を管理するために使用できます。 Playbookには、管理対象ノードに適用させる一連のポリシー、または一般的なITプロセスの一連の手順が含まれています。

プレイブックは、単純なテキスト言語で作成および開発されています。プレイブックで使用する構文は、前のチュートリアルでテストした通常のコマンドとは異なります。

前のチュートリアルでは、 CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04&Debian9にAnsibleをインストールする方法を見ました。 。

AnsiblePlaybookを作成する

このデモでは、 web.ymlというプレイブックを作成します ApacheWebサーバーを実行するようにホストを構成するには 。各プレイブックは、1つ以上のプレイで構成されています リストにあります。

プレイブックのプレイごとに、インフラストラクチャ内のどのマシンをターゲットにし、どのリモートユーザーがタスクを完了するかを選択できます。

vi web.yml

CentOS / RHEL Playbook:

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Ubuntu / Debianプレイブック:

---
- hosts: 192.168.1.30
  remote_user: raj
  become: yes
  become_method: sudo

  tasks:
  - name: Install Apache
    apt:
      name: apache2
      update_cache: yes
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=www-data group=www-data mode=0644

デモHTMLファイルを作成します( /etc/ansible/index.html )。このHTMLファイルは、ApacheサーバーのデフォルトのDocumentRootに配置されます。 管理対象ノード上。

vi /etc/ansible/index.html

HTML:

<html>
  <head>
    <title>Apache is installed by Ansible</title>
  </head>
  <body>
  <h1>Apache is installed by Ansible</h1>
  <p>Now, Apache is managed through Ansible</p>
  </body>
</html>

AnsiblePlaybookの分解

次に、プレイブック web.ymlの各セクションについて説明します。 これらが何を意味するのかを理解するためのファイル。

ファイルは

で始まります
---

すべてのYAMLファイルは(3つのダッシュ) ---で始まる必要があります これは、ドキュメントの開始を示します。 YAMLはスペースに非常に敏感であり、それを使用してさまざまな情報をグループ化します。スペースを正しく読み取るには、ファイル全体でスペースが一貫している必要があります。同じレベルのインデントのアイテムは兄弟要素と見なされます。

ホストとユーザー

---
- hosts: 192.168.1.20
  remote_user: raj

ホスト行は、コロンで区切られた1つ以上のグループ(例:デモサーバー)またはホストパターン(例:192.168.1.20)のリストです。ホストと一緒に、リモートユーザーアカウントについて言及できます。

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

システムにパッケージをインストールするには、rootユーザーになる必要があります。これを行うには、 suなどの特権昇格方法を使用できます。 またはsudo 。この種の特権昇格方法を使用する場合は常に、--ask-become-passを使用してansibleプレイブックを実行する必要があります。 引数。

タスク

これで、一連のタスクができました。

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

各プレイにはタスクのリストが含まれており、次のタスクに進む前に、ホストパターンに一致するすべてのマシンに対して一度に1つずつ順番に実行されます。

プレイブックを実行しているときは、上から下に実行され、タスクが失敗したホストは、プレイブック全体のローテーションから除外されます。

すべてのタスクには名前が必要です プレイブックの実行中に現在のアクティビティを表示するために使用されます。この出力は人間向けであるため、各タスクステップについて適度に適切な説明があると便利です。

ここでは、最新バージョンのApacheをインストールし、デモHTML(/etc/ansible/index.html)を管理対象ノードの/ var / www / htmlディレクトリにコピーして、システムの起動中にApacheサービスを自動的に開始できるようにします。

通知

これらの通知 アクションは、プレイブックのタスクの各ブロックの最後にトリガーされ、複数の異なるタスクによって通知された場合でも1回だけトリガーされます。

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

通知 itemには、 start apacheというアイテムが含まれています 、 setupfirewalld およびfirewalldをリロード 。これらは、タスク内から呼び出されたときに特定の機能を実行するハンドラーへの参照です。 startapacheとfirewalldハンドラーを定義します。

ハンドラー

ハンドラーはタスクのリストであり、通常のタスクと実際には何の違いもありません。ただし、クライアントシステムで変更が発生したことがタスクから通知された場合にのみ、実行されます。

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted
>

この例では、パッケージのインストール後にApacheサービスを開始し、ファイアウォールを構成するハンドラーがあります。

このアクションは、通知機能がハンドラーにシステムの変更について通知したために発生します。つまり、Apacheパッケージをインストールし、そのデモファイルとともにDocumentRootにコピーする必要がありました。

AnsiblePlaybookを実行する

プレイブックの準備ができたら、以下のコマンドを使用して実行できます。

ansible-playbook web.yml -f 1 --ask-become-pass

OR

ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass

ansible-playbook :Ansibleプレイブックを実行するコマンド。

web.yml: YAMLファイル(Ansible Playbookファイル–このチュートリアルの最初に作成したもの)

-f 1 :並列処理レベル1を使用したプレイブック

–ask-become-pass :パッケージをインストールするにはrootユーザーになる必要があるため。

-u raj :管理対象ノードのユーザー

出力:

サーバーのグループ(デモサーバーなど)のプレイブックを作成し、特定のホストでプレイブックを実行するとします。以下のコマンドは、 192.168.1.40でのみプレイブックを実行します 。

ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass

AnsiblePlaybookアクションの確認

プレイブックを実行した後、ブラウザを開き、ansibleインベントリに記載されているリモートホストに移動します。

私の場合、URLは

http://192.168.1.20

上記のページが表示されますApacheはAnsibleによってインストールされます 、このページは、ApacheがAnsibleによってインストールされたことを確認します。

apacheのインストールを自動化するための簡単なプレイブックを作成する方法を学びました。プレイブックの作成の詳細については、こちらをご覧ください。 。

以上です。


Cent OS
  1. 自動化のためにAnsibleとanacronを使用する方法

  2. AnsiblePlaybookの作成方法

  3. Linuxシステム管理者向けのAnsibleの謎を解き明かす

  1. AnsiblePlaybookの6つのトラブルシューティングスキル

  2. 追加の変数をAnsibleプレイブックに渡す方法

  3. Ansibleを使用してLinuxユーザーを作成する方法

  1. Ansibleでファイルを作成する方法

  2. テスト用の MySQL Docker コンテナを作成する方法

  3. リモートホストの OS バージョンを取得するために Ansible プレイブックを作成する方法