インストールとセットアップのためのAnsiblePlaybook Apache Ubuntuで

Ansible は、オープンソースの構成管理およびアプリケーション展開ツールです。 アプリのデプロイを自動化し、ITインフラストラクチャを管理することで、管理オーバーヘッドを削減できます。

使用する ansible Ubuntu20.04にapache2Webサーバーをインストールします。 そのために、YAML構文で構成を作成する必要があります。 Ansibleプレイブック

通常、制御ノードとホストノードがあります。 Ansibleはコントロールノードにインストールされ、プレイブックを実行してホストノードにデプロイします。 このラボでは、単一ノードにインストールして使用します。

Ubuntuにansibleをインストールする

まず、システムを更新します。 次のコマンドは、最新のパッケージをフェッチします。

$ sudo aptアップデート

Ansibleは、Ubuntu20.04のベースリポジトリで利用できます。 ansibleをインストールするには、次のコマンドを実行します。

$ sudo apt install ansible -y

次に、コマンドを使用してansibleバージョンを確認します。

$ ansible –version

Ansibleバージョン

ホスト構成ファイルは/ etc / ansible / hostsファイルに保存されます。 次のコマンドを使用して、ローカルホストサーバーのIPをファイルに追加します。 あなたが持っていることを確認してください sudo ユーザー。 私たちの場合、「ubuntu」は sudo 特権。 ここでは、自分の名前を「myserver」と名付けました。 また、ユーザーubuntuは sudo システム内のユーザー。

$ echo “myserver ansible_host = 127.0.0.1 ansible_user = ubuntu” >> / etc / ansible / host

コマンドを使用して確認するだけです。

$ ansible myserver -m ping

以下のスクリーンショットのようなポン応答が得られるはずです。

Ansible ping pong Ansibleピンポン応答

プレイブックの作成

それでは、「apache.yml」という名前のプレイブックを作成して、最新のapacheWebサーバーをインストールして実行しましょう。

$ vi apache.yml

次のコンテンツをファイルに追加します

---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest

- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'

- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"

- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache

- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp

handlers:
- name: restart-apache
service:
name: apache2
state: restarted

ここ、

  • ホスト:/ etc / ansible / hostsファイルで定義したホスト名です
  • なる:true であるための特権昇格です sudo
  • だれの:変数を定義するため
  • タスク:4つのタスクが定義されています。 Apacheのインストール、インデックスページのコピー、仮想ホストの設定、UFWファイアウォールからのhttpの許可(すでに有効になっている場合)。
  • ハンドラー:他のすべてのタスクが成功した場合にApacheを再起動します。

プレイブックに加えて、他の3つのファイルvars / default.yml、files / apache.conf.j2、files /index.html.j2を定義する必要があります。 それらを1つずつ作成していきましょう。

vars / default.yml

default.ymlファイルには、ドメイン名、構成ファイルの場所、およびhttpポートが含まれています。 ファイルを作成し、以下を追加します。

http_host: “mydomain.local”
http_conf: “my_domain.conf”
http_port: “80”

files / apache.conf.j2

apache構成テンプレートには、仮想ホストの構成が含まれています。 変数は{{}}内で定義され、上記で定義されたvarsファイルから取得されます。 ファイルapache.conf.jsを作成し、次のコンテンツを追加します。

<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

files / index.html.j2

もう1つのテンプレートは、インデックスファイルです。 ファイルを作成し、次のコンテンツを追加します。 要件に応じて変更できます。

<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>

これで、次のコマンドを使用してansible-playbookを実行できます。

$ ansible-playbook apache.yml –ask-become-pass

のパスワードを入力するように求められます sudo ユーザー。 以下に示すように、ステータスはOKである必要があります。

プレイブックの出力プレイブックの出力

これにより、デフォルトのポート80でもApacheが実行され、お気に入りのブラウザでローカルホストを参照していることを確認できます。

インデックスページ

結論

Ansibleはエージェントレスであり、構成の記述が簡単なため、便利なツールです。 からより多くの構成を閲覧できます ansibleの公式ドキュメント。 ansibleでプレイブックを書いているときに問題が発生した場合は、コメントしてください。