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